没有在ptx文件中找到函数

JPM*_*JPM 3 cuda gpu

我已经为其他应用程序做了这个,但由于某种原因它不能在我当前的应用程序中工作.

这是一个使用Cuda 4.2在VS2010中工作的代码片段.我已经在VS内部和VS外部编译了ptx文件而没有解决问题:

CUmodule    Module = NULL;
int rc7 = cuModuleLoad(&Module, CubinName);  // needs bin
if (rc7 == 0)  {
    rc = cuModuleGetFunction( &cuF_makeProcFrame, Module, "makeProcFrame" );
}
Run Code Online (Sandbox Code Playgroud)

我得到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
 )
Run Code Online (Sandbox Code Playgroud)

最后在CUDA代码中,这里是被调用的行:

__global__ void makeProcFrame(
                    cudaPitchedPtr YProcBasePtr, 
                    int numFrames, 
                    int width,
                    int height,
                    int lineBytes
            ) 
Run Code Online (Sandbox Code Playgroud)

任何人都可以告诉我为什么我得到错误返回而不是找到功能?


编辑:这是用于编译的批处理文件:

"C:\ Program Files\NVIDIA GPU Computing Toolkit\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\include"-O -G --machine 32 --maxrregcount = 0 -ptx -o ="filterKernelHand.ptx" filterKernel.cu

Eug*_*ene 7

在声明CUDA内核时使用"extern"C"" - 这样编译器不会破坏函数名称.