4

根据我使用 CUDA 的经验,我最喜欢带有 CUDA 数组引用的纹理内存,因为它具有 2D/3D 空间缓存机制,而且我的输入数据在大多数情况下都可以排列为 2D 纹理。现在我有一个问题,我可以将输入建模为线性数组和 2D 纹理。(顺便说一句,当我谈论纹理内存时,我总是指将它与 2D CUDA 数组引用一起使用。)我知道在使用常规全局内存时,合并访问模式非常重要。如果 warp 中的线程读取连续地址且基地址与 64 字节边界对齐,则可以通过单个内存访问(合并访问)为整个 warp 提供服务。我想知道,合并访问模式对于纹理内存是否也很重要。我觉得不应该 因为纹理记忆的目的不同;它针对彼此接近的 2D/3D 访问进行了优化,据我所知,它使用所需的像素和一些周围的行和列更新纹理缓存。因此,我认为 2D 纹理内存中一行的连续访问模式没有优势,相反,它可能会用周围的行列数据污染纹理缓存并降低性能。无论如何,这只是我在阅读编程指南和其他资源后的想法,我想确定一下:合并访问模式对于纹理内存是否重要,因为它在常规全局内存中?它针对彼此接近的 2D/3D 访问进行了优化,据我所知,它使用所需的像素和一些周围的行和列更新纹理缓存。因此,我认为 2D 纹理内存中一行的连续访问模式没有优势,相反,它可能会用周围的行列数据污染纹理缓存并降低性能。无论如何,这只是我在阅读编程指南和其他资源后的想法,我想确定一下:合并访问模式对于纹理内存是否重要,因为它在常规全局内存中?它针对彼此接近的 2D/3D 访问进行了优化,据我所知,它使用所需的像素和一些周围的行和列更新纹理缓存。因此,我认为 2D 纹理内存中一行的连续访问模式没有优势,相反,它可能会用周围的行列数据污染纹理缓存并降低性能。无论如何,这只是我在阅读编程指南和其他资源后的想法,我想确定一下:合并访问模式对于纹理内存是否重要,因为它在常规全局内存中?相反,它可能会用周围的行列数据污染纹理缓存并降低性能。无论如何,这只是我在阅读编程指南和其他资源后的想法,我想确定一下:合并访问模式对于纹理内存是否重要,因为它在常规全局内存中?相反,它可能会用周围的行列数据污染纹理缓存并降低性能。无论如何,这只是我在阅读编程指南和其他资源后的想法,我想确定一下:合并访问模式对于纹理内存是否重要,因为它在常规全局内存中?

4

1 回答 1

7

不,合并访问模式对于 NVIDIA CUDA GPU 上的纹理访问并不重要。

于 2012-08-01T22:22:09.487 回答