CUDA编程9 - 卷积实践
一: 卷积程序所用的 CUDA API 介绍
1. cudaArray
是 CUDA 中用于 纹理内存或表面内存 的特殊数组类型,它通常在纹理读取或图像处理等场景下使用,代表一个在设备(GPU)上分配的二维或三维图像数据。
2. cudaTextureObject_t
是一个 CUDA 纹理对象 类型,它是一个句柄(handle),表示一个配置好的纹理资源,可假设你写了一个 GPU 函数(核函数)在显卡上跑,但这个函数里面用到了一些“全局参数”,比如一个卷积核、一个常量矩阵或者某个标志变量,你不想在每个线程中都传这些参数,而是希望全局共享这些变量。
以被 CUDA kernel 使用来读取数据。通常通过 tex2D<float>(texSrc, x, y)
等函数访问。
3. cudaChannelFormatDesc
是用于描述纹理/数组中每个元素的通道格式(比如每个像素是 float、uchar4 等)。cudaCreateChannelDesc<float>()
表示创建一个 单通道、32-bit 浮点数格式 的描述符。
4. cudaMallocArray 是在 GPU 上分配一个二维的 CUDA array,用于纹理或图像处理。这是 CUDA 特有的内存结构,主要用于和 纹理内存(texture memory) 或 表面内存(surface memory) 搭配