gem5-gpu Installation

gem5-gpu는 modular full system simulator인 gem5와 gpgpu simulator인 gpgpu-sim 두 개를 합한 시뮬레이터이다. gem5-gpu를 빌드하는 방법은 gem5-gpu wiki에 잘 나와있다 (gem5-gpu wiki – Getting Started, Benchmarks). 설명이 잘 되어있지만, 개인적으로 어려움을 겪었기에 정리해본다.

1. gem5-gpu가 의존성을 갖는 패키지들 설치
우선 gem5-gpu가 필요로 하는 소프트웨어를 설치해야 한다. 이 때, 버전을 유의해야 한다. Gem5-gpu가 잘 동작하는 버전은 gem5-gpu Status에 기술되어 있다. 본인은 다음과 같은 환경으로 맞추었더니, gem5-gpu를 빌드할 수 있었다. CUDA(3.2 x86 64bit), gcc/g++(4.4.7), python(2.7.3), scons(2.1.0), swig(2.0.4)

CUDA를 설치한다.

$wget http://developer.download.nvidia.com/compute/cuda/3_2_prod/toolkit/cudatoolkit_3.2.16_linux_64_ubuntu10.04.run
$chmod +x ./cudatoolkit_3.2.16_linux_64_ubuntu10.04.run
$sudo ./cudatoolkit_3.2.16_linux_64_ubuntu10.04.run
$export CUDAHOME="/usr/local/cuda"
$export PATH=$PATH:"/usr/local/cuda/bin"
$export LD_LIBRARY_PATH="/usr/local/cuda/lib64"

gcc, g++을 설치한다.

$sudo apt-get install gcc-4.4 g++-4.4
$sudo mv /usr/bin/gcc-4.4 /usr/bin/gcc
$sudo mv /usr/bin/g++-4.4 /usr/bin/g++

Python을 설치한다.

$wget https://www.python.org/ftp/python/2.7.3/Python-2.7.3.tgz
$tar -xvf ./Python-2.7.3.tgz
$cd Python-2.7.3
$./configure
$sudo make install
$cd ..

scons를 설치한다.

$wget http://sourceforge.net/projects/scons/files/scons/2.1.0/scons-2.1.0.tar.gz/download?use_mirror=jaist -O scons-2.1.0.tar.gz
$tar -xvf ./scons-2.1.0.tar.gz
$cd scons-2.1.0
$sudo python ./setup.py install

swig를 설치한다.

$sudo apt-get install libpcre3 libpcre3-dev
$wget http://downloads.sourceforge.net/project/swig/swig/swig-2.0.4/swig-2.0.4.tar.gz?use_mirror=jaist -O swig-2.0.4.tar.gz
$tar -xvf ./swig-2.0.4.tar.gz
$cd swig-2.0.4
$./configure
$make
$sudo make install
$cd ..

그 외 필요한 것들을 설치한다.

$sudo apt-get install zlib1g-dev bison libgoogle-perftools-dev protobuf-compiler libprotobuf-dev

2. gem5-gpu 소스 코드 다운로드 및 빌드
Gem5-gpu 소스 코드를 다운로드하기 이전에, mercurial 설정을 해주어야 한다. 설정하지 않으면 qclone 명령어와 qpush 명령어를 사용하는 중에 에러가 발생한다.

~/.hgrc에 다음과 같은 내용을 추가한다.

[extensions]
mq=

[ui]
username = gumdaeng <gumdaeng@gumdaeng.com>

이제 소스 코드를 다운받고, 빌드하면 된다.
먼저 gem5 소스 코드를 다운받는다.

$hg qclone http://repo.gem5.org/gem5 -p http://gem5-gpu.cs.wisc.edu/repo/gem5-patches
$cd gem5/
$hg update -r 10237
$hg qpush -a
$cd ../

다음으로 gpgpu-sim 소스 코드를 다운받는다.

$hg qclone http://gem5-gpu.cs.wisc.edu/repo/gpgpu-sim -p http://gem5-gpu.cs.wisc.edu/repo/gpgpu-sim-patches
$cd gpgpu-sim
$hg qpush -a
$cd ../

마지막으로 gem5-gpu glue code를 다운받는다.

$hg clone http://gem5-gpu.cs.wisc.edu/repo/gem5-gpu

다음 명령어로 gem5-gpu를 빌드할 수 있다.

$cd gem5
$scons build/VI_hammer/gem5.opt --default=X86 EXTRAS=../gem5-gpu/src:../gpgpu-sim/ PROTOCOL=VI_hammer GPGPU_SIM=True

3. Benchmark 다운로드 및 빌드
Benchmark를 빌드하기 위해서는 추가로 CUDA SDK를 설치해야 한다.

$wget http://developer.download.nvidia.com/compute/cuda/3_2_prod/sdk/gpucomputingsdk_3.2.16_linux.run
$chmod +x ./gpucomputingsdk_3.2.16_linux.run
$./gpucomputingsdk_3.2.16_linux.run

다음으로 환경 변수를 설정해준다.

$export NVIDIA_CUDA_SDK_LOCATION="/home/gumdaeng/NVIDIA_GPU_Computing_SDK/C"

이제 benchmark를 다운받는다.

$hg clone https://gem5-gpu.cs.wisc.edu/repo/benchmarks/

libcuda를 빌드한다.

$cd ./benchmarks/libcuda
$make CUDAHOME=/usr/local/cuda-3.2/

여러 종류의 벤치마크 중에 rodinia backprop을 빌드하는 경우, 다음과 같이 빌드할 수 있다.

$cd rodinia/backprop
$make gem5-fusion

다음 명령어로 rodinia backprop 벤치마크를 gem5-gpu에서 실행할 수 있다.

$build/VI_hammer/gem5.opt ../gem5-gpu/configs/se_fusion.py -c /path/to/your/benchmarks/rodinia/backprop/gem5_fusion_backprop -o 16

References:
[1] gem5-gpu: A Heterogeneous CPU-GPU Simulator, Jason Power, Joel Hestness, Marc S. Orr, Mark D. Hill, David A. Wood. Computer Architecture Letters vol. 13, no. 1, Jan 2014
[2] gem5-gpu wiki, https://gem5-gpu.cs.wisc.edu/wiki/
[3] gem5-gpu wiki – Getting Started, https://gem5-gpu.cs.wisc.edu/wiki/start
[4] gem5-gpu wiki – Benchmarks, https://gem5-gpu.cs.wisc.edu/wiki/benchmarks

Advertisements
Tagged with: , , , , , , , , , , ,
Posted in 2) Computer Engineering

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

누적 방문자 수
  • 98,786 hits
%d bloggers like this: