MARSSx86 + DRAMSim2 Simulator 설정

1. DRAMSim2 사용을 위해 소스 코드가 수정된 MARSSx86을 다운로드한다.

$git clone git://github.com/dramninjasUMD/marss.dramsim.git
$ls
marss.dramsim

2. DRAMSim2 소스 코드를 다운로드한다.

$git clone https://github.com/dramninjasUMD/DRAMSim2.git
$ls
DRAMSim2 marss.dramsim

3. DRAMSim2 library를 빌드한다.

$cd DRAMSim2
$make libdramsim.so

4. MARSSx86을 빌드한다.

$cd ./../marss.dramsim
$scons -Q c=1 dramsim=/path/to/DRAMsim2

kvm.c:(.text+0x1ed6): undefined reference to `BIT’ 에러가 발생할 수 있다.

qemu/libqemu_common.a(misc.o): In function `slirp_connection_info':
misc.c:(.text+0x917): warning: memset used with constant zero length parameter; this could be due to transposed parameters
qemu/target-i386/kvm.o: In function `kvm_arch_init_vcpu':
kvm.c:(.text+0x1ed6): undefined reference to `BIT'
kvm.c:(.text+0x1ee5): undefined reference to `BIT'
kvm.c:(.text+0x1f60): undefined reference to `BIT'
kvm.c:(.text+0x2111): undefined reference to `BIT'
kvm.c:(.text+0x2181): undefined reference to `BIT'
qemu/target-i386/kvm.o:kvm.c:(.text+0x21f1): more undefined references to `BIT' follow
collect2: error: ld returned 1 exit status
scons: *** [qemu/qemu-system-x86_64] Error 1

qemu/hw/eepro100.c에 선언되어 있는 #define BIT를 qemu/qemu-common.h 로 이동해 해결할 수 있다[2].

References :
[1] MARSSx86 with DRAMSim2, dramninjasUMD, https://github.com/dramninjasUMD/DRAMSim2/wiki/MARSSx86-with-DRAMSim2
[2] Unable to successfully run scons due to undefined reference to BIT in kvm.c, https://github.com/dramninjasUMD/DRAMSim2/issues/42

Advertisements
Tagged with: , , ,
Posted in 2) Computer Engineering
8 comments on “MARSSx86 + DRAMSim2 Simulator 설정
  1. yuik says:

    안녕하세요, marss.dramsim을 검색하다가 들리게 된 한 사람입니다. 갑작스럽게 죄송하지만, 한 가지 질문을 하고 싶어서 이렇게 글 남깁니다. 작성자님께서 시뮬레이터 여러개 쓰시는 것 같으신데, 한 마디 조언 받아보고 싶습니다. 제가 marss.dramsim을 사용하다 qemu창을 열어서 사용하는 것이 아니라, run_bench.py를 사용하고자 하는데, marss에서 기본적으로 제공하는 parsecROI.img를 qcow2로 전환하고, 이후 util의 create_checkpoint.py를 수정하여 checkpoint 생성을 정상적으로 완료했다는 메시지를 봤습니다. 이후에 util.cfg를 작성하고, 기본적인 simconfig 명령어를 입력하고 ./util/run_bench.py parsec-roi -d bench_out 이렇게 했는데, 시뮬레이션이 돌아가는게 아니라 “char device direction to dev/pts/6” 메시지 이후에 바로 writing to output file completed 하고 시뮬레이션이 그냥 끝나버리더군요. 결과 파일을 보니 facesim.log(제가 single_core에서 facesim 한개로만 해봤습니다,)라는 파일에서 ITLB, DTLB에 ffff ffff ffff ffff 이렇게 까지만 되고 돌질 않은거 같습니다. 또 marss.dramsim에 dramsim.log가 떠있길래 확인해보니 잠깐 돌다가 만 듯한 몇개의 ACT/ PRE 명령만 있었구요..혹시 이 문제가 무엇인지 아시는지 여쭙고 싶습니다. marss-devel 돌아다녔을 때 보이질 않아서 결국 여기에 이렇게 질문드려봅니다.

    • gumdaeng says:

      시뮬레이션이 시작되자마자 끝난다는 말씀이시지요. 세 가지 가능성이 있습니다. 체크포인트 생성 오류, 수정한 코드에서의 오류, 원래 marss 코드에서의 오류입니다. 설명만 들었을 때 가장 가능성이 높아보이는 것은 체크포인트 생성 오류입니다. 체크포인트를 생성할 때에는 “./create_checkpoint ; 벤치마크 명령어; ./stop_sim”의 순서로 명령어를 넣게 됩니다. ./create_checkpoint 시점에서 가상 머신에 체크포인트가 생성되며 종료됩니다. 따라서 체크포인트를 불러와 다시 실행할 때에는 “벤치마크 명령어 ; ./stop_sim”이 남아서 실행되고 있어야 합니다. 실험 명령어가 아닌, qemu 명령어로 VM의 checkpoint를 실행한 다음, top 명령어로 확인해보았을 때 facesim이 실행되고 있는지 확인해보시기 바랍니다. 만약 실행되고 있지 않다면 checkpoint가 잘못 생성된 것입니다.

      • yuik says:

        아.. 정말 감사합니다. 체크 포인트가 문제였네요. create_checkpoint.py가 아니라 직접 qemu 켜서 만들었더니 run_bench.py로 돌렸을 때 되는군요.. 검댕님 덕분입니다. 정말 감사합니다. 한참을 해맸는데, 뭔가 막힌 것이 확 뚫린 것처럼 해결됐네요.. 마지막으로 딱 한가지만 더 여쭤보고 싶은게 있습니다. marss-devel에서는 이 run_bench.py로 멀티코어 시뮬레이션을 할 수 있다고 본거 같은데, 맞는 것인가요?

        다시 한번 말씀드리지만 정말 감사합니다. 새해 복 많이 받으시고, 하시는 일마다 무탈하길 바랍니다.

        • gumdaeng says:

          해결되었다니 다행입니다. 멀티코어 시뮬레이션이라면, 1) 멀티코어로 설정된 가상 머신을 말씀하시는 것인가요? 아니면 2) 멀티코어로 가속한 시뮬레이션을 이야기하시는 것인가요? 제가 해본 바로는 멀티코어로 설정된 가상 머신 실험은 가능하지만, 멀티코어로 가속한 시뮬레이션은 안 됩니다. 멀티코어로 설정된 가상 머신이더라도 물리적으로는 싱글 코어를 사용해 실험하게 됩니다. 쓴지 오래되어 잘 기억은 안 나지만, run_bench.py에서 여러 개의 코어를 지정할 수 있다는 것은, 여러 개의 checkpoint를 동시에 (물리적 코어 수만큼) 실행할 수 있다는 의미였던 것 같습니다.

          • yuik says:

            제가 말씀드린 것은 marss.dramsim에서 config 파일에있는 ooo코어와 같이 멀티코어를 설정해놓고, 그리고 체크포인트된 디스크들과 run_bench.py를 이용해서 하는 멀티코어 실험을 말씀드렸던 것입니다. 아무래도 말씀을 들어보니 실제로 멀티로 돌리는것은 아니고 멀티코어라는 설정아래에서 순서대로 체크포인트들을 돌리는 것 같군요. 감사합니다.

            • gumdaeng says:

              MARSS 를 사용한지 오래되어 기억이 잘 나지 않습니다. 확실한 것은, 멀티 코어를 사용해 빠르게 실험하는 것은 가능하지 않았습니다. 멀티 코어를 사용해 여러 개의 체크포인트를 실행하는 것만 가능했습니다.

  2. Anonymous says:

    $cd ./../marss.dramsim
    이명령어가 맞는지 궁금합니다 그대로썻는데 ㅠㅠ

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

누적 방문자 수
  • 88,257 hits
%d bloggers like this: