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 java 操作 elasticsearch 8.1 实现 索引的重建
  • ¥15 数据可视化Python
  • ¥15 要给毕业设计添加扫码登录的功能!!有偿
  • ¥15 kafka 分区副本增加会导致消息丢失或者不可用吗?
  • ¥15 微信公众号自制会员卡没有收款渠道啊
  • ¥15 stable diffusion
  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘