共享和全局内存访问

时间:2011-07-06 13:08:23

标签: memory cuda global gpu shared

我可以发现,对于“全局”内存访问,线程所需的内存地址的合并(相邻)是最佳事务的关键,而在“共享”内存中,线程发出的非冲突地址是关键。我理解得好吗?

1 个答案:

答案 0 :(得分:1)

来自NVIDIA CUDA编程指南:

  

为了最大化全局内存吞吐量,因此最大化非常重要   合并:

     
      
  • 遵循基于G.3.2和G.4.2节的最佳访问模式,
  •   
  • 使用符合详细规格和对齐要求的数据类型   第5.3.2.1.1节,
  •   
  • 在某些情况下填充数据,例如,在访问二维时   第5.3.2.1.2节中描述的数组。
  •   

这与warp中的线程的内存访问有关,该warp被合并为“打包”到一个或多个事务中。对于计算能力2.x的设备,此问题已经放宽。

另一方面,对于共享内存访问,您需要了解如何实现此内存。

  

为了实现高带宽,共享内存被分成大小相同的内存   模块,称为银行,可以同时访问。

如果两个或多个线程访问同一个银行,则传输被序列化,例如银行冲突。

附录G.计算能力有更多关于架构的信息。

问候!