合并的访问模式对CUDA中的纹理和表面记忆是否重要?

Ufu*_*ici 3 memory textures cuda nvidia

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

har*_*ism 6

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