Maxima's Lab

[Cuda Programming] Cuda, Blocks, Grids and CUDA Keywords 본문

C(C++)/Cuda Programming

[Cuda Programming] Cuda, Blocks, Grids and CUDA Keywords

Minima 2022. 10. 25. 00:33
728x90
SMALL

안녕하세요, 오늘은  Cuda, Blocks 그리고 Grids 에 대해서 알아보겠습니다.

 

Cuda 란?

: GPU (그래픽 처리 장치)에서 수행하는 병렬 처리 알고리즘에 대하여 C 프로그래밍 언어등을 이용하여 사용할 수 있도록 해주는 GPGPU

입니다. 여기서, GPGPU(General Purpose computing on Graphics Processing Units을 의미합니다.

https://ko.wikipedia.org/wiki/CUDA

 

CUDA - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. CUDA 처리 흐름의 예 1. 메인 메모리를 GPU 메모리로 복사 2. CPU가 GPU에 프로세스를 지시함 3. GPU가 각 코어에 병렬 수행 4. GPU 메모리로부터의 결과물을 메인 메모

ko.wikipedia.org

 

다음은 Blocks과 Grids의 개념에 대해서 알아보겠습니다.

 

  • Blocks : 같은 Streaming Multi-processor (SM)에서 작동되는 Threads의 그룹이며, Warp Size(32)의 배수가 되어야 합니다. 이는 1024를 최대값으로 가질 수 있습니다.
  • Grids : Threads Blocks으로 구성되어 있으며, Grid Size는 Thread Blocks의 총 개수를 의미합니다.

위의 2가지 개념을 활용하여, Threads의 총 개수는 Threads x Blocks의 값으로 계산할 수 있습니다.

 


이어서, CUDA 사용을 위한 CUDA Keyword에 대해서 알아보겠습니다.

 

  • __device__ : GPU에서 Kernels를 호출하고 함수들을 실행하기 위해 Compile 하는 Keyword
  • __host__ : CPU에서 함수를 실행하기 위해 Compile 하는 Keyword
  • __global__ : GPU에서 실행되는 함수이지만, 호출되지는 못하며 Host에서만 호출 가능한 Keyword

 

지금까지, CUDA, Blocks, Grids 그리고 CUDA Keywords에 대해 알아보았습니다.

728x90
LIST
Comments