2017-03-13 1 views
-1

CUDA 발표 : 프레젠테이션, 저자 상태의 3 페이지에서 http://on-demand.gputechconf.com/gtc-express/2011/presentations/register_spilling.pdf로컬 메모리 :이 프리젠 테이션 문서를 읽고 있었다

:

상점은 항상 - 단지 GPU 스레드가 액세스 할 수있는로드하기 전에 발생

LMEM 주소

누구에게 설명 할 수 있습니까? 그는 로컬 메모리가 처음 초기화 될 때를 의미합니까?

+2

전 세계 메모리보다 다른 메모리 공간을 사용한다고 생각합니다. 사용하기 전에 상점으로 초기화해야합니다. – Hopobcn

+1

답장을 보내신 후에 질문을 변경 (및 확대)하지 마십시오. 주제에 관한 새로운 질문이있는 경우, 큰 문제로 질문하십시오. – talonmies

답변

3

이와 관련하여 로컬 메모리는 공유 메모리와 비슷합니다.

  1. 공유 메모리와 관련된 유용한 작업을 수행하려면 먼저 초기화 (저장)해야합니다. 로컬 메모리에 대해서도 마찬가지입니다.

  2. CUDA 스레드 코드 만 로컬 메모리에 액세스 할 수 있습니다. 로컬 메모리에 액세스 할 수있는 cudaMemcpy과 같은 CUDA API 호출은 없습니다. 호스트 코드에서 로컬 메모리를 초기화 할 수 없습니다.

공유 메모리의 경우 기본적으로 같은 주석이 적용됩니다.

1

"로컬 메모리가 처음 초기화 될 때 그는 의미합니까?" - 예.

로컬 메모리에 "cudaMemcpy()"를 사용할 수없는 이유는 전역 주소 공간 외부에 있기 때문입니다. 로컬 변수를 명시 적으로 초기화하려고하면 컴파일러는 각 블록에 대해 초기화를 반복해야하므로 로컬 메모리에 저장합니다. 따라서 먼저 로컬 메모리에 값을 쓰지 않고 정의 된 값을 로컬 메모리에 저장하는 방법은 없습니다.

+0

확인해 주셔서 감사합니다. @tera, 당신의 대답은 실제로 당신이 도울 수 있다면 내 원래의 질문에 대한 몇 가지 질문을 추가했습니다, 당신을 감사합니다 –

+0

을 암시 적으로 의미 의미 무엇입니까 . 당신은 질문을했습니다. 당신은 두 가지 좋은 대답을 받았습니다. 그 대답 중 하나를 받아 들여야합니다. 새로운 질문이있는 경우 새로운 질문을 게시하십시오. 이것은 개인적인 도움 스레드가 아니라 모든 사람을 돕기 위해 존재하는 독립 실행 형 질문입니다. –

+1

@ ThierryBrown : 그게 [어떻게] 작동하지 않습니다 "모든"도우미에게 – talonmies