防止kepler中的超出限制:分支,纹理或更大的缓冲区?

时间:2013-06-09 23:01:38

标签: cuda gpgpu

如果我使用只读缓存(kepler)而不是纹理,有人会告诉我性能的提升吗?

我在这里有一个设计决定,保护越界接受:

a)放一些分支。检查访问权限是否为OOB并避免访问。

b)使用纹理进行地址模式(边框)。

c)分配更大的缓冲区......

哪种选择会产生更好的表现?

1 个答案:

答案 0 :(得分:0)

您可能需要对两个版本a)和b)进行编码,并将它们相互比较。

很难一般地评估纹理的特殊性,例如

  • 可能需要其他类型转换的浮点坐标
  • 纹理指令的固定寄存器布局可能会增加寄存器压力

根据零( - 附加) - 循环边界检查的优势进行评分。

然而,我的普遍期望是两者将非常接近。上面提到的(dis-)优点或多或少相互抵消,与全局内存访问的延迟相比,差异很小。