GPGPU Simulation - 1부

GPGPU Simulation - 1부
Simulation

Simulation을 이용하면 GPU없이 CPU만으로도 CUDA (OpenCL) 코드를 돌려볼 수 있다. (물론 emulation 만으로도 가능하다.)
CPU 에서 GPU의 동작을 소프트웨어로 구현 simulator 들이 있다.
대표적으로 gpgpu-simmulti2sim 이 있다.
Verilog로 구현되어 CPU가 아닌 FPGA에서 GPU를 직접 구워볼수 있는 miaowgpu 도 있다.

Simulation의 용도

이러한 simulation은 사실 GPU가 없는 사람을 위한 것은 아니다.
실제 GPU에서 돌리면 1초 짜리가 simulation하면 너무 오래걸린다. (하루 이상 걸리는 경우도 있다.)
보통 2가지 정도 용도로 쓰인다.

  • CUDA (OpenCL) 프로그램의 최적화를 위하여 실제 GPU 중 bottleneck 이 어디인지 조사
  • GPU architecture 개선을 위한 실험

첫번째 항목의 경우 NVIDIA 에서 제공하는 profiler를 통해 cache miss 같은 간단한 정보들을 알 수 있는데, Simulator에서는 더 자세한 정보들을 알 수 있다. (Cycle by Cycle 로 모든 정보가 추적 가능하다.)
물론 실제 GPU와는 차이가 있기 때문에 정보가 정확하지는 않다. 최신 CUDA버전은 지원 되지도 않고....

두번째 항목이 사실 가장 많이 쓰이는 용도라고 볼 수 있는데, 실제 GPU를 개선하기 위하여 매번 하드웨어 칩을 찍어볼 수는 없는 노릇이다. 그래서 소프트웨어를 통해 하드웨어를 변환해보고 실험한다.
이는 CPU, DRAM 도 마찬가지이다. 위에 소개한 Multi2sim의 경우는 CPU와 GPU 모두 가능한 시뮬레이터 이다.

다음번에는 GPGPU 시뮬레이션의 실제 사용 예를 소개하도록 하겠다.