Skip to content

PARSEC http://parsec.cs.princeton.edu/ 3.0-beta-20150206 ported to Ubuntu 19.04 and with proper version control and SPLASH2 ported to Buildroot 2017.08 cross compilation (ARM, MIPS, etc.). This repo intends to support all build types and benchmarks, pull requests will be actively tested and merged.

License

Notifications You must be signed in to change notification settings

ppeetteerrs/gem5-RISC-V-PARSEC

 
 

Repository files navigation

1 Setup

./configure

2 Usage

# Change BENCHMARKS, SIMSIZES, BENCHMARKS_OUT in env.sh accordingly
source env.sh
./get-inputs
build

Copy benchmark outputs to disk image, see Benchmark Guide.

Inside the disk image, navigate to the benchmark's directory and run ./run.sh <N> where <N> is the number of threads to run on. By default, m5 stats within the ROI will be dumped to <gem5_logs>/stats.txt each time a benchmark is run.

Note: If you are using WSL, you might need to modify env.sh to manually set xxPARSECDIRxx to your parsec directory.

Note: Currently, ./bin/benchmarks.py sets the output directory to /tmp. If desired, change it to a permanent location but remember to configure bootargs to be read-write, such as --command-line="console=ttyS0 root=/dev/vda rw", when running gem5 RISC-V FS. There are also some benchmarks that directly writes to the input file (e.g. freqmine). In that case, either boot with a read-write filesystem as mentioned or move the input file to /tmp and modify run.sh accordingly.

3 Benchmark Status

benchmark compilation run error
blackscholes
bodytrack known to fail (see base repo)
canneal
dedup
facesim segmentation fault
ferret error in findBasicVariables
fluidanimate
freqmine
raytrace known to fail (see base repo)
streamcluster
swaptions
vips known to fail (see base repo)
x264 cannot link m5 library

4 Changes Made

4.1 Build Configurations

By default, ./bin/build uses ``gcc-hooks.bldconfto dump m5 stats. To usegcc.bldconf`, just remove the `-c gcc-hooks` option.

  • gcc.bldconf: Set up binary home directory and compilation and linker flags.
  • gcc-hooks.bldconf: Add m5 library to compiler and linker flags (include m5 header and m5 pseudo-instructions static library).
  • env.sh: Set up host and target information (editing it will mess up paths and compilation, do it with caution)

4.2 Helper Scripts

  • ./bin/build: One command build script
  • ./bin/gen.py: Copy data and benchmark scripts and generate run commands
  • ./bin/benchmarks.py: Benchmark information

4.3 Other Changes

  • PARSEC hooks are linked to m5 instructions in pkgs/libs/hooks/src/hooks.c
  • RISC-V atomic instructions are added to canneal via pkgs/kernels/canneal/src/atomic/atomic.h and pkgs/kernels/canneal/src/atomic/riscv/atomic.h.

About

PARSEC http://parsec.cs.princeton.edu/ 3.0-beta-20150206 ported to Ubuntu 19.04 and with proper version control and SPLASH2 ported to Buildroot 2017.08 cross compilation (ARM, MIPS, etc.). This repo intends to support all build types and benchmarks, pull requests will be actively tested and merged.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C 58.7%
  • HTML 16.3%
  • C++ 11.9%
  • Makefile 3.4%
  • Shell 2.6%
  • Assembly 2.1%
  • Other 5.0%