resources: Upgrade scripts of gapbs to python3

Signed-off-by: Hoa Nguyen <>
Change-Id: I3260037ceb513b6d376c8c70402cc8719e94f34d
Reviewed-by: Bobby R. Bruce <>
Maintainer: Bobby R. Bruce <>
Tested-by: Bobby R. Bruce <>
5 files changed
tree: a2bb790b992f5fbe5da346b0579bc63b37446adb
  1. .gitignore
  3. src/

gem5 Resources

This repository contains the sources needed to compile the gem5 resources. The compiled resources are found in the gem5 resources bucket, Though these resources are not needed to compile or run gem5, they may be required to execute some gem5 tests or may be useful when carrying out specific simulations.

The structure of this repository is as follows:

The following sections outline our versioning policy, how to make changes to this repository, and describe each resource and how they may be built.


We ensure that for each version of the gem5 source there is a corresponding version of the gem5-resources, with the assumption that version X of the gem5 source will be used with version X of the gem5-resources. The gem5-resources repository contains two branches, develop and master. The master branch's HEAD points towards the latest gem5 resources release, which will be the same version id as the that of the latest gem5 source. E.g., if the latest release of gem5 is v20.2.0.0, then the latest release of gem5-resources will be v20.2.0.0, with the HEAD of its master branch tagged as v20.2.0.0. Previous versions will be tagged within the master branch. Past versions gem5-resources can thereby be checked out with git checkout <VERSION>. A complete list of versions can be found with git tag. The develop branch contains code under development and will be merged into the master branch, then tagged, as part of the next release of gem5. More information on gem5 release procedures can be found here. Any release procedures related to the gem5 source can be assumed to be applicable to gem5-resources.

The compiled resources for gem5 can be found under{VERSION}. E.g. compiled resources for gem5 v20.2.0.0 are under and are compiled from gem5-resources v20.2.0.0. is kept in sync with the develop branch, and therefore should not be depended upon for stable, regular usage.

Note: Resource files for gem5 v19.0.0.0, our legacy release, can be found under

Making Changes

Changes to this repository are made to the develop branch via our Gerrit code review system. Therefore, to make changes, first clone the repository checkout the develop branch:

git clone
git checkout --track origin/develop

Then make changes and commit. When ready, push to Gerrit with:

git push origin HEAD:refs/for/develop

The change will then be reviewed via our Gerrit code review system. Once fully accepted and merged into the gem5-resources repository, please contact Bobby R. Bruce to have the compiled sources uploaded to the gem5 resources bucket.


These requirements, their prerequisites, and installation instructions have been written with the assumption that they shall be installed on an x86 Ubuntu 18.04 system. Installation instructions may differ across other systems.

RISC-V GNU Compiler Toolchain

The RISC-V GNU Compiler Toolchain is needed to cross-compile to the RISCV-V ISA infrastructure.


sudo apt-get install autoconf automake autotools-dev curl python3 libmpc-dev \
libmpfr-dev libgmp-dev gawk build-essential bison flex texinfo gperf libtool \
patchutils bc zlib1g-dev libexpat-dev


git clone --recursive
cd riscv-gnu-toolchain
./configure --prefix=/opt/riscv --enable-multilib
sudo make linux

Ensure /opt/riscv/bin is added to the PATH environment variable.

GNU ARM-32 bit Toolchain

The GNU ARM-32 bit toolchain is required to cross compile to the ARM-32 bit ISA.


The toolchain may be installed via the apt-get package manager:

sudo apt-get install git++-arm-linux-gnueabihf

GNU ARM-64 bit Toolchain

The GNU ARM-64 bit toolchain is required to cross compile to the ARM-64 bit ISA.


The toolchain may be installved via the apt-get package manager:

sudo apt-get install g++-aarch64-lunux-gnu

Resource: RISCV Tests


Revision: 19bfdab48c2a6da4a2c67d5779757da7b073811d

Local: src/riscv-tests


make riscv-tests

The output of this compilation can be found at output/test-progs/riscv-tests/

Resource: Insttests


make insttests

The output of this compilation can be found in output/test-progs/insttest/bin/riscv/linux/

Resource: PThreads


make pthreads

This will compile the pthread binaries for the RISCV, ARM-32, ARM-64, and X86 ISAs. Specific ISA compilations can be obtained via the following commands:

make pthreads-aarch32
make pthreads-aarch64
make pthreads-riscv64
make pthreads-x86

The output of these compilations can be found in output/test-progs/pthreads

Resource: Square


make square

The output of this compilation can be found at output/test-progs/square/

Resource: SPEC-2006 tests

Contains scripts to create a disk image and to run SPEC-2006 tests on gem5. Instructions on how to use these scripts can be found here src/spec2006-tests/

Resource: GAP Benchmark Suite (GAPBS) tests

GAPBS is a graph processing benchmark suite and it contains 6 kernels: Breadth-First Search, PageRank, Connected Components, Betweenness Centrality, Single-Source Shortest Paths, and Triangle Counting.

src/gapbs contains resources to build a GAPBS disk image which may be used to run the benchmark on gem5 X86 simulations. src/gapbs/ contains build and usage instructions.

The pre-built GAPBS disk image can be found here:


Each project under the src is under a different license. Before using any compiled binary, or modifying any source, please consult the corresponding project's license.

  • riscv-tests : src/riscv-tests/LICENSE.
  • insttests : Consult individual copyright notices of source files in src/insttests.
  • pthreads: Consult individual copyright notices of source files in src/pthreads.
  • square: Consult individual copyright notices of source files in src/square.
  • spec2006-tests: SPEC-2006 requires purchase of benchmark suite from SPEC thus, it cannot be freely distributed. Consult individual copyright notices of source files in src/spec2006-tests.
  • gapbs: Consult individual copyright notices of source files in src/gapbs.