我已经为其他应用程序完成了这项工作,但由于某种原因,它不适用于我当前的应用程序。在ptx文件中找不到函数
这里是一个代码片段,在VS2010中使用Cuda 4.2。我编了PTX文件内外VS和VS也没有外解决问题:
CUmodule Module = NULL;
int rc7 = cuModuleLoad(&Module, CubinName); // needs bin
if (rc7 == 0) {
rc = cuModuleGetFunction(&cuF_makeProcFrame, Module, "makeProcFrame");
}
我得到RC = 500 - 功能未找到。
,当我在一个文本编辑器打开PTX文件我看到:
.entry _Z13makeProcFrame14cudaPitchedPtriiii(
.param .align 4 .b8 _Z13makeProcFrame14cudaPitchedPtriiii_param_0[16],
.param .u32 _Z13makeProcFrame14cudaPitchedPtriiii_param_1,
.param .u32 _Z13makeProcFrame14cudaPitchedPtriiii_param_2,
.param .u32 _Z13makeProcFrame14cudaPitchedPtriiii_param_3,
.param .u32 _Z13makeProcFrame14cudaPitchedPtriiii_param_4
)
在CUDA代码本身在这里
,最后是被叫线路:
__global__ void makeProcFrame(
cudaPitchedPtr YProcBasePtr,
int numFrames,
int width,
int height,
int lineBytes
)
谁能告诉我为什么我得到错误返回而不是函数发现?
编辑:这里是编译的批处理文件:
“C:\ Program Files文件\ NVIDIA GPU计算工具包\ CUDA \ V4.2 \ BIN \ nvcc.exe” -gencode = Arch = compute_20,code = sm_20 -ccbin“C:\ Program Files(x86)\ Microsoft Visual Studio 10.0 \ VC \ bin”-I“C:\ Program Files \ NVIDIA GPU Computing Toolkit \ CUDA \ v4.2 \包括“-O -G - 机器32 --maxrregcount = 0 -ptx -o =”filterKernelHand.ptx“filterKernel.cu
非常感谢!我其实知道这一点,忘了我知道。再次非常感谢让我解散。 – JPM