lryanch 2016-02-13 12:48 采纳率: 0%
浏览 3877

关于CUDA共享内存的使用

共享内存是定义在kernel函数里面还是外面?

我下面有一个类似图像直方图统计功能的内核函数,每个线程对应一个像素点。

如果不使用共享内存是这样的:

atomicAdd(&gpu_EO_0_stats_pix_count[catagory_row_id*LCU_total + LCU_id_ab], 1);
atomicAdd(&gpu_EO_0_stats_E[catagory_row_id*LCU_total + LCU_id_ab], e);

现在我希望使用共享内存,对共享内存原子写,在将最后结果汇聚到全局内存:

__shared__ stats_count shared_count[CATA_NUM];
__shared__ stats_E shared_E[CATA_NUM];

__syncthreads();

atomicAdd(&shared_count[catagory_row_id], 1);
atomicAdd(&shared_E[catagory_row_id], e);

__syncthreads();

            if (threadIdx.x == 0)//每个线程块的第一个线程
            {
                atomicAdd(&gpu_EO_0_stats_pix_count[catagory_row_id*LCU_total + LCU_id_ab], shared_count[catagory_row_id]);
                atomicAdd(&gpu_EO_0_stats_E[catagory_row_id*LCU_total + LCU_id_ab], shared_E[catagory_row_id]);
            }

但这样会出错,error code 77。

我想请问下出错的原因是什么?共享内存到底应该怎么定义和使用?

  • 写回答

1条回答 默认 最新

  • devmiao 2016-02-13 14:18
    关注
    评论

报告相同问题?

悬赏问题

  • ¥15 (希望可以解决问题)ma和mb文件无法正常打开,打开后是空白,但是有正常内存占用,但可以在打开Maya应用程序后打开场景ma和mb格式。
  • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝
  • ¥20 腾讯企业邮箱邮件可以恢复么
  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?
  • ¥15 错误 LNK2001 无法解析的外部符号
  • ¥50 安装pyaudiokits失败
  • ¥15 计组这些题应该咋做呀
  • ¥60 更换迈创SOL6M4AE卡的时候,驱动要重新装才能使用,怎么解决?
  • ¥15 让node服务器有自动加载文件的功能
  • ¥15 jmeter脚本回放有的是对的有的是错的