Skip to content

Latest commit

 

History

History
79 lines (50 loc) · 2.37 KB

README.md

File metadata and controls

79 lines (50 loc) · 2.37 KB

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

stress-ng - GPL 2.0 Licence

Anybench - MIT Licence

Memory access patterns

Stream access

STREAM - Custom Licence, but Open Source friendly

RRZE-HPC/TheBandwidthBenchmark - MIT Licence

Other patterns

emilk/ram_bench - No Licence

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 [email protected]: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