总述
纹理内存是GPU上的一种内存,在某些场景下会比全局内存快,所以在某些场景下能够提高性能,对于cuda C提供了两种对于纹理内存的使用方式,在2维以上都需要借助cuda数组,一个是cuda纹理参考系方式,是一直都能使用的方式,另一种是cuda对象方式,只在计算能力为3.x的设备上支持。
Texture-Reference API (纹理参考系方式)
主要流程:
texture<DataType,Type,ReadMode >texRef
声明参考系要在全局之外,这里读模式在最上边声明的,而纹理对象则在纹理属性中声明
然后就是属性设置:
texRef.addressMode[0]=cudaAddressModeWrap;
texRef.addressMode[1]=cudaAddressModeWrap;
texRef.filterMode=cudaFilterModeLinear;
texRef.normalized=true;
texRef.addressMode[1]=cudaAddressModeWrap;
texRef.filterMode=cudaFilterModeLinear;
texRef.normalized=true;
之后是绑定操作:
cudaBindTextureToArray(texRef,cuArray,channelDesc);
这是简单的例子:
#include <stdio.h>
#include <stdlib.h>
#include <cuda.h>
#include <cuda_runtime.h>
texture<float,cudaTextureType2D,cudaReadModeElementType >texRef;
__global__ void transformK