User Tools

Site Tools


start

Getting Started

gem5-gpu, like gem5, uses mercurial for version control. A short guide to mercurial can be found here. A much longer, exhaustive coverage of mercurial can be found in the hg book, available online here.

Since gem5-gpu builds off of other projects, rather than fork gem5 and GPGPU-Sim, we make heavy use of mercurial patch queues. For more information, see the hg book chapter on patch queues: http://hgbook.red-bean.com/read/managing-change-with-mercurial-queues.html.

Required Software

Since we build off of gem5, all of the dependencies of gem5 are also dependencies of gem5-gpu. It is suggested that before you try to compile gem5-gpu you compile a copy of gem5 to ensure these baseline dependencies are met. gem5 dependencies can be found here, and more gem5 information can be found here.

One dependency in addition to the gem5 dependencies is a CUDA installation to have access to nvcc and header files. When you have CUDA installed, export the following environment variable used during gem5-gpu build:

export CUDAHOME=/path/to/your/cuda/install/cuda

The versions of software we have used to test gem5-gpu are listed here. Deviations from the tested versions may cause errors.

Create directory

  • mkdir gem5-gpu
  • cd gem5-gpu

Clone gem5 and gem5-patches

You’ll need the gem5 revision found here. This revision is the latest that is known to work with gem5-gpu.

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

Clone GPGPU-Sim and GPGPU-Sim patches (2 separate options)

A) The easy way (recommended):

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 ../

B) To have full control of GPGPU-Sim (harder):

If you would like to test extensions to the PTX ISA, you may need to modify the Lex+Yacc ISA parser in GPGPU-Sim to enable these extensions. In order to do this, you will need to generate your own ISA parser source code within the GPGPU-Sim code base. Below are instructions for setting up gem5-gpu using the full GPGPU-Sim source to allow for these ISA modifications.

You’ll need the “gpgpu-sim-sha” found here. NOTE: If you setup GPGPU-Sim from the public git server instead of pulling from our repositories, you may not be able to submit review requests to our GPGPU-Sim patches repository

git clone git://dev.ece.ubc.ca/gpgpu-sim gpgpu-sim-complete
cd gpgpu-sim-complete
git checkout <gpgpu-sim-sha>
    # This updates GPGPU-Sim the latest version that works with gem5-gpu
cd v3.x
source setup_environment release
make
cd ../../
ln -s gpgpu-sim-complete/v3.x/src gpgpu-sim
cd gpgpu-sim
hg init
cd .hg/
hg clone http://gem5-gpu.cs.wisc.edu/repo/gpgpu-sim-patches patches
cd ../
hg add
hg ci -m “Initializing GPGPU-Sim Mercurial base”
hg qpush -a
cd ../

Clone gem5-gpu glue code

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

Build

Below are quick start commands to build and run gem5-gpu with the x86 CPU ISA. For building and running gem5-gpu with the ARM32 CPU ISA, see instructions here: ARM32 Support.

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

You can also build using the pre-defined build options files (found in gem5-gpu/build_opts) as follows:

cd gem5
scons build/X86_VI_hammer_GPU/gem5.opt --default=../../../gem5-gpu/build_opts/X86_VI_hammer_GPU EXTRAS=../gem5-gpu/src:../gpgpu-sim/

Running gem5-gpu

gem5-gpu is run the same way as gem5. Here is an example of how to run with syscall emulation mode (requires that you build benchmarks per instructions here):

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

The configuration file se_fusion.py constructs a simulated system with CPU and GPU cores, and the benchmark runs on the “bare metal” simulated hardware. To see the full set of options supported by se_fusion.py, run the following:

build/X86_VI_hammer_GPU/gem5.opt ../gem5-gpu/configs/se_fusion.py --help

Syscall emulation mode is limited to simulating benchmarks that call a restricted subset of system calls implemented in gem5. However, gem5-gpu also support full-system simulation, which allows for booting an operating system and running multiprocess and multithreaded workloads.

To run gem5-gpu in full-system mode, the following command will boot Linux (assuming you have setup a kernel and disk image per gem5 instructions). We may release disk images in the future, so if you are interested, please email the list.

build/X86_VI_hammer_GPU/gem5.opt ../gem5-gpu/configs/fs_fusion.py
start.txt · Last modified: 2015/03/23 10:35 by powerjg