No description
.gitea/workflows | ||
src | ||
.gitignore | ||
LICENCE | ||
Makefile | ||
README.md |
OPMark (Prototype of OpenPerf Project)
This Flake give a Qemu RISC-V Linux / Spike bare metal runtime to run benchmark, aim to make test environment reproducible and result fair enough.
Candidate Benchmark Programs
Memory access patterns
Stream access
STREAM - Custom Licence, but Open Source friendly
RRZE-HPC/TheBandwidthBenchmark - MIT Licence
Other patterns
Integer Arithmetic
shaswata56/BenchUtil - WTFPL license
Floating-point Arithmetic
shaswata56/BenchUtil - WTFPL license
Branch Prediction
Verilator Model
Run Built-in QEMU VM
A Nix Flake is provided for convenience, but not necessary dependency in the final project.
With Nix installed, run nix develop
to get the reproducible development environment.
Run vm
to launch QEMU.
How to compile & run programs in Spike
With just
installed, run just compile
then just run
in the program source code directory.
Or you can run commands manually. Justfile
is extremely easy to read and understand.
Development Environment & Testing
cd am-kernel # This project would be a submodule in am-kernel when it's finish
git clone git@github.com:Yakkhini/OPMark.git
cd OPMark
# git switch [branch] # Maybe you want to contribute to another branch
cp -r src/common/stdio.c $AM_HOME/klib/src/stdio.c # We improve printf functions feature, like print float numbers
cd src/linpack # Run a sub program to ensure build system working
make ARCH=riscv32-nemu run
Transplanted
- Memory Access: STREAM
- Floating-point Arithmetic: Linpack, Whetstone
- Utils: soft-fp(cyl), abstract-machine, openlibm
- Can build: Spike, RISC-V OpenOCD
Roadmap
- Run Configurable Linux on QEMU RISC-V Platform
- Basic Benchmark Programs
- Math Library
- GEMM
- Organize Build Scripts
- More Complex Programs
- Embedded into am-kernel
- Handle with Licence
- Merge into single benchmark program
- Decide OpenPerf Project File Struct