일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- pygraphviz 설치 오류
- CUDA
- linux c 컴파일
- pyverilog 설치 오류
- gpgpu-sim
- Data HAzard
- linux c++ 컴파일
- linux makefile 작성
- CLOCK GATING
- gcc 컴파일
- DNN Accelerator
- 클럭 게이팅
- 이진수 곱셈 알고리즘
- Pyverilog 튜토리얼
- Design DNN Accelerator
- CDC
- 딥러닝 가속기
- AMBA
- Pyverilog 실행
- Makefile compile
- 데이터 해저드
- makefile
- Pyvrilog tutorial
- 남산업힐
- DNN 가속기
- Pyverilog 설치
- 대구 반도체 설계기업 특화
- pytest-pythonpath 설치 오류
- 컨벌루션 연산
- systolic array
- Today
- Total
오늘은 맑음
GPGPU-SIM 파악한 내용 정리 본문
작년에 하던 내용이라 가물가물 하네요...
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에 들어있습니다.
마지막으로 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 |