본문 바로가기

Some tips

GEM5 FS mode 구동

2017 작성한 자료 옮김.

 

2년 전에 비해 리눅스에 대한 이해가 조금 올라간 상태에서 다시 gem5 설치법을 구현하고자 함

 

HPCA 유튜브 강연을 토대로 정리함

https://www.youtube.com/watch?v=5UT41VsGTsg

 

1. 다운로드하여 원하는 아키텍처에 대해 빌드

$ sudo apt-get install g++ python scons swig zlib1g-dev m4 python-dev

$ git clone https://gem5.googlesource.com/public/gem5

$ cd gem5

$git checkout hpca

$ scons build/X86/gem5.opt -j5

 

scons는 make와같은 다른종류의 컴파일 시스템

X86은 원하는 아키텍처로서 build_opt 폴더안에 사용가능한 아키텍처가 있음

 

 

2. 파일 수행하기

심플스칼라의 ./sim-outorder 와 같이 시뮬레이터 프로그램은 build/X86/gem5.opt 이다.

뒤에는 config파일이 붙는다.

 

예)

./build/X86/gem5.opt config/myscripts/simple.py

 

SE모드는 OS(linux)의 시스템콜을 부른다. (No OS runs는 무슨 뜻이지...)

 

 

3. 캐쉬 추가하기

http://learning.gem5.org/book/part1/cache_config.html

캐쉬 수정은 src/mem/cache/Cache.py 이다.

configration script도 수정해야한다.

 

 

4. 결과물

ls m5out 하면,

 

config.ini : SimObjects에 사용된 파라메터들을 모두 보여주고 뭐를 시뮬레이트 했는지 나옴

config.json : 위와 같음. 다만 json 형식

stats.txt : 시뮬레이션결과. 상세한 시뮬레이션 결과물을 보여줌

 

 

src/python/m5/simulate.py

cd src/hpca

 

 


 

컴파일 후 실행파일 돌리는 단순 예제


 

1) c코드를 작성하고나서 컴파일하여 바이너리파일 생성

  gcc -static tests/test-progs/hello/src/hello.c -o tests/test-progs/hello/bin/x86/linux/hello

 

2) 실행테스트

  ./tests/test-progs/hello/bin/x86/linux/hello

 

3) 에뮬레이션모드로 해당 파일 수행

 build/X86/gem5.opt configs/example/se.py -c tests/test-progs/hello/bin/x86/linux/hello

 

실행확인

 

 

 


실전 예제


 

 

시뮬레이션 단위인 SimObject에 대해 자세히 알아봐야 함

 

1) Python class 생성 (클래스는 여기서 관리하는듯...)

2) C++로 구조 구현 (로직은 여기서 하는듯...?)

3) SimObject와 C++파일을 등록

4) gem5 재빌드

5) config script 생성

 

 

1~3 ) 구현

src/ ~ 에 서

object.py 파일을 생성한다

class 선언하고 타입, 헤더를 정의한다.( 헤더는 header.hh)

class HelloObject(SimObject):

  type = 'HelloObject'  <-이건 C++ 클래스 이름이란다

 

 

object.hh 생성

헤더는 동일하게 클래스 선언하고 상속 넣어주고......포함관계가 상당히 복잡하네

 

object.cc 생성

HelloObjectParams::create() //반드시 선언하란다

Python(.py)가 C++ object를 생성하는 과정

 

 

Sconscript 생성

아래 내용이 포함됨

Import(*) //걍 포함

SimObject('object.py') // 파이썬파일이 Simobject를 포함한다고 얘기해줌.

Source ('object.cc') // Scons가 g++이용해서 어떤파일 컴파일할지 알려줌

 

 

4 ) 재빌드

다시 기본경로로 돌아가서 빌드한다.

> scons build/X86/gem5.opt

 

 

5 ) config파일 생성

vi configs/~~.py

import m5

from m5.objects import *

 

작성 예시

root = Root()

root.full_system = false

root.hello_kgb = HelloObject()

m5.instantiate()

print "Beginning "

 

exit_event = m5.simulate()

 

 

./build/X86/gem5.opt configs/~~.py

 

 

 

 

 

 

'Some tips' 카테고리의 다른 글

인터넷 느림, ping 기본 검사방법 메모  (0) 2021.01.14
su , bash Permission Denied  (0) 2020.12.28
GEM5 FS mode 구동  (0) 2020.12.28
Sniper Simulator 설치  (0) 2020.12.28
[Anaconda/Win10] TF기반 YoloV4 학습/테스트  (0) 2020.12.27