在.cpp文件里如果调用内核函数

jackey0517 2011-05-18 01:15:21
小弟刚开始接触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函数,如果有例子的话最好写给我参考参考。
我搞这个问题一天了,都快吐血了,小弟不胜感激。
...全文
279 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
cai_niao_yi_zhi 2012-12-29
  • 打赏
  • 举报
回复
把方法发出来啊~
jackey0517 2012-12-13
  • 打赏
  • 举报
回复
1楼解决的,你们问他怎么解决的
guoyaning 2012-08-19
  • 打赏
  • 举报
回复
这个楼主太让我无语了!
啊石头 2012-08-14
  • 打赏
  • 举报
回复
楼主说下这么解决的嘛
  • 打赏
  • 举报
回复
如何解决的?
guotao654 2011-05-19
  • 打赏
  • 举报
回复
解决了

231

社区成员

发帖
与我相关
我的任务
社区描述
CUDA on Windows XP
社区管理员
  • CUDA on Windows XP社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧