【问题标题】:not finding functions in ptx file在 ptx 文件中找不到函数
【发布时间】:2012-09-17 11:01:06
【问题描述】:

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

这是一个代码 sn-p,在 VS2010 中工作,使用 Cuda 4.2。我已经在 VS 内部和 VS 外部编译了 ptx 文件,但没有解决问题:

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计算工具包\CUDA\v4.2\include" -O -G --machine 32 --maxrregcount=0 -ptx -o="filterKernelHand.ptx" filterKernel.cu

【问题讨论】:

    标签: cuda gpu


    【解决方案1】:

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

    【讨论】:

    • 非常感谢!!我实际上知道这一点并忘记了我知道它。再次非常感谢您让我摆脱困境。
    猜你喜欢
    • 2015-10-17
    • 2015-01-31
    • 1970-01-01
    • 2017-05-03
    • 1970-01-01
    • 1970-01-01
    • 2012-09-18
    • 1970-01-01
    • 2012-11-05
    相关资源
    最近更新 更多