Windows에서 Cuda [4.2]를 사용하여 텍스처를 읽는 데 문제가 있습니다.커널 코드가 PTX 파일이고 호스트 코드도 PTX 파일을 생성 할 때 Cuda에서 텍스처 사용
내 프로그램은 모든 커널 모듈을 포함하는 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;
}
호출 할 때마다 0 값을 반환 내 커널 코드에 tex2d 것이 아니라 내가 선택하고 배열의 유효한 데이터가있다.
나는 또한 myBind.ptx를로드해야하는지 궁금해합니다. 그렇다면 어떻게 그리고 언제, 어디서로드 될까요? 또는 이것이 필요하지 않은가?
귀하의 도움에 감사드립니다.