You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: boards/F3.md
+6Lines changed: 6 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -4,6 +4,12 @@ The Banana Pi BPI-F3 is built on the SpaceMiT **K1** SoC: eight **SpacemiT X60**
4
4
5
5
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.
6
6
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
+
7
13
## HPL
8
14
9
15
See also the [HPL app overview](../apps/hpl.html).
Copy file name to clipboardExpand all lines: boards/RV2.md
+17-1Lines changed: 17 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -2,6 +2,22 @@ The Orange Pi RV2 is built on the SpaceMiT **K1** SoC: eight **SpacemiT X60** co
2
2
3
3

4
4
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 |
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
+
5
21
## HPL via EESSI
6
22
7
23
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/) `
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 |
19
35
20
36
**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.
0 commit comments