2017-11-23 24 views
0

? "host_data 구문을 사용하면 장치 데이터의 주소를 호스트의 에 사용할 수 있습니다." (OpenAcc API). use_device - "변수를 프로 시저에 전달할 때와 같이 목록의 모든 항목에 대한 장치 주소를 사용하도록 컴파일러에 지시합니다"(OpenAcc 프로그래밍 및 모범 사례 안내서). 내가 #pragma acc host_data의 기능은 무엇입니까? 건설 (p는 GPU에)</p> <pre><code>#pragma acc host_data use_device(p) {...} </code></pre> <p>정확하게 수행을 무엇

int A=1; 
int B=2; 
#pragma acc declare device_resident(A,B) 
... 

장치에 alocated 변수가있는 경우는, 예를 들어, 그 뜻, 내가 호스트

#pragma acc host_data use_device(A,B) 
{ 
    memcpy(&A,&B,sizeof(int)); 
} 

에서 쓸 수 있습니다 나는이 잘못 가정합니다. 이걸 설명해 줘.

답변

0

OpenACC "host_data"지시어는 호스트 코드 내에서 사용할 변수의 장치 주소를 가져와야 할 때 사용됩니다. 변수의 장치 주소를 전달하려는 경우 CUDA 또는 CUDA를 인식하는 MPI와의 상호 운용성에 주로 사용됩니다.

예를 들어, "memcpy"시스템에 장치 주소를 전달하면 오류가 발생할 가능성이 높습니다. "memcpy"를 "cudaMemcpy"또는 장치 주소가 전달 될 것으로 예상하는 다른 루틴으로 변경하면 괜찮습니다.

이 블로그 게시물은 도움이 될 수 있습니다. https://devblogs.nvidia.com/parallelforall/3-versatile-openacc-interoperability-techniques/