6

CUDA ドライバー API は、ファイルシステムからの PTX コードを含むファイルの読み込みを提供します。通常、次のことを行います。

CUmodule module;
CUfunction function;

const char* module_file = "my_prg.ptx";
const char* kernel_name = "vector_add";

err = cuModuleLoad(&module, module_file);
err = cuModuleGetFunction(&function, module, kernel_name);

実行時に (オンザフライで) PTX ファイルを生成する場合、ファイル IO を通過するのは無駄に思えます (ドライバーがファイルを再度ロードする必要があるため)。

PTX プログラムを CUDA ドライバーに直接 (たとえば、C 文字列として) 渡す方法はありますか?

4

2 に答える 2

6

ptxjitCUDAの例から抜粋:

PTX プログラムを次のように C 文字列として定義します。

char myPtx32[] = "\n\
    .version 1.4\n\
    .target sm_10, map_f64_to_f32\n\
    .entry _Z8myKernelPi (\n\.param .u32 __cudaparm__Z8myKernelPi_data)\n\
    {\n\
    .reg .u16 %rh<4>;\n\
    .reg .u32 %r<8>;\n\

    // Other stuff

    .loc    28      18      0\n\
    exit;\n\
    }\n\
 ";

それから

 cuModuleLoadDataEx(phModule, myPtx32, 0, 0, 0);

そして最後に

 cuModuleLoadDataEx(phModule, myPtx, 0, 0, 0);
于 2013-04-05T20:13:41.440 に答える
0

cuModuleLoadDataEx関数を使用して、NULL で終わる文字列から PTX ソースをロードします。

于 2013-04-05T20:16:54.923 に答える