在.cpp文件里如果调用内核函数
小弟刚开始接触cuda,使用vs2005开发,现遇到一问题求助各位大侠。
我写了一个很简单的内核程序,如下(放在a.cu文件里):
__global__ static void CUDATEST(int* first, int* second)
{
int index = threadIdx.x;
second[index] = first[index] + 1;
}
调用函数如下(放在b.cu文件里):
void ComputeCuda( int* srcFirst, int*srcSecond,int size)
{
int* d_first;
int* d_second;
CUDA_SAFE_CALL( cudaMalloc((void**) &d_first, sizeof(int) * size));
CUDA_SAFE_CALL( cudaMalloc((void**) &d_second, sizeof(int) * size));
CUDA_SAFE_CALL( cudaMemcpy(d_first, srcFirst, sizeof(int) * size, cudaMemcpyHostToDevice));
//CUDA_SAFE_CALL( cudaMemcpy(d_second, srcSecond, sizeof(int) * size, cudaMemcpyHostToDevice));
HelloCUDA<<<1, size,0>>>(d_first, d_second);
CUDA_SAFE_CALL( cudaThreadSynchronize() );
CUDA_SAFE_CALL( cudaMemcpy(srcSecond, d_second, sizeof(int) * size, cudaMemcpyDeviceToHost));
}
如果我吧main函数也写在.cu文件里,调用ComputeCuda函数,运行没问题,结果正确。
如果我吧main函数也写在.cpp文件里,调用ComputeCuda函数,在ComputeCuda 前加上extern "C",编译和运行都没问题,但是结果是错的。
请问如果在cpp文件里调用cu函数,如果有例子的话最好写给我参考参考。
我搞这个问题一天了,都快吐血了,小弟不胜感激。