cuda - CUDA 多线程使用一个指针
问题描述
好吧,例如我有一些数组Y
,我想Y[0]
在多个线程中递增。如果我只做功能Y[0]++
,那么将是1。那么,如何解决这个问题?__global__
Y[0]
解决方案
原子操作依赖于实现。如果编译时没有警告,它可能会工作,但应该进行测试:-),或者至少检查汇编程序。
__global__ void mykernel(int *value){
int my_old_val = atomicAdd(value, 1);
}
请参阅此处的指南
推荐阅读
- django - django ManyToManyField 唯一
- haskell - 如何在 Haskell 中实现这个功能?
- java - Firestore 减少读取
- javascript - 循环对象并设置值的递归函数,使用嵌套属性数组连接对象
- reactjs - 如何在锚标记内输出项目值
- linux-kernel - Buildroot 构建系统错误
- android - 为子 Compose 禁用嵌套滚动
- oop - 如何设计一个复杂的图形用户界面,同时使用构建器设计模式和抽象设计模式?
- python - Django 未识别 URL 模式
- bash - 如何在不发送变量值的情况下从另一个脚本在脚本中写入变量?