CUDA 메모리 구조(2)
- Posted at 2009/02/11 20:32
- Filed under Program/CUDA 삽질
CUDA 연산의 개념은 아래 그림과 같은 구조로 되어 있습니다.
여기서 Thread라고 되어 있는 것들이 CUDA연산에서 가장 작은 단위인 것입니다.
이 Thread들은 Block의 하위에 있고 Block들은 다시 Grid의 하위에 있습니다.
그래서 프로그래머가 연산을 하려면
'몇번Grid의 몇번Block의 몇번Thread를 사용하여 계산하겠다'
를 지정해 주어야 합니다.
여기서 각 Thread는 자신만의 local memory를 가지게 됩니다.
각 Thread 간에 data 공유를 위한 shared memory는 따로 있습니다.
그리고 Block들의 집합인 Grid간에 data 공유를 위한 Global memory가 있습니다.
구조는 아래와 같습니다.
이 memory들을 어떻게 사용하느냐에 따라서 같은 연산을 하는 CUDA프로그램이라 하더라도 큰 성능차이를 내게 됩니다.
memory간의 data를 이동시키는 비용이 꽤 크기 때문에 적절한 알고리즘을 작성하지 않는다면 계산하는데서 단축한 시간을 data 이동시키는데서 다 까먹을 수 있게 됩니다.
각 memory들의 속도 또한 차이가 있어서 이런 여러가지 요소를 고려하기 시작하면 복잡해지기 시작하는 겁니다.
결국 CUDA 프로그래밍의 핵심은 각 memory들의 특성을 파악해서 최대한 효율적인 알고리즘을 만드는데 있습니다.
아래 그림은 Grid를 이용해 계산한다는 것이 코드로는 어떻게 표현되는지를 나타냅니다.
결국 template project에서 보았던 kernel을 실행시키는 부분이 kernel에 해당하는 Grid를 실행시킨다는 것을 알 수 있습니다.
Posted by 아리수
- Tag
- CUDA, GPGPU, NVIDIA
- Response
- No Trackback , 9 Comments
- RSS :
- http://arisu.mireene.com/rss/response/137
Trackback URL : http://arisu.mireene.com/trackback/137
Comments List
-
MESL 2009/02/16 03:40 # M/D Reply Permalink
정말 깔끔하게 잘 정리 해 두셧습니다.
저도 CUDA에 대해 공부하고있는데...
사실 logical한 부분만 다루고있고...
곧있으면 output을 내야 하는 상황이라...;; 걱정이 많네요.ㅠ
많은 도움 부탁드립니다.ㅠㅠ -
MESL 2009/02/27 13:40 # M/D Reply Permalink
질문 있습니다.
제가 하고있는 플젝의 데이터가 float형이 4000*400개를 적분연산 해야하는데,
커널수행명령어.. 즉
testkernel <<< >>>
이부분에서 오류가 나는군요..
컴파일은 다 되구요.
invalid configuration argument라는데... 뭘 고쳐야될지-ㅅ-
조언부탁드립니다. -
MESL 2009/03/02 21:10 # M/D Reply Permalink
음... 소스를 보내드려볼까요??;
혹 메일주소가 어떻게 되시는지..ㅠ
교수님은 아웃풋을 원하시고.. 전 진행이 안되고..
답답해 죽겟습니다..ㅠ -
stylidy 2009/03/17 22:59 # M/D Reply Permalink
정리 해놓으신 포스트들 많은 도움이 되었습니다.
Visual Studio 2005에서 CUDA를 이용해 새로운 프로젝트를 생성해서 작업을 하려고 합니다. 혹시 release note에 있는 template프로젝트를 이용하는 방법 말고, 새로운 프로젝트를 생성하는 방법을 알고 계시면 도움을 주시면 감사하겠습니다. Visual studio 프로젝트 환경 설정에서 애를 먹고 있어서,,;;;;
그리고 원래 생성되어 있는 프로젝트를 CUDA환경으로 변환(?)할 수 있는 방법을 알고 계신지,,,;;;;
코딩에서 에러가 있어서 진행이 안되면 그나마 디버깅이라도 해볼 수 있겠는데,, 프로젝트 환경설정이 안되서 애를 먹고 있으니 너무 답답하네요,,;;;;
조언좀 해주시면 감사하겠습니다.
아,, 제 메일 주소는 stylidy@metq.com입니다.
아리수님 블로그 번창하시길 바랍니다. -
stylidy 2009/03/20 16:02 # M/D Reply Permalink
그렇군요,, 답답하네요,,,;;;;;
이놈의 링크에러,,, 어흑
답변해주셔서 감사합니다~

