【问题标题】:Using textures in Cuda when kernel code is in PTX file and Host code also generates PTX file当内核代码在 PTX 文件中并且主机代码也生成 PTX 文件时,在 Cuda 中使用纹理
【发布时间】:2013-02-08 14:53:16
【问题描述】:

我无法在 Windows 上使用 Cuda [4.2] 读取纹理。

我的程序读取一个包含所有内核模块的 ptx 文件。此外,编译过程会从一个简短的主机代码例程中生成一个额外的 ptx 文件。以下是仅包含主机代码的 .cuh 文件和 .cu 文件:

/////////////// "textureDefs.cuh"   file ///////////////////////////////////////////
#ifndef _TEXTUREDEFS_CUH
#define _TEXTUREDEFS_CUH
texture < float, cudaTextureType2D, cudaReadModeElementType> texRefEachRes_1;
texture <float, cudaTextureType2D, cudaReadModeElementType> texRefEachResPrev;
///////////////////////////////////////////////////////////////////////////////
///       myBind.cu
/////////////////////////////////////////////////

#include "cuda.h"
#include "textureDefs.cuh"
extern cudaPitchedPtr gYAllFramesForEachRes[ME_NUM_RES], gPrevYForEachRes[ME_NUM_RES];
//
extern "C"  cudaError_t bindTextures(int resNum)
{
    cudaChannelFormatDesc channelDesc = cudaCreateChannelDesc(32, 0, 0, 0, cudaChannelFormatKindFloat); // x is 32 bit float

    size_t offset;
    texRefEachResPrev.addressMode[0] = cudaAddressModeClamp;
    texRefEachResPrev.addressMode[1] = cudaAddressModeClamp;
    texRefEachResPrev.filterMode = cudaFilterModeLinear;
    texRefEachResPrev.normalized = false;
    cudaError_t err = cudaBindTexture2D(&offset, &texRefEachResPrev, 
            (unsigned char *)gPrevYForEachRes[resNum].ptr, &channelDesc, 
    gPrevYForEachRes[resNum].xsize, gPrevYForEachRes[resNum].ysize,   
           gPrevYForEachRes[resNum].pitch);  // jm bug 1/5
    return err;
}

在我的内核代码中对 tex2d 的每次调用都返回值 0,但我已检查并且数组中有有效数据。

我想知道是否还需要加载 myBind.ptx,如果需要,如何、何时以及在何处加载它?还是不需要?

感谢您的帮助。

【问题讨论】:

    标签: cuda textures gpu ptx


    【解决方案1】:

    在 CUDA 5.0 之前,对纹理的所有引用都必须来自同一个编译单元,否则您将处理碰巧具有相同名称但位于不同命名空间中的单独纹理。

    您的选择是在编译之前将所有 .ptx 代码包含到单个文件中,或者升级到 CUDA 5.0。

    【讨论】:

      猜你喜欢
      • 2012-07-17
      • 2021-05-05
      • 2016-07-17
      • 1970-01-01
      • 1970-01-01
      • 2012-11-28
      • 2021-04-05
      • 2013-05-09
      • 2012-07-08
      相关资源
      最近更新 更多