GPGPU Simulation - 2부

GPGPU Simulation - 2부

지난번에 소개한 GPGPU Simulation 의 실제 예를 보여주겠다.

GPGPU-sim

gpgpu-sim 홈페이지에 가보면, 메뉴얼을 보고 코드를 다운 받을 수 있다.
리눅스에서 설치 및 실행이 가능하고, CUDA는 최신 버전을 지원하지 않는다....

간단하게 돌린 예를 한번 보여드림.

커널이 끝난 후의 결과이다.
커널이 총 몇개의 instruction 인지 몇 cycle이나 걸렸는지를 비롯하여, 어느 부분에서 stall 이 많이 생겼는지, cache 에 몇번 접근하고 얼마나 miss가 나고 등등... 많은 것들을 알 수 있다.

이 외에도 실행 중에 몇번 코어에서 뭐가 실행되었는지 부터 시작하여 엄청나게 많은 정보들을 알 수 있다.
자세한 것들은 메뉴얼을 보면 알 수 있다.

이 예는 GTX480의 스펙을 기준으로 가상의 GPU를 만들어서 시뮬레이션 했다.
다른 GPU 모델에 맞추어 시뮬레이션이 가능하고, 실존하지 않는 GPU 모델을 디자인하여 시뮬레이션 하는 것도 가능하다.
예를 들면, L2 cache 사이즈를 비정상적으로 크게 늘려서 얼마나 좋아지는지 실험해 볼 수 있다.
시뮬레이터 코드를 뜯어 고치면, 모든 것을 다 디자인하여 실험해 보는 것이 가능하다.

이 실험은 intel core i7-3xxx CPU 에서 돌렸는데, 뭐 데탑기준 거의 제일 빠른 CPU라고 할 수 있고, 약 2시간 45분 걸렸다.
결과에서 알 수 있듯이, 시뮬레이션 결과는 2646313 cycle, 1GHz GPU으로 돌리면 0.02초 이다.
시뮬레이션은 이렇게나 오래걸린다ㅠㅠㅠ

GPUwattch

GPUWattch는 GPGPU-sim 과 연동하여 사용 가능한 전력소모 시뮬레이션이다.
GPGPU-sim 을 실행할 때 GPUwattch를 같이 연동하여 실행하면 소비 전력을 볼 수 있다.

결과는 대충 이런 식으로 나오는데, 소모 전력의 최대, 최소, 평균치가 나오고 각 부분별로 얼마나 되는 지 결과가 나온다.

GPGPU-sim 과 마찬가지로 시뮬레이션에 옵션들을 줄 수 있는데, 예를 들면 우리가 실험하는 GPU의 공정을 설정해줄수있다.
28nm 공정으로 생산되었는지 혹은 45nm 공정으로 생산되었는지.

하지만, 시뮬레이션 어디까지나 가상의 실험이다.
실제 수행과는 차이가 있을 수 있으니 유의하자.