合并读短整数cuda

时间:2010-10-19 07:22:12

标签: cuda

说我想从全局内存加载一个short数组到共享内存。我不确定这里的聚结是如何起作用的。在最佳实践指南中,它在计算能力1.0或1.1的设备上说,半经线中的第k个线程必须访问一个段中的第k个字,该段对齐到被访问元素大小的16倍。

如果我理解正确,如果我将数据分成32字节(16个短片)段,则线程ID 0,16,32 ...必须访问每个段的第一个元素?我还需要考虑64字节对齐或128字节对齐吗?我有一个gts 250,所以我想这很重要。欢迎提出建议。感谢。

1 个答案:

答案 0 :(得分:2)

根据CUDA Programming Guide short的G.3.2.1节,在任何情况下,不会在Compute Capability 1.0和1.1设备上合并。具体来说,它声明:

  

。访问的单词的大小   线程必须是4,8或16个字节

但是,您可以使用short2short4甚至short8等矢量类型来获得合并访问权限。这些类型的合并规则也在G.3.2.1节中详细说明。但是,就合并而言,short2就像32位int

FWIW,具有Compute Capability 1.3或更高版本的设备可以更好地处理类型charshort。在1.3设备上读取char可能会在1.0或1.1设备上提供高达约60%的峰值内存带宽,而峰值内存带宽约为10%。