2013-04-05 31 views
5

Interfejs API sterownika CUDA zapewnia ładowanie pliku zawierającego kod PTX z systemu plików. One zwykle wykonuje następujące operacje:Przekazywanie programu PTX bezpośrednio do sterownika 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); 

W przypadku jednej generuje pliki PTX podczas wykonywania (w locie) przeżywa pliku IO wydaje się być stratą (ponieważ kierowca musi załadować go ponownie).

Czy istnieje sposób przekazania programu PTX bezpośrednio do sterownika CUDA (np. Jako ciąg znaków C)?

Odpowiedz

4

pobranych z przykładu ptxjit CUDA:

określony program PTX jako łańcuch C jako

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

następnie

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

i wreszcie

cuModuleLoadDataEx(phModule, myPtx, 0, 0, 0);