CPU Memory

GPU Memory도 CPU Memory와 같이 계층이 나뉜다고 보면 됩니다.

 

 

 


GPU Memory

지금까지 Thread, Block, Grid를 알아봤습니다.

여기서 Thread, Block, Grid가 사용하는 Memory가 각각 다릅니다.

 

 

 

 


Thread가 사용하는 Memory

 

Thread가 사용하는 Memory는 Register, Local Momory가 있습니다.

  • 가장 빠르지만 가장 작은 Memory 입니다.
  • GPU마다 다르지만 하나의 Block 마다 32개의 Register가 존재합니다.
  • Register는 8k~64k의 크기입니다.
  • Thread마다 최대 255개의 Register를 사용할 수 있습니다.
    • ex) 64k의 Register 공간이 있고 1024의 Thread가 존재한다면 하나의 Thread는 최대 62의 Register 공간을 사용할 수 있습니다.
  • In-core memory (SM 안에 있는 Memory)

 

  • Off-chip Memory - SM 밖에 있는 Memory
  • Register보다 느리지만 큰 용량을 가집니다.
  • Register에 다 못올리는 경우 Local Memory에 올라갑니다.

 

 

 


Block이 사용하는 Memory

 

  • Block 안에 있는 Thread들이 공유하는 Memory 공간
  • on-chip (in-core-memory)이므로 속도가 빠릅니다.
  • SM안에 Block들이 Shared Memory 공간을 분할해서 사용합니다.

 

 

 

 


Grid가 사용하는 Memory

 

  • off-chip memory
  • 매우 느리지만 용량이 굉장히 큽니다.
  • Grid안에 있는 모든 Thread들이 접근 가능합니다.
  • HOST(CPU)가 접근 가능합니다. - 즉, 통신 메모리입니다.

  • GPU에서 읽을 수만 있는 Memory 입니다.
  • HOST(CPU) 쪽에서 선언합니다.
  • 굉장히 작고 빠릅니다. (64KB per SM)

  • GPU에서 읽을 수만 있는 Memory
  • Graphic 관련 Memory
  • 그냥 있다는 것만 알아두자!

 

 

 


Caches

  • L1 cahce: SM 안의 Shared memory를 L1 cache로 바꿀 수 있습니다.
  • L2 cache: SM 밖에 위치해있고 Global memory, Local memory... 등이 접근 할때 L2 cache를 통해 접근

 

 

출처:

https://www.youtube.com/watch?v=ipARGT0HfBM&list=PLBrGAFAIyf5pp3QNigbh2hRU5EUD0crgI&index=20

'Cuda' 카테고리의 다른 글

10_Using Shared Memory_Example_Quiz_1_CUDA  (0) 2021.09.01
09_Memory_Active_Warp_CUDA  (0) 2021.09.01
07_GPU_HardWare_CUDA  (0) 2021.08.30
06_Where_is_Thread_CUDA  (0) 2021.08.30
05_How_Kernel_Works_CUDA  (0) 2021.08.30

+ Recent posts