2012-11-07 11 views
5

Ich arbeite an Datenvorabruf in CUDA (Fermi-GPU) über C-Code. Cuda Referenzhandbuch spricht über das Prefetching bei ptx-Level-Code nicht bei C-Level-Code.Prefetch in Cuda (über C-Code)

Kann mich jemand mit einigen Dokumenten oder etwas in Bezug auf Prefetching durch Cuda-Code (cu-Datei) verbinden. Jede Hilfe wäre willkommen.

Antwort

5

Nach PTX manual hier ist, wie Prefetch in PTX funktioniert:

enter image description here

Sie können die PTX Anweisungen in die CUDA Kernel einzubetten. Hier ist eine kleine Probe aus NVIDIA's documentation:

__device__ int cube (int x) 
{ 
    int y; 
    asm("{\n\t"      // use braces for local scope 
     " .reg .u32 t1;\n\t"   // temp reg t1, 
     " mul.lo.u32 t1, %1, %1;\n\t" // t1 = x * x 
     " mul.lo.u32 %0, t1, %1;\n\t" // y = t1 * x 
     "}" 
     : "=r"(y) : "r" (x)); 
    return y; 
} 

Sie kommen mit der folgenden Prefetch-Funktion in C schließen:

__device__ void prefetch_l1 (unsigned int addr) 
{ 

    asm(" prefetch.global.L1 [ %1 ];": "=r"(addr) : "r"(addr)); 
} 

HINWEIS: Sie müssen die GPU von Compute Capability 2.0 oder höher für Prefetch. Pass richtig Kompilieren Flags entsprechend -arch=sm_20

+0

können Sie mir auf einige weitere Dokumentation, wie Prefetching funktioniert, wie die Erklärung des Konzepts selbst. –

+2

sicher! Überprüfen Sie diese GPGPU Prefetching-Studie und gehen Sie durch Referenzen, um mehr über das Konzept zu erfahren: http://www.cc.gatech.edu/~hyesoon/lee_taco12.pdf – ahmad