[GPGPU Series 1] Index of Articles

대학원을 다니면서 GPGPU-Sim을 사용하여 GPU에 대한 공부와 연구를 진행하였다. 그래서 GPU에 실행되도록 작성된 General Purpose on GPU (GPGPU) Application이 GPU에 어떻게 동작하는지 조금은 이해하고 있다. 항상 영어 사이트의 내용을 번역하는 수준으로 블로그 글을 쓰다가 우연히 OpenGL/Vulkan 등의 API로 작성된 Application이 GPU에서 실행되는 방법을 정리한 Article을 찾을 수 있었다. Article을 읽은 후 나도 한번은 아는 지식으로 블로그 글을 작성해보고 싶어졌다. 그래서 CUDA로 작성된 GPGPU Application이 GPU에서 동작하는 방법에 대한 내용을 조금은 상세하게 작성할 계획이다. 아래는 중요하다고 생각하는 주제를 정리해보았다. 가능하다면 정해진 주제 순서대로 글을 작성할 계획이다. 만약, 중간에 중요하다고 생각하는 부분이 추가되면 주제 리스트를 업데이트할 예정이다.

  1. Index of Articles (Link)
    • 글을 작성한 이유와 글의 순서를 정리한 부분이다.
  2. General Purpose on GPUs (Link)
    • General Purpose on GPUs (GPGPUs)에 대한 설명이다.
  3.  GPU Architecture Overview (Link)
    • NVIDIA GPU의 구조에 대한 설명이다. Streaming Multiprocessor (SM), Streaming Processor (SP), Memory Controller 등에 대한 설명이다.
  4. Thread Hierarchy on GPGPU Application (Link)
    • CUDA로 작성된 GPGPU Application은 Grid, Thread Block을 사용하여 총 실행해야 하는 Thread 개수를 정하게 된다. 이러한 부분은 Thread Hierarchy라고 정의하였고 이에 대한 설명이다.
  5. Scheduling Thread Blocks (Link)
    • Thread Block이 SM에 Scheduling 되는 방법에 대한 설명이다.
  6. Thread Block to Warps (Link)
    • Thread Block의 Thread가 Warp 단위로 나누어지는 과정에 대한 설명이다.
  7. Warp Execution (Link)
    • Warp가 SM에서 실행되는 방법에 대한 설명이다.
  8. Branch Divergence (Link)
    • Warp의 Thread들은 같은 Instruction을 실행하게 되으로 발생하는 Branch Divergence에 대한 설명이다.
  9. Memory Hierarchy on GPU (Link)
    • GPU의 메모리 계층 구도에 대한 설명이다. CPU와 달리 GPU는 큰 Register File 사이즈를 가지며, 상대적으로 작은 Cache 공간을 가진다.
  10. Programmable Cache (Scratchpad Memory) (Link)
    • GPU는 성능 최적화를 위해서 Programmable Cache를 포함하고 있다. Programmable Cache에 대한 설명이다.

우선 위와 같이 10개의 글을 블로그에 작성할 계획이다. 각 글이 너무 길어지면 2~3개로 나누어서 작성할 계획이다. 추가로 가능하면 모든 출처를 같이 정리할 계획이다. 하지만, 너무 오랜 시간 공부를 하면서 출처를 정리하지 않아서 모든 출처를 포함하지 않을 수도 있다.

출처 

  1. https://fgiesen.wordpress.com/category/graphics-pipeline/page/2/
  2. https://developer.nvidia.com/content/life-triangle-nvidias-logical-pipeline

Leave a Comment