2013-04-05 69 views
5

CUDA驅動程序API提供從文件系統加載包含PTX代碼的文件。人們通常將執行以下操作:將PTX程序直接傳遞到CUDA驅動程序

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

ptxjit CUDA示例摘自:

定義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);