CUDA:纹理内存
2017-04-19 17:32
288 查看
纹理内存:
与常量内存类似,纹理内存是另一种形式的只读内存,并且同样缓存在芯片上。因此某些情况下能够减少对内存的请求并提供高效的内存带宽。纹理内存是专门为那些在内存访问模式中存在大量空间局部性的图形应用程序设计的。
首先,需要将输入的数据声明为texture类型的引用:
texture<float> texIn;
在为缓冲区分配了GPU内存后,需要通过cudaBindTexture()将这些变量绑定到内存缓冲区。这相当于告诉CUDA:
(1)我们希望将制定的缓冲区作为纹理来使用。
(2)我们希望将纹理引用作为纹理的“名字”
cudaMalloc((void**)&data.dev_inSrc, imageSize);
cudaBindTexture(NULL, texIn, data.dev_inSrc, imageSize);
当读取核函数中的纹理时,需要通过特殊的函数来告诉GPU将读取请求转发到纹理内存而不是标准的全局内存。因此,当读取内存时不再使用方括号从缓冲区中读取,而是改为使用tex1Dfetch().
纹理引用必须声明为文件作用域内的全局变量。tex1Dfetch是一个编译器内置函数,编译器需要在编译的时候知道tex1Dfetch()应该对哪些纹理采样。
tex1Dfetch(texIn, offset);
清除纹理绑定:
cudaUnbindTexTure(texIn);
二维纹理内存:
声明:
texture<float,2> texConstSrc;
读取:
tex2D(texConstSrc, x, y);
绑定:
cudaChannelFormatDesc desc = cudaCreateChannelDesc<float>();
cudaBindTexture2D(NULL, textConstSrc, data.dev_constSrc, desc, DIM, DIM, sizeof(float)*DIM) //纹理的维数(DIM*DIM),通道描述符desc
解绑:
cudaUnbindTexture(texConstSrc);
一维纹理和二维纹理在性能上没有差异。
与常量内存类似,纹理内存是另一种形式的只读内存,并且同样缓存在芯片上。因此某些情况下能够减少对内存的请求并提供高效的内存带宽。纹理内存是专门为那些在内存访问模式中存在大量空间局部性的图形应用程序设计的。
首先,需要将输入的数据声明为texture类型的引用:
texture<float> texIn;
在为缓冲区分配了GPU内存后,需要通过cudaBindTexture()将这些变量绑定到内存缓冲区。这相当于告诉CUDA:
(1)我们希望将制定的缓冲区作为纹理来使用。
(2)我们希望将纹理引用作为纹理的“名字”
cudaMalloc((void**)&data.dev_inSrc, imageSize);
cudaBindTexture(NULL, texIn, data.dev_inSrc, imageSize);
当读取核函数中的纹理时,需要通过特殊的函数来告诉GPU将读取请求转发到纹理内存而不是标准的全局内存。因此,当读取内存时不再使用方括号从缓冲区中读取,而是改为使用tex1Dfetch().
纹理引用必须声明为文件作用域内的全局变量。tex1Dfetch是一个编译器内置函数,编译器需要在编译的时候知道tex1Dfetch()应该对哪些纹理采样。
tex1Dfetch(texIn, offset);
清除纹理绑定:
cudaUnbindTexTure(texIn);
二维纹理内存:
声明:
texture<float,2> texConstSrc;
读取:
tex2D(texConstSrc, x, y);
绑定:
cudaChannelFormatDesc desc = cudaCreateChannelDesc<float>();
cudaBindTexture2D(NULL, textConstSrc, data.dev_constSrc, desc, DIM, DIM, sizeof(float)*DIM) //纹理的维数(DIM*DIM),通道描述符desc
解绑:
cudaUnbindTexture(texConstSrc);
一维纹理和二维纹理在性能上没有差异。
相关文章推荐
- CUDA总结:纹理内存
- CUDA学习日志:常量内存和纹理内存
- CUDA中多维数组以及多维纹理内存的使用
- CUDA内存--纹理内存的说明与使用
- CUDA学习日志:常量内存和纹理内存
- CUDA:纹理内存及其使用
- CUDA纹理内存的使用
- CUDA 学习(十四)、纹理内存
- CUDA 图像处理使用纹理内存与不使用纹理内存对比
- CUDA 纹理内存
- CUDA 纹理内存
- cuda纹理内存
- 绑定CUDA三维数组与纹理内存
- CUDA 纹理内存
- CUDA 纹理内存
- CUDA优化实例(五)纹理内存与常量内存
- cuda共享内存,全局内存,纹理等的解释
- CUDA二维纹理内存+OpenCV图像滤波
- CUDA 纹理内存
- CUDA By Examples 8 - 纹理内存Texture Memory