Skip to content

Commit

Permalink
doc: bump readme to new version
Browse files Browse the repository at this point in the history
  • Loading branch information
Yakkhini committed Dec 1, 2024
1 parent 1b095a1 commit 6416789
Showing 1 changed file with 57 additions and 67 deletions.
124 changes: 57 additions & 67 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,79 +1,69 @@
# OPMark (Prototype of OpenPerf Project)
# 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.
OpenPerf is an open source benchmark aims to test the performance of the microarchitechture in processor core, developed and be mantained by [One Student One Chip Project](https://ysyx.org).

## Candidate Benchmark Programs
# How to use

[stress-ng - GPL 2.0 Licence](https://github.com/ColinIanKing/stress-ng)
This project is planning to integrate with [YSYX's workbench](https://github.com/OSCPU/ysyx-workbench) and [NJU ProjectN](https://github.com/NJU-ProjectN).

[Anybench - MIT Licence](https://github.com/EntityFX/anybench)

### Memory access patterns

#### Stream access

[STREAM - Custom Licence, but Open Source friendly](https://github.com/jeffhammond/STREAM)

[RRZE-HPC/TheBandwidthBenchmark - MIT Licence](https://github.com/RRZE-HPC/TheBandwidthBenchmark?tab=readme-ov-file)

#### Other patterns

[emilk/ram_bench - No Licence](https://github.com/emilk/ram_bench)

### Integer Arithmetic

[shaswata56/BenchUtil - WTFPL license](https://github.com/shaswata56/BenchUtil?tab=readme-ov-file)

### Floating-point Arithmetic

[shaswata56/BenchUtil - WTFPL license](https://github.com/shaswata56/BenchUtil?tab=readme-ov-file)

### 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
To use openperf in baseline practice, clone it into your project's [AbstractMachine Kernels](https://github.com/NJU-ProjectN/am-kernels).

```sh
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
cd am-kernels
git clone [email protected]:OSCPU/openperf.git
cd openperf
make ARCH= ... # NOTICE: `...` is not a part of the make command and you need to write it by yourself.
```

## Transplanted

* Memory Access: STREAM
The make recipe just like other benchmark programs in `am-kernel` that you can decide the Architectures and the test scale.

## Benchmark Programs

<!-- [stress-ng - GPL 2.0 Licence](https://github.com/ColinIanKing/stress-ng) -->
<!---->
<!-- [Anybench - MIT Licence](https://github.com/EntityFX/anybench) -->
<!---->
<!-- ### Memory access patterns -->
<!---->
<!-- #### Stream access -->
<!---->
<!-- [STREAM - Custom Licence, but Open Source friendly](https://github.com/jeffhammond/STREAM) -->
<!---->
<!-- [RRZE-HPC/TheBandwidthBenchmark - MIT Licence](https://github.com/RRZE-HPC/TheBandwidthBenchmark?tab=readme-ov-file) -->
<!---->
<!-- #### Other patterns -->
<!---->
<!-- [emilk/ram_bench - No Licence](https://github.com/emilk/ram_bench) -->
<!---->
<!-- ### Integer Arithmetic -->
<!---->
<!-- [shaswata56/BenchUtil - WTFPL license](https://github.com/shaswata56/BenchUtil?tab=readme-ov-file) -->
<!---->
<!-- ### Floating-point Arithmetic -->
<!---->
<!-- [shaswata56/BenchUtil - WTFPL license](https://github.com/shaswata56/BenchUtil?tab=readme-ov-file) -->
<!---->
<!-- ### Branch Prediction -->
<!---->
<!-- Verilator Model -->
<!---->

* Stream Memory Access: STREAM
* Irregular Memory Access: mcf
* Float Memory: GEMM
* Footprint: Gsim and essent which verilate various RISC-V processor cores like riscv-mini, Nutshell, Rocket Core, BOOM and XiangShan
* Branch Prediction: TCC
* Floating-point Arithmetic: Linpack, Whetstone
* Utils: soft-fp(cyl), abstract-machine, openlibm
* Can build: Spike, RISC-V OpenOCD

## Roadmap
## Ranking (Coming Soon)

One Student One Chip Project is planning to build a rank for students! You can run OpenPerf with your NEMU or NPC to figure out the performance, and compare to others.

## Contribute Guide

### Roadmap

- [x] Run Configurable Linux on QEMU RISC-V Platform
- [x] Basic Benchmark Programs
- [x] Math Library
- [x] GEMM
- [x] Organize Build Scripts
- [x] More Complex Programs
- [ ] Embedded into am-kernel
- [ ] Handle with Licence
- [ ] Merge into single benchmark program
- [ ] Decide OpenPerf Project File Struct
- [x] Transplant benchmark programs
- [ ] Test the sensitivity of different programs
- [ ] Early Access

0 comments on commit 6416789

Please sign in to comment.