C++ Cuda以原子方式执行操作

C++ Cuda以原子方式执行操作,c++,cuda,mutex,atomic,C++,Cuda,Mutex,Atomic,在我的内核中,我检查一个条件,如果它是真的,我将tid插入一个数组。 我需要按原子顺序执行以下操作 if( condition ){ arr[*index_ptr] = tid; (*index_ptr)++ } 基本上,我希望没有两个线程在数组中的相同位置写入它们的TID 有没有一个简单的方法可以做到这一点?我听说在CUDA中很难实现锁。CUDA库内置了原子函数。您将寻找atomicadd() 这个函数使用一个指向int或float的指针和另一个int或float(我相信类

在我的内核中,我检查一个条件,如果它是真的,我将tid插入一个数组。 我需要按原子顺序执行以下操作

if( condition ){
    arr[*index_ptr] = tid;
    (*index_ptr)++
}
基本上,我希望没有两个线程在数组中的相同位置写入它们的TID


有没有一个简单的方法可以做到这一点?我听说在CUDA中很难实现锁。

CUDA库内置了原子函数。您将寻找atomicadd()


这个函数使用一个指向int或float的指针和另一个int或float(我相信类型必须匹配)来添加到它。它还可以在原子操作之前方便地返回指针的值。

cuda库内置了原子函数。您将寻找atomicadd()

这个函数使用一个指向int或float的指针和另一个int或float(我相信类型必须匹配)来添加到它。它还方便地返回原子操作之前指针的值