3

私は他のアプリでこれを行いましたが、何らかの理由で現在のアプリでは機能しません。

これは、Cuda4.2を使用してVS2010で動作するコードスニペットです。問題を解決せずに、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 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

4

1 に答える 1

7

CUDAカーネルを宣言するときは、「extern "C"」を使用します。これにより、コンパイラーは関数名を壊しません。

于 2012-09-25T21:25:18.247 に答える