The Banana Pi BPI-F3 is built on the SpaceMiT K1 SoC: eight SpacemiT X60 cores at 1.6 GHz (rv64gcv, RVV 1.0, VLEN=256), integrated IMG BXE-2-32 GPU (OpenCL 3.0 / Vulkan 1.3), 3.7 GB RAM — same chip as the Orange Pi RV2, but half the memory.
Video: Quantum ESPRESSO on BPI-F3 — stock BLAS MPI_ABORT → 1.31×

Compute paths on this board
Same K1 silicon as the Orange Pi RV2 — scalar, RVV, IME, and integrated GPU (identical compute features; half the RAM).
Cross-board confirmation from opensolvers/benchmarks: same gemv_n bug, same easyconfigs#26444 fix, bit-identical residuals where measured. Newer probes below reuse RV2-built binaries where noted.
IME (Integer Matrix Extension)
Same K1 / X60 silicon as the Orange Pi RV2 — SpaceMiT’s IME int8 matrix unit (smt.vmadot) on cluster 0 only (cores 0–3, 512 KB shared L2). Toolchain: RV2 IME — xsmtvdot.
Measured on this board (make board, EESSI GCC 14.3, taskset -c 0, bit-exact vs scalar at every size). Clean-layout peaks (max over ≥5 launches):
| M×N×K | Scalar | RVV int8 | IME (8×16) | IME/RVV |
|---|---|---|---|---|
| 256³ | 1.93 | 6.13 | 34 | 5.5× |
| 512³ | 2.00 | 6.62 | 40 | 6.1× |
| 768×768×512 | 1.99 | 6.49 | 45 | 6.9× |
| 1024×1024×512 | 1.97 | 6.44 | 36 | 5.5× |
IME is ~6–7× RVV int8 and crests near 45 GOP/s at 768³ — same conclusion as the RV2 (~42 GOP/s peak there). Source: benchmarks/ime.
GPU (PowerVR BXE-2-32)
Same K1 / BXE-2-32 silicon as the RV2. Vendor OpenCL/Vulkan userspace is allowlisted for BXM-4-64 only — GPGPU on BXE is closed; the open Mesa pvr route needs a kernel rebuild and is deferred. Full write-up: RV2 GPU · benchmarks/gpu.
HPL
See also the HPL app overview.
HPL.dat (N=8000, 1×8), EESSI 2025.06-001. Larger configs (HPL_big.dat, HPL-sweep.dat) were skipped — they need 6.6 GB / 3.2 GB and exceed this board’s 3.7 GB RAM.
| Backend | GFLOP/s | Residual | Result |
|---|---|---|---|
| Stock EESSI RVV (unpatched) | 11.64 | nan |
FAILED |
Scalar (RISCV64_GENERIC) |
6.52 | 4.63e-03 | PASSED |
Patched RVV (gemv_n fix) |
11.52 | 4.04e-03 | PASSED |
1.77× scalar → patched vector; patched residual is bit-identical to the RV2.
Other BLAS-axis probes (patched RVV vs scalar)
| Probe | Scalar | Patched RVV | Speedup |
|---|---|---|---|
| DGEMM N=2048, 1 core | 1.26 GFLOP/s | 2.96 GFLOP/s | 2.35× |
| DGEMM N=4096, 8 threads | — | 17.71 GFLOP/s | — |
| NumPy DGEMM N=4096 | 4.91 GFLOP/s | 17.51 GFLOP/s | 3.6× |
NumPy eigvalsh N=2048 |
9.59 s | 5.94 s | 1.6× |
ELPA na=3000 |
50.42 s | 34.83 s | 1.45× |
QE si-super-64.in (PWSCF, nbnd=272) |
144.8 s | 110.3 s | 1.31× |
ScaLAPACK PDSYEV na=3000, 2×4 |
106.00 s | stock RVV HANG | — |
Stock unpatched RVV: HPL, ELPA, and Quantum ESPRESSO fail (nan / SCF abort); NumPy eigvalsh raises LinAlgError; ScaLAPACK hangs (same gemv_n story as the RV2).
BLIS vs OpenBLAS
Same BLIS rv64iv build vs stock CVMFS OpenBLAS 0.3.30 (no local patched OpenBLAS on this image). Details: BLIS.
| Threads | N | BLIS | OpenBLAS 0.3.30 | BLIS/OB |
|---|---|---|---|---|
| 1 | 4096 | 3.08 | 2.89 | 1.07× |
| 8 | 4096 | 10.34 | 10.96 | 0.94× |
verify_ctrsm: 2400/2400, worst residual 2.55×10⁻⁷ — identical to the RV2.
FFTW RVV (r5v)
Same RV2-built r5v/scalar libfftw3 binaries, tests/bench MEASURE. Details: FFTW.
| Size | MEASURE r5v / scalar | Speedup |
|---|---|---|
| 256 | 2518 / 1576 | 1.60× |
| 1024 | 1634 / 1273 | 1.28× |
| 4096 | 1276 / 1033 | 1.24× |
| 65536 | 723 / 741 | 0.98× |
Matches the RV2 within a few percent on cache-resident sizes.
GROMACS FFT axis
Same md.tpr + RV2-built libfftw3f, serial. Details: GROMACS.
| Activity | Scalar | r5v | Speedup |
|---|---|---|---|
PME 3D-FFT |
19.965 s | 17.513 s | 1.14× |
Force (control) |
803.54 s | 803.83 s | 1.00× |
Energy Δ vs scalar 0.11%. Same dilution story as the RV2 (Force ≈ 90%).
LAMMPS (RVV-Kokkos)
Same RV2 overlay lmp binary, five upstream bench/ inputs. Details: LAMMPS.
| Bench | Best mode | vs serial |
|---|---|---|
lj / eam |
Kokkos/OpenMP | 5.66× / 6.29× |
chain / chute / rhodo |
MPI | 4.75× / 4.11× / 5.10× |
Same mode ranking as the RV2. Hand RVV LJ microbench on this board: 1.57× vs scalar (Kokkos).