问题描述:假设在Ubuntu的一个用户目录下有2个文件,main.c, VectorAdd.cu,其中 VectorAdd.cu有vectorAdd函数,main.c提供程序的入口main函数。现在为了在main.c中实现两个向量相加的操作,就需要调用 VectorAdd.cu中的vectorAdd函数
首先列出两个文件中的内容
//VectorAdd.cu
#include <cutil.h>
extern "C" void VectAdd(int *a, int *b, int *c, int length);
__global__ void Add(int *d_a, int *d_b, int *d_c, int length)
{
int id = threadIdx.x;
if(id < length)
d_c[id] = d_a[id] + d_b[id];
}
void VectAdd(int *a, int *b, int *c, int length)
{
unsigned int size = sizeof(int) * length;
int *d_a;
cudaMalloc((void**)&d_a,size);
int *d_b;
cudaMalloc((void**)&d_b,size);
int *d_c;
cudaMalloc((void**)&d_c,size);
cudaMemcpy(d_a, a, size, cudaMemcpyHostToDevice);
cudaMemcpy(d_b, b, size, cudaMemcpyHostToDevice);
Add<<<1, length>>>(d_a, d_b, d_c, length);
cudaMemcpy(c, d_c, size, cudaMemcpyDeviceToHost);
cudaFree(d_a);
cu