CUDA纹理参考的使用示例

记录个简单小例子帮助理解CUDA纹理参考的使用,其实和OpenGL纹理使用是一样的。
转载:https://www.cnblogs.com/riddick/p/7892663.html

CUDA纹理内存的访问速度比全局内存要快,因此处理图像数据时,使用纹理内存是一个提升性能的好方法。

贴一段自己写的简单的实现两幅图像加权和的代码,使用纹理内存实现。

输入:两幅图 lena, moon

CUDA纹理参考的使用示例_第1张图片  CUDA纹理参考的使用示例_第2张图片

输出:两幅图像加权和

CUDA纹理参考的使用示例_第3张图片

 

复制代码
#include  
#include 
#include 
#include 
#include 
#include 

using namespace std;
using namespace cv;

//声明CUDA纹理
texture  refTex1;
texture  refTex2;
//声明CUDA数组
cudaArray* cuArray1;
cudaArray* cuArray2;
//通道数
cudaChannelFormatDesc cuDesc = cudaCreateChannelDesc();


__global__ void weightAddKerkel(uchar *pDstImgData, int imgHeight, int imgWidth,int channels)
{
    const int tidx=blockDim.x*blockIdx.x+threadIdx.x;
    const int tidy=blockDim.y*blockIdx.y+threadIdx.y;

    if (tidx>>(pDstImgData, imgHeight, imgWidth, channels);
    cudaThreadSynchronize();

    //从GPU拷贝输出数据到CPU
    t=cudaMemcpy(dstImg.data, pDstImgData, imgWidth*imgHeight*sizeof(uchar)*channels, aMemcpyDeviceToHost);

    //显示
    namedWindow("show");
    imshow("show", dstImg);
    waitKey(0);
}

你可能感兴趣的:(CUDA)