繁体   English   中英

CUDA合并了对FP64数据的访问

[英]CUDA coalesced access of FP64 data

我对war64发出的内存访问如何受FP64数据影响感到困惑。

  • 扭曲始终由32个线程组成,无论这些线程正在执行FP32还是FP64计算。 对?
  • 我已经读到,每当warp中的线程尝试读取/写入全局内存时,warp就会访问128个字节(32个单精度浮点数)。 对?
  • 因此,如果warp中的所有线程都从内存中读取不同的单精度浮点数(总共128个字节),但以合并的方式进行读取,则warp将发出单个内存事务。 对?

现在这是我的问题:

  • 如果扭曲中的所有线程都尝试以合并的方式访问不同的双精度浮点数(总共256个字节),该怎么办? 经线会发出两个内存事务(128 + 128)吗?

PS:我对Compute Capability 2.0+架构最感兴趣

扭曲始终由32个线程组成,无论这些线程正在执行FP32还是FP64计算。 对?

正确

我已经读到,每当warp中的线程尝试读取/写入全局内存时,warp就会访问128个字节(32个单精度浮点数)。 对?

不完全是。 还有32个字节的事务大小。

因此,如果warp中的所有线程都从内存中读取不同的单精度浮点数(总共128个字节),但以合并的方式进行读取,则warp将发出单个内存事务。 对?

正确

如果扭曲中的所有线程都尝试以合并的方式访问不同的双精度浮点数(总共256个字节),该怎么办? 经线会发出两个内存事务(128 + 128)吗?

是。 编译器将发出一条64位加载指令,当可能进行合并的内存访问时,每个warp将通过两个128字节事务处理该指令。

问题未解决?试试以下方法:

CUDA合并了对FP64数据的访问

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2023 STACKOOM.COM