Voro++
Voro++ is a C++ library for cell-based 3D Voronoi tessellation. Stock EESSI Voro++/0.4.6-GCCcore-14.3.0 is built -march=rv64gc only; we rebuild from upstream for a compiler-flag A/B on the Orange Pi RV2.
Benchmark source: opensolvers/benchmarks/voro++.
Change one variable. Same source / problem size; only
-march/-ftree-vectorizediffers.
Bottom line: GCC does emit RVV in
cell.o(309 RVV-ish insns), but wall time is ~0.99× vs novec — flat / slightly slower. Useful negative control next to waLBerla SoA auto-vec wins.
Results (2026-08-21)
N=20 000 cells, best of several reps. Checksums match (VVOL=1, FACES=297872).
| Variant | Flags | cell.o RVV-ish |
best ms |
|---|---|---|---|
| novec | -O3 -march=rv64gc -fno-tree-vectorize |
0 | 1244.8 |
| gcv | -O3 -march=rv64gcv -ftree-vectorize |
309 | 1261.6 (0.99×) |
Interpretation: Voro++ is irregular — per-cell plane cuts, short variable-length loops, pointer-heavy. Auto-vec emits instructions without paying off.
Contrast contiguous SoA wins in waLBerla and sparse regressions in OpenFOAM.
Measured: 2026-08-21 on Orange Pi RV2.