Nvidia GPU同时访问全局内存中的单个位置

问题描述 投票:1回答:1

我想知道当单个线程束内的多个线程尝试访问全局内存中的相同位置(例如,相同的4字节字)时会发生什么,特别是在具有7.5的计算能力的Turing GPU中。我相信,在共享内存中,这将导致存储区冲突,除非所有线程都访问同一位置,否则将广播数据。

仅举一个人为的例子:

1]考虑到扭曲的前16个线程访问单个4字节字,而其余16个线程访问下一个4字节字。在这种情况下如何处理访问?是否为每个半扭曲的线程序列化了?

2)如果整个warp试图从全局存储器访问单个4字节字怎么办?

cuda gpu nvidia gpgpu
1个回答
0
投票
  1. 没有序列化。在这种情况下,所有CUDA GPU Kepler和更高版本都将进行广播。没有性能影响。

  2. 没有区别。重叠读取访问的任何模式都可以在单个请求中进行处理,每个请求的事务数均经过优化。每个请求的事务数不会比普通的合并的每相邻位置一个线程的读取数高,并且可能更低。例如,在现代GPU上,每个合并的全局读取请求可能会观察到4个(32字节)事务。对于所有线程(在一个扭曲中)访问单个位置的情况,每个请求只有一个事务。

© www.soinside.com 2019 - 2024. All rights reserved.