오늘은 맑음

GPGPU-SIM 파악한 내용 정리 본문

GPGPU-SIM

GPGPU-SIM 파악한 내용 정리

자전거 타는 구구 2020. 7. 24. 09:51
반응형

작년에 하던 내용이라 가물가물 하네요...

 

1. GPGPU-SIM 어플리케이션 수행

GPGPU-SIM 세팅을 완료 하셨다면 pwd, 예를 들면, 저는 Home directory에 gpgpu-sim_distribution 폴더가 있습니다.

gpgpu-sim_distribution 안에 GTX480폴더가 있는데 실제로 어플리케이션을 수행하기 위해서는 이 안에 있는 세 가지 파일이 필요합니다.

 

-config_fermi_islip.icnt, gpgpusim.config, gpgpuwattch_gtx480.xml

 

여기서 gpgpusim.config파일은 gpgpu-sim 홈페이지에 있는 config메뉴얼을 보시면서 숫자를 바꿔가면서 GPU 내부의 옵션을 변경해 주실 수 있습니다.

 

2. GPGPU-SIM 내부 코드 수정

GPGPU-SIM 내부 코드는 gpgpu-sim_distribution 안의 src폴더 내부에 있습니다.

여기에는 cuda-sim, gpgpu-sim, gpuwattch, intersim2등이 있습니다.

src폴더 안에는 디버그파일이나 파서, 추상 하드웨어 모델과 같이 gpgpu를 감싸고 있는 소스등이 있는 것 같습니다.

cuda-sim은 cuda파일을 gpu가 이해할 수 있는 언어인 ptx코드로 바꿔주는 파일들이 모여있는 것 같습니다.

이 외에 gpuwattch와 intersim2등은 사용해보진 않았지만 gpuwattch는 gpgpu-sim 홈페이지에서 보면 에너지 모델을 볼 수 있다고 합니다. 즉 GPU의 파워리포트를 볼 수 있다는 의미인 것 같은데 어플리케이션을 컴파일하면서 나오는 파워리포트가 이를 통해서 나오는 것 같습니다

 

GPU 내부 코드를 손보기 위해서는 gpgpu-sim으로 들어가셔야 합니다.

내부에는 많은 코드들이 들어있는데 파일 명이 알아보기 쉽게 되어 있습니다.

 

shader같은 경우에는 gpu의 shader core의 기능을 하는 소스 가 있으며 L1 cache의 소스 역시 들어있습니다.

L2cache는 l2cache라는 폴더 안에 들어있습니다. 하지만 L1, L2 캐시의 config는 gpu-cache에서 지정됩니다.

 

icnt_warpper는 메뉴얼에서도 볼 수 있듯이 inter connect network 소스입니다.

이 외에도 scoreboard, mem_fetch와 dram 모델 등의 소스가 들어있습니다.

 

내부에서 사용하는 파라미터

wid : warp id

sid : shader id

tpc : texture processor cluster id

위의 파라미터를 추적하면 shader core와 warp이 어떻게 동작하는지 알아볼 수 있습니다

 

컴파일 된 후 kernel에 나왔던 텍스트들은 stdout.txt파일에 들어있습니다.

파워리포트는 gpgpusim_power_report_date에 들어있습니다.

LeNet5 수행 결과

마지막으로 cuda로 작성해서 실행한 LeNet5 수행 결과입니다.

ispassbenchmark의 NN은 20여분이 걸렸는데 1분 18초정도 걸리네요

 

출력화면에서 나오는 cache access관련 코드는 shader.cc에 있습니다.

fprintf가 출력이므로 이 키워드로 추적하면 보실 수 있습니다.

 

그리고 중간중간 출력되는 cycle수와 수행 시간은 gpu-sim.cc에서 void gpgpu_sim::cycle()에서 출력하게 되어있으며 보고싶지 않으시면 주석처리하시면 됩니다.

 

또한 출력되는 shader정보는 shader.cc에 정의되어있습니다.

 

shader.cc와 l2cache.cc쪽을 자세히 보시면 cache access를 알아볼 수 있으며 접근하는 address도 출력해볼 수 있습니다.

 

반응형

'GPGPU-SIM' 카테고리의 다른 글

GPGPU-SIm에서 L2 cache disalbe하기  (0) 2019.02.20
GPGPU-SIM에서 benchmark 실행해보기  (3) 2019.02.18
GPGPU-Sim 사용해보기  (0) 2019.01.28
GPGPU-Sim 설치  (2) 2019.01.28
Comments