CUDA多线程使用一个指针

CUDA多线程使用一个指针,cuda,Cuda,例如,我有一些数组Y,我想在多个线程中增加Y[0]。 如果我只在\uuu global\uuu函数中设置Y[0]++,则Y[0]将为1。 那么,如何解决这个问题呢?原子操作依赖于实现。如果编译时没有警告,那么它可能会工作,但应该测试:-),或者至少检查汇编程序 \uuuuu全局\uuuuu无效mykernel(int*值){ int my_old_val=atomicAdd(值1); } 请参阅指南原子操作取决于实现。如果编译时没有警告,那么它可能会工作,但应该测试:-),或者至少检查汇编程序

例如,我有一些数组
Y
,我想在多个线程中增加
Y[0]
。 如果我只在
\uuu global\uuu
函数中设置
Y[0]++
,则
Y[0]
将为1。
那么,如何解决这个问题呢?

原子操作依赖于实现。如果编译时没有警告,那么它可能会工作,但应该测试:-),或者至少检查汇编程序

\uuuuu全局\uuuuu无效mykernel(int*值){
int my_old_val=atomicAdd(值1);
}

请参阅指南

原子操作取决于实现。如果编译时没有警告,那么它可能会工作,但应该测试:-),或者至少检查汇编程序

\uuuuu全局\uuuuu无效mykernel(int*值){
int my_old_val=atomicAdd(值1);
}

参见指南

一种方法是使用。另一种方法是一种新方法。这是一个相当基本的概念,因此在
cuda
标签上多次询问这个问题的变体。一种方法是使用。另一种方法是一种新方法。这是一个相当基本的概念,因此在
cuda
tag.OP询问cuda而不是COP询问cuda而不是C时,这个问题的变体已经被多次询问