• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    해결됨

global 변수가 cuda memory에서 사용되는 이유

23.07.15 15:40 작성 조회수 143

0

- 출장이 잦아서, 답변에 시간이 좀 걸릴 수도 있습니다. 양해 바랍니다.

- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!
- 먼저 유사한 질문이 있었는지 검색해보세요.
- 서로 예의를 지키며 존중하는 문화를 만들어가요.
- 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.

 

안녕하세요, 선생님! 궁금한 게 있어서요. device memory와 host memory는 구분되어 있잖아요?? 그래서 각각 사용되는 데이터는 각각의 메모리에서 사용하는 것으로 알고 있었어요. 그런데

vecSize 나 saxpy_a는 global로 선언 되어 있는데, 이 변수들은 device메모리에서 어떻게 사용하는 거죠?? global 변수의 위치는 host memory에 위치 하지 않나요??

답변 1

답변을 작성해보세요.

0

안녕하세요.

CUDA 의 device memory와 host memory 개념을 잘 이해하고 계십니다.

말씀하신 내용이 모두 맞는 이야기 인데, 다만, CUDA 에서도 이런 문제 때문에, CUDA 에서만 사용하는 global variable 들을 모아 놓은 영역을 생각하게 됩니다.

그래서, 실제로는 변수의 크기나, CUDA global constant 등은 device memory 내에서도 별도의 영역에 보관하게 됩니다.

관련된 CUDA device memory 의 계층 구조는 다음 (3)번 강의에서 집중해서 다루게 됩니다.

특히, 질문하신 변수의 크기 등은 device memory 중에서도 constant memory 영역에 저장하는 것이 일반적입니다.

또, CUDA 를 위한 global 변수를 선언하면, cuda compiler 에서 자동으로 device memory 영역에 할당해 주도록 되어 있습니다. 이 경우는 별도의 cuda Malloc 이나, 복사가 필요없지만, 사실은 cuda compiler 가 같은 작업을 드러나지 않게 수행하고 있습니다.

감사합니다.