Memory CUDA:计算能力1.2或更高版本的内存事务大小

Memory CUDA:计算能力1.2或更高版本的内存事务大小,memory,cuda,bandwidth,coalescing,Memory,Cuda,Bandwidth,Coalescing,全部,, 摘自“NVIDIA CUDA编程指南2.0”第5.1.2.1节: “在计算能力为1.2及更高版本的设备上聚合” 查找包含编号最低的活动线程请求的地址的内存段。8位数据的内存段大小为32字节,16位数据的内存段大小为64字节,32、64和128位数据的内存段大小为128字节 我有一个疑问:因为每个半扭曲有16个线程,如果所有线程都访问8位数据,那么每半扭曲的总大小应该是16*8位=128位=16字节。而“指南”上写着“8位数据为32字节”。似乎有一半的带宽被浪费了。我理解正确吗 谢谢 德

全部,, 摘自“NVIDIA CUDA编程指南2.0”第5.1.2.1节: “在计算能力为1.2及更高版本的设备上聚合”

查找包含编号最低的活动线程请求的地址的内存段。8位数据的内存段大小为32字节,16位数据的内存段大小为64字节,32、64和128位数据的内存段大小为128字节

我有一个疑问:因为每个半扭曲有16个线程,如果所有线程都访问8位数据,那么每半扭曲的总大小应该是16*8位=128位=16字节。而“指南”上写着“8位数据为32字节”。似乎有一半的带宽被浪费了。我理解正确吗

谢谢
德瑞克是的。内存访问总是以32、64或128字节的块为单位,而不管您实际需要多少内存线


更新:


问题:这如何解释16位数据的64字节

该值:1字节字为32字节,2字节字为64字节,高字节字为128字节,是访问段的最大大小。例如,如果每个线程提取2字节的字,并且您的访问完全对齐,那么内存访问将减少到仅使用32字节的行提取

查看“CUDA编程指南(v3.2)”的G.3.2.2节“计算能力设备1.2和1.3”


我看到你用了CUDA PG v。2.0(可能还有CUDA 2.0编译器)。从那以后有了很多改进(特别是:错误修复)。

这是如何解释16位数据的64字节的?(16 * 16 / 8 = 32)