2013-04-05 25 views
5

API trình điều khiển CUDA cung cấp tải tệp có chứa mã PTX từ hệ thống tệp. Một thường nào sau đây:Chuyển chương trình PTX đến trình điều khiển CUDA trực tiếp

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

Trong trường hợp một tạo ra các tập tin PTX trong thời gian chạy (on the fly) đi qua file IO có vẻ là một sự lãng phí (kể từ khi người lái xe có tải nó trở lại một lần nữa).

Có cách nào để chuyển chương trình PTX đến trình điều khiển CUDA trực tiếp (ví dụ: dưới dạng chuỗi C) không?

Trả lời

4

Taken từ ví dụ ptxjit CUDA:

Xác định chương trình PTX như là một chuỗi C như

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\ 
"; 

sau đó

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

và cuối cùng

cuModuleLoadDataEx(phModule, myPtx, 0, 0, 0); 
Các vấn đề liên quan