CUDA纹理技术全解析
1. 纹理概述
在CUDA通用并行计算软件技术中,若硬件本身不支持,纹理功能便无法实现,不过其图形加速的特性使其具备了一定的价值。尽管许多CUDA应用程序无需使用纹理也能构建,但有些应用依赖它来与基于CPU的代码竞争。
纹理映射旨在通过将图像“绘制”到几何体上,使物体看起来更加丰富和逼真。早期,硬件会对纹理坐标以及渲染三角形所需的X、Y和Z坐标进行插值,对于每个输出像素,会获取纹理值(可选地进行双线性插值),并与插值后的着色因子进行混合处理,最终将结果混合到输出缓冲区中。随着可编程图形技术的引入以及可能不包含颜色数据的类纹理数据(如凹凸贴图)的出现,图形硬件变得更加复杂。着色器程序包含TEX指令,用于指定要获取的坐标,并将结果纳入生成输出像素的计算中。硬件通过使用纹理缓存、针对维度局部性优化的内存布局以及将纹理坐标转换为硬件地址的专用硬件管道来提高性能。
由于纹理功能是逐步发展起来的,并且受到应用需求和硬件成本的综合影响,其特性并非完全正交。例如,“环绕”和“镜像”纹理寻址模式只有在纹理坐标归一化后才能正常工作。
1.1 两种使用场景
在CUDA中,纹理有两种显著不同的用途:
- 作为读取路径 :绕过合并约束或使用纹理缓存来减少外部带宽需求,或两者兼而有之。
- 利用固定功能硬件 :GPU为图形应用提供了固定功能的硬件,纹理硬件由一系列可配置的计算阶段组成,能够完成以下操作:
- 缩放归一化的纹理坐标。
- 对纹理坐标进行边界条件计算。
- 将纹理坐标转换为具有2D或3D局部性的地址。 <
超级会员免费看
订阅专栏 解锁全文
1156

被折叠的 条评论
为什么被折叠?



