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 回答