当前位置 : 主页 > 网络安全 > 测试自动化 >

cuda – 共享内存上的原子操作性能

来源:互联网 收集:自由互联 发布时间:2021-06-22
当提供的地址位于块共享内存中时,原子操作如何执行?在原子操作期间,是否暂停块内其他线程对同一共享内存库的访问,或者阻止其他线程执行任何指令,甚至阻止所有块中的线程直到原
当提供的地址位于块共享内存中时,原子操作如何执行?在原子操作期间,是否暂停块内其他线程对同一共享内存库的访问,或者阻止其他线程执行任何指令,甚至阻止所有块中的线程直到原子操作完成? 共享内存硬件包括1024个锁.如果调用在共享内存上运行的原子内在函数,编译器将发出一个获取并有条件地释放锁的短循环,或者如果未获取锁,则循环.因此,性能可能非常依赖于数据:如果warp中的所有32个线程尝试获取不同的锁,则它们将执行其原子操作并释放锁而不进行循环.另一方面,如果warp中的所有32个线程都尝试获取相同的锁,则warp将在每个线程执行其原子操作时循环31次,并释放所有其他线程正在尝试获取的锁.

获取的锁定由共享存储器地址的位2-11确定.因此,与CUDA中的大多数存储器操作一样,在连续的32位地址上操作通常会提供良好的性能.

网友评论