【问题标题】:Cuda perform operations atomically [duplicate]Cuda以原子方式执行操作[重复]
【发布时间】:2016-03-27 19:54:01
【问题描述】:

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

if( condition ){
    arr[*index_ptr] = tid;
    (*index_ptr)++
}

基本上,我希望没有两个线程将它们的 tid 写入数组中的相同位置。

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

【问题讨论】:

    标签: c++ cuda mutex atomic


    【解决方案1】:

    cuda 库内置了原子函数。你会寻找 atomicadd()

    Cuda Programming Guide

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-12-17
      • 2012-02-13
      • 2012-07-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-06-17
      相关资源
      最近更新 更多