Opencl原子函数性能

Opencl原子函数性能,opencl,Opencl,我知道opencl中的原子函数会大大降低程序的速度。如果在内存中执行写入操作时发生了赛车,则这一点绝对正确 我很好奇如果没有赛车,如果我在更新内存时仍然使用原子函数会发生什么?据我所知,由于线程被强制一个接一个地执行,它无论如何都会减慢速度。我说的对吗?你是在问原子操作是否可以用作全局同步点?如果没有竞赛,首先就不需要原子。使用它们将使硬件执行不需要的检查,从而降低内存访问速度。即使如此,没有线程会因为对内存的串行访问而阻塞。@VeronikaPrüssels是的,这是毫无意义的。我对原子函数的

我知道opencl中的原子函数会大大降低程序的速度。如果在内存中执行写入操作时发生了赛车,则这一点绝对正确


我很好奇如果没有赛车,如果我在更新内存时仍然使用原子函数会发生什么?据我所知,由于线程被强制一个接一个地执行,它无论如何都会减慢速度。我说的对吗?

你是在问原子操作是否可以用作全局同步点?如果没有竞赛,首先就不需要原子。使用它们将使硬件执行不需要的检查,从而降低内存访问速度。即使如此,没有线程会因为对内存的串行访问而阻塞。@VeronikaPrüssels是的,这是毫无意义的。我对原子函数的时间花费很感兴趣。@DarkZeros,所以它确实慢了一点,即使没有竞速发生?如果你用“激烈竞争”代替“竞速”,那么原子学可能是合理的。它们不合理的情况是,每个线程都试图使用原子访问相同的数据——这有效地序列化了访问,这是对性能的重大影响。但是,如果原子访问分布在大量位置上,或者只有少数线程进行原子访问,那么它们可以非常好地工作。如果您的位置依赖于数据,则边缘情况可能仍然较慢(例如,具有不同数据的直方图可能较快,但具有相同数据的直方图则较慢)。