GPU 高性能编程 CUDA :原子性

NVIDIA GPU 的计算功能集:

NVIDIA 将 GPU 支持的各种功能统称为计算功能集

nvcc -arch=sm_11
//告诉编译器需要1.1版本或者更高
nvcc -arch=sm_12
//告诉编译器需要1.2版本或者更高

原子操作简介:

在执行过程中不能分解为更小的部分,将满足这种条件限制的操作称为原子操作,当有数千个线程在内存访问上发生竞争时,这些操作可以保证在内存上实现安全的操作

对于 读取-修改-写入 三个操作,我们需要通过某种方式一次性的执行完,并且在执行过程中不会被其他线程中断,这些操作就是原子操作

计算直方图:

#define SIZE (100*1024*1024)
int main(void){
    unsigned char *buffer = (unsigned char*)big_random_block(SIZE);
    unsigned int histo[256];
    for(int i=0;i<256;i++)
        histo[i]=0;
    for(itn i=0;i<SIZE;i++)
        histo[buffer[i]]++;

在 gpu 上计算时,可以由不同的线程来读取不同的部分输入数据,但多个线程可能同时对输出直方图的同一个元素进行递增,这种情况下就需要使用原子操作


                
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值