./configure# Change BENCHMARKS, SIMSIZES, BENCHMARKS_OUT in env.sh accordingly
source env.sh
./get-inputs
buildCopy 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.
| 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 |
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)
./bin/build: One command build script./bin/gen.py: Copy data and benchmark scripts and generate run commands./bin/benchmarks.py: Benchmark information
- 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.handpkgs/kernels/canneal/src/atomic/riscv/atomic.h.