2012-11-07 2 views
5

C 코드를 통해 CUDA (Fermi GPU)에서 데이터 프리 페치 작업을하고 있습니다. Cuda 레퍼런스 매뉴얼은 C 레벨 코드가 아닌 ptx 레벨 코드에서의 프리 페치에 대해 이야기합니다.(C 코드를 통해) cuda에서 프리 페치

누구나 나를 쿠다 코드 (cu 파일)를 통해 프리 페치와 관련한 문서 또는 무언가로 연결할 수 있습니까? 어떤 도움을 주시면 감사하겠습니다. PTX manual에 따르면

답변

5

여기 프리 페치은 PTX에서 작동하는 방법이다 :

enter image description here

당신은 CUDA 커널에 PTX 지침을 포함 할 수 있습니다.

__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; 
} 

당신은 C에서 다음 프리 페치 기능 결론 올 수 있습니다 :

__device__ void prefetch_l1 (unsigned int addr) 
{ 

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

주의 사항 : 여기 NVIDIA's documentation에서 작은 샘플입니다 당신은 프리 페치에 대한 계산 능력 2.0의 GPU 이상이 필요합니다. 적절하게 컴파일 플래그를 전달하십시오. -arch=sm_20

+0

개념 자체에 대한 설명과 같이 프리 페치가 작동하는 방식에 대한 추가 설명서를 제공 할 수 있습니까? –

+2

확실! 이 GPGPU 프리 페치 연구를 확인하고 참조를 통해 개념에 대해 자세히 알아보십시오. http://www.cc.gatech.edu/~hyesoon/lee_taco12.pdf – ahmad