我的计算能力是1.3 GPU。根据文档,当相同的半warp的线程根据字大小从相同的32-64或128字节存储器段访问字节时,这些存储器访问被合并为一个。
但是,在使用cudaMallocPitch()分配的二维数组的情况下,当相同的半warp访问连续字节的线程时,是否保证这些字节驻留在同一个内存段?
在CUDA coalesced access to global memory处存在类似的问题,但未涵盖具有2D阵列的1.3 GPU的计算能力。
答案 0 :(得分:2)
是 - cudaMallocPitch()
主要用于确保合并行为从一行持续到下一行。合并的标准是per-warp,因此它们更精细,并且属于2D数组的一行中的连续字节。
请注意,操作数大小必须至少为32位,否则合并根本不起作用。