|
1 | | -# OPMark (Prototype of OpenPerf Project) |
| 1 | +# OpenPerf Project |
2 | 2 |
|
3 | | -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. |
| 3 | +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). |
4 | 4 |
|
5 | | -## Candidate Benchmark Programs |
| 5 | +# How to use |
6 | 6 |
|
7 | | -[stress-ng - GPL 2.0 Licence](https://github.com/ColinIanKing/stress-ng) |
| 7 | +This project is planning to integrate with [YSYX's workbench](https://github.com/OSCPU/ysyx-workbench) and [NJU ProjectN](https://github.com/NJU-ProjectN). |
8 | 8 |
|
9 | | -[Anybench - MIT Licence](https://github.com/EntityFX/anybench) |
10 | | - |
11 | | -### Memory access patterns |
12 | | - |
13 | | -#### Stream access |
14 | | - |
15 | | -[STREAM - Custom Licence, but Open Source friendly](https://github.com/jeffhammond/STREAM) |
16 | | - |
17 | | -[RRZE-HPC/TheBandwidthBenchmark - MIT Licence](https://github.com/RRZE-HPC/TheBandwidthBenchmark?tab=readme-ov-file) |
18 | | - |
19 | | -#### Other patterns |
20 | | - |
21 | | -[emilk/ram_bench - No Licence](https://github.com/emilk/ram_bench) |
22 | | - |
23 | | -### Integer Arithmetic |
24 | | - |
25 | | -[shaswata56/BenchUtil - WTFPL license](https://github.com/shaswata56/BenchUtil?tab=readme-ov-file) |
26 | | - |
27 | | -### Floating-point Arithmetic |
28 | | - |
29 | | -[shaswata56/BenchUtil - WTFPL license](https://github.com/shaswata56/BenchUtil?tab=readme-ov-file) |
30 | | - |
31 | | -### Branch Prediction |
32 | | - |
33 | | -Verilator Model |
34 | | - |
35 | | -## Run Built-in QEMU VM |
36 | | - |
37 | | -A Nix Flake is provided for convenience, but not necessary dependency in the final project. |
38 | | - |
39 | | -With Nix installed, run `nix develop` to get the reproducible development environment. |
40 | | - |
41 | | -Run `vm` to launch QEMU. |
42 | | - |
43 | | -## How to compile & run programs in Spike |
44 | | - |
45 | | -With `just` installed, run `just compile` then `just run` in the program source code directory. |
46 | | - |
47 | | -Or you can run commands manually. `Justfile` is extremely easy to read and understand. |
48 | | - |
49 | | -## Development Environment & Testing |
| 9 | +To use openperf in baseline practice, clone it into your project's [AbstractMachine Kernels](https://github.com/NJU-ProjectN/am-kernels). |
50 | 10 |
|
51 | 11 | ```sh |
52 | | -cd am-kernel # This project would be a submodule in am-kernel when it's finish |
53 | | -git clone git@github.com:Yakkhini/OPMark.git |
54 | | -cd OPMark |
55 | | -# git switch [branch] # Maybe you want to contribute to another branch |
56 | | -cp -r src/common/stdio.c $AM_HOME/klib/src/stdio.c # We improve printf functions feature, like print float numbers |
57 | | -cd src/linpack # Run a sub program to ensure build system working |
58 | | -make ARCH=riscv32-nemu run |
| 12 | +cd am-kernels |
| 13 | +git clone git@github.com:OSCPU/openperf.git |
| 14 | +cd openperf |
| 15 | +make ARCH= ... # NOTICE: `...` is not a part of the make command and you need to write it by yourself. |
59 | 16 | ``` |
60 | 17 |
|
61 | | -## Transplanted |
62 | | - |
63 | | -* Memory Access: STREAM |
| 18 | +The make recipe just like other benchmark programs in `am-kernel` that you can decide the Architectures and the test scale. |
| 19 | + |
| 20 | +## Benchmark Programs |
| 21 | + |
| 22 | +<!-- [stress-ng - GPL 2.0 Licence](https://github.com/ColinIanKing/stress-ng) --> |
| 23 | +<!----> |
| 24 | +<!-- [Anybench - MIT Licence](https://github.com/EntityFX/anybench) --> |
| 25 | +<!----> |
| 26 | +<!-- ### Memory access patterns --> |
| 27 | +<!----> |
| 28 | +<!-- #### Stream access --> |
| 29 | +<!----> |
| 30 | +<!-- [STREAM - Custom Licence, but Open Source friendly](https://github.com/jeffhammond/STREAM) --> |
| 31 | +<!----> |
| 32 | +<!-- [RRZE-HPC/TheBandwidthBenchmark - MIT Licence](https://github.com/RRZE-HPC/TheBandwidthBenchmark?tab=readme-ov-file) --> |
| 33 | +<!----> |
| 34 | +<!-- #### Other patterns --> |
| 35 | +<!----> |
| 36 | +<!-- [emilk/ram_bench - No Licence](https://github.com/emilk/ram_bench) --> |
| 37 | +<!----> |
| 38 | +<!-- ### Integer Arithmetic --> |
| 39 | +<!----> |
| 40 | +<!-- [shaswata56/BenchUtil - WTFPL license](https://github.com/shaswata56/BenchUtil?tab=readme-ov-file) --> |
| 41 | +<!----> |
| 42 | +<!-- ### Floating-point Arithmetic --> |
| 43 | +<!----> |
| 44 | +<!-- [shaswata56/BenchUtil - WTFPL license](https://github.com/shaswata56/BenchUtil?tab=readme-ov-file) --> |
| 45 | +<!----> |
| 46 | +<!-- ### Branch Prediction --> |
| 47 | +<!----> |
| 48 | +<!-- Verilator Model --> |
| 49 | +<!----> |
| 50 | + |
| 51 | +* Stream Memory Access: STREAM |
| 52 | +* Irregular Memory Access: mcf |
| 53 | +* Float Memory: GEMM |
| 54 | +* Footprint: Gsim and essent which verilate various RISC-V processor cores like riscv-mini, Nutshell, Rocket Core, BOOM and XiangShan |
| 55 | +* Branch Prediction: TCC |
64 | 56 | * Floating-point Arithmetic: Linpack, Whetstone |
65 | 57 | * Utils: soft-fp(cyl), abstract-machine, openlibm |
66 | | -* Can build: Spike, RISC-V OpenOCD |
67 | 58 |
|
68 | | -## Roadmap |
| 59 | +## Ranking (Coming Soon) |
| 60 | + |
| 61 | +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. |
| 62 | + |
| 63 | +## Contribute Guide |
| 64 | + |
| 65 | +### Roadmap |
69 | 66 |
|
70 | | -- [x] Run Configurable Linux on QEMU RISC-V Platform |
71 | | -- [x] Basic Benchmark Programs |
72 | | -- [x] Math Library |
73 | | -- [x] GEMM |
74 | | -- [x] Organize Build Scripts |
75 | | -- [x] More Complex Programs |
76 | | -- [ ] Embedded into am-kernel |
77 | | -- [ ] Handle with Licence |
78 | | -- [ ] Merge into single benchmark program |
79 | | -- [ ] Decide OpenPerf Project File Struct |
| 67 | +- [x] Transplant benchmark programs |
| 68 | +- [ ] Test the sensitivity of different programs |
| 69 | +- [ ] Early Access |
0 commit comments