Skip to content

Commit 465c7ae

Browse files
authored
Merge pull request #21 from opensolvers/site-updates
Document X60 IME on RV2 and BPI-F3
2 parents aa398c8 + ca58ba9 commit 465c7ae

3 files changed

Lines changed: 24 additions & 1 deletion

File tree

boards/F3.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,12 @@ The Banana Pi BPI-F3 is built on the SpaceMiT **K1** SoC: eight **SpacemiT X60**
44

55
Cross-board confirmation from [opensolvers/benchmarks](https://github.com/opensolvers/benchmarks): same `gemv_n` bug, same [easyconfigs#26444](https://github.com/easybuilders/easybuild-easyconfigs/pull/26444) fix, bit-identical residuals where measured.
66

7+
## IME (Integer Matrix Extension)
8+
9+
Same K1 / X60 silicon as the Orange Pi RV2 — each chip has SpaceMiT's **IME** int8 matrix unit (`smt.vmadot`) on **cluster 0** (cores 0–3, **512 KB shared L2**). The IME is separate from RVV: one instruction accumulates a **4×4 int32** tile from **4×8 int8** operands.
10+
11+
Detailed `ime-bench` numbers were measured on the [RV2](RV2.html) (peak **~42 GOP/s** int8 GEMM vs ~5 GOP/s RVV int8, **~7–8×**). The BPI-F3 has the same IME hardware; pin to core 0 when running [benchmarks/ime](https://github.com/opensolvers/benchmarks/tree/main/ime). Useful for int8 / quantised inference stacks (e.g. llama.cpp's `GGML_CPU_RISCV64_SPACEMIT` backend).
12+
713
## HPL
814

915
See also the [HPL app overview](../apps/hpl.html).

boards/RV2.md

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,22 @@ The Orange Pi RV2 is built on the SpaceMiT **K1** SoC: eight **SpacemiT X60** co
22

33
![](rv2.png)
44

5+
## IME (Integer Matrix Extension)
6+
7+
Besides RVV, each X60 core cluster exposes SpaceMiT's **IME** — a dedicated **int8 matrix unit** via the custom instruction `smt.vmadot`. One `vmadot` fuses a **4×4 int32** tile update from two **4×8 int8** operand tiles; this is the hardware behind the part's quoted AI TOPS rating.
8+
9+
On the K1 the IME sits in **cluster 0 only** (cores **0–3**), with those four cores sharing a **512 KB L2**. Pin IME workloads to a cluster-0 core (`taskset -c 0`).
10+
11+
Microbenchmarks in [opensolvers/benchmarks/ime](https://github.com/opensolvers/benchmarks/tree/main/ime) (`ime-bench`): pure `s8s8s32` GEMM, bit-exact vs a scalar reference, timed against a plain RVV int8 baseline on this board (core 0, 1.6 GHz):
12+
13+
| M×N×K | RVV int8 | IME (`smt.vmadot`) | IME / RVV |
14+
| ----- | -------- | ------------------ | --------- |
15+
| 512×512×512 | 5.2 GOP/s | **39 GOP/s** | **7.5×** |
16+
| 768×768×512 | ~5.2 GOP/s | **42 GOP/s** (peak) | **8.1×** |
17+
| 1024×1024×512 | 5.2 GOP/s | **32 GOP/s** | 6.2× |
18+
19+
Peak **~42 GOP/s** single-core — vs ~5 GOP/s for a straightforward RVV int8 path. llama.cpp ships an X60 IME backend (`GGML_CPU_RISCV64_SPACEMIT`) for block-scaled Q4 inference; see also [papers/x60-ime-block-scale-optimization](https://github.com/opensolvers/benchmarks/blob/main/papers/x60-ime-block-scale-optimization.md) in the benchmarks repo.
20+
521
## HPL via EESSI
622

723
See also the [HPL app overview](../apps/hpl.html).
@@ -13,9 +29,9 @@ End-to-end on real Orange Pi RV2 hardware using [EESSI](https://www.eessi.io/) `
1329
| | Before | After |
1430
| --- | ------ | ----- |
1531
| HPL (8 cores, N=20000, 2×4) | ~8.5 GFLOP/s, **FAILED** (`nan`) | **10.53 GFLOP/s**, **PASSED** |
32+
| Residual (N=8000, 1×8) | `nan` | 4.04e-03 |
1633

1734
With the fixed backend, scalar-vs-RVV A/B ([benchmarks/hpl](https://github.com/opensolvers/benchmarks/tree/main/hpl)): **6.41 → 11.55 GFLOP/s** (N=8000, 1×8) and **7.38 → 13.41 GFLOP/s** (N=28672, 1×8).
18-
| Residual (N=8000, 1×8) | `nan` | 4.04e-03 |
1935

2036
**Before** — stock EESSI OpenBLAS 0.3.30 (RVV `gemv_n` bug). **After** — fixed OpenBLAS built with `TARGET=RISCV64_ZVL256B` and a backported `gemv_n` patch ([easyconfigs#26444](https://github.com/easybuilders/easybuild-easyconfigs/pull/26444)), swapped in via FlexiBLAS — no HPL rebuild.
2137

website.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ Nav config: `_config.yml` (`navigation`, `navigation_boards`, `navigation_apps`,
4444

4545
| Date | Decision |
4646
|------|----------|
47+
| 2026-07-14 | IME (X60 `smt.vmadot`) section on RV2 and BPI-F3 board pages |
4748
| 2026-07-14 | Add dedicated DGEMM and NumPy scientific-lib pages from benchmarks repo |
4849
| 2026-07-14 | BPI-F3 results from `opensolvers/benchmarks`: HPL 11.52 GFLOP/s, 3.7 GB RAM limit |
4950
| 2026-07-12 | Homepage scope widened: scientific libs + apps, not HPL-only |

0 commit comments

Comments
 (0)