rod*_*dms 1 parallel-processing cuda nvidia
我编写了一个CUDA内核,其中每个线程都对特定的内存地址进行更新(使用int size).某些线程可能希望同时更新此地址.
CUDA如何处理这个问题?操作是否成为原子?这会以任何方式增加我的应用程序的延迟吗?如果是这样,怎么样?
Rob*_*lla 7
该操作不会成为原子操作,它本质上是未定义的行为.当两个或多个线程写入同一位置时,其中一个值将最终位于该位置,但无法预测哪一个.
如果您正在阅读和写作,例如增加变量,则可能会出现问题.
CUDA提供了一组原子操作来提供帮助.
您还可以使用其他编码技术(如并行缩减),以便在对同一位置进行多次更新时提供帮助,例如查找最大值或最小值.
如果您不关心更新的顺序,则对于较新的GPU而言,它不应该是一个性能问题,它会自动将写入或读取压缩到全局内存或共享内存中的单个位置,但这也不是指定的行为.
归档时间:
12 年,2 月 前
查看次数:
161 次
最近记录:
9 年,8 月 前