Graphics Programming

CUDA를 시작하며 본문

Season 2

CUDA를 시작하며

minseoklee 2022. 10. 8. 02:45

CUDA 공부를 시작했다. 레퍼런스로는 마침 올해 개정판이 나온 "Programming Massively Parallel Processors" 4판을 쓰고 있다.

 

예제 코드를 몇 개 따라해보니 그래픽스 API에서 컴퓨트 셰이더를 쓰는 것과 모델이 크게 다르지 않다. 호스트(CPU+RAM)에서 디바이스(GPU+VRAM)로 데이터를 업로드하고 커널을 실행한다. 실행 결과를 다시 호스트 메모리로 가져온다. 그래픽스 API에서 셰이더 리소스 바인딩 → 컴퓨트 셰이더 실행 → CPU readback하는 것에 그대로 대응된다. 산술 연산과 메모리 액세스의 비율, 블록 사이즈, 레지스터 등을 고려한 최적화는 GPU 프로파일러를 돌려서 occupancy, VGPR, VMEM/VDATA throughput 등을 따지는 것에 대응된다.

 

CUDA라는 모델을 통해 GPU를 다시 보니 신선하고, GPGPU를 하기 위한 셋업은 CUDA가 더 간소하고 편리하다. 일단은 책에 나오는 예시 알고리즘들을 따라만들어보고 있는데 그 후에 무엇을 할지는 정하지 못했다. 3D 그래픽스에 관련된 것이라면 기존에 익숙하게 쓰던 OpenGL/Vulkan/DirectX를 계속 쓸 것 같고... 항상 그래픽스에 우선순위가 밀리던 머신 러닝을 마침내 CUDA와 함께 시작하게 될 지도 모르겠다.

Comments