关于cuda指针传递问题

Zach_ZhouY 2012-06-28 09:50:56
double* d_PixelsSum; //设备
double* h_PixelsSum; //主机
cudaMalloc((void **)&d_PixelsSum,sizeof(double)); //开辟显存
cudaMemset(d_PixelsSum, 0, sizeof(double));

h_PixelsSum = (double*)malloc(sizeof(double)); //开辟内存

//内核函数 用于计算像素值总和
__global__ static void GpuImageDiff8bit(unsigned char* pSrcData8bit, unsigned char* pSrcDataTemp8bit,double* dPixelsSum){
const unsigned long offset = (blockIdx.x * THREAD_N + threadIdx.x);
//dPixelsSum[0] += fabs((double)(pSrcData8bit[offset] - pSrcDataTemp8bit[offset]));
dPixelsSum[0] = 1000000; //或者*dPixelsSum = 1000000都不行
}

//拷贝到主机
cudaMemcpy(h_PixelsSum,d_PixelsSum,sizeof(double),cudaMemcpyDeviceToHost);

double dTemp = *h_PixelsSum; //不是1000000

问题: 为什么拷贝出来的数据都不是100000?是哪里写错了吗 还是初始化不对?

...全文
158 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
cc19851 2012-06-29
  • 打赏
  • 举报
回复
把调用内核的代码贴出来看看

579

社区成员

发帖
与我相关
我的任务
社区描述
CUDA™是一种由NVIDIA推出的通用并行计算架构,该架构使GPU能够解决复杂的计算问题。 它包含了CUDA指令集架构(ISA)以及GPU内部的并行计算引擎。
社区管理员
  • CUDA编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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