RISC-V Distros

AI software

Only what has public evidence: official repos, vendor docs, trustworthy measurements

QEMU virt (virtual machine)

QEMU-emulated rv64 (vlen=256, RVV 1.0)
  • llama.cpp Works Upstream builds run with qemu-riscv64 -cpu max,vlen=256; SpacemiT's docs give the full command to run llama-cli in QEMU. Functional validation only — the speed means nothing. github.comraw.githubusercontent.com
  • onnxruntime Partial build_riscv64.sh uses QEMU to validate cross-compiled artifacts; it runs, but very slowly. raw.githubusercontent.com
  • pytorch Partial The RISE wheels explicitly say they are not built for QEMU; under QEMU you can only check that things work. riseproject.dev
  • opencv Works Runs in emulation; performance figures are meaningless. github.com
  • ncnn Works CI passes on riscv64. github.com

NPU / acceleratorNone (emulation only)

Only for validating compilation and functionality without hardware; it says nothing about performance.

SiFive HiFive Unmatched

SiFive FU740 (4x U74, RV64GC, no V)
  • llama.cpp No public evidence No public Unmatched-specific benchmark found; upstream only ships source (no riscv64 binaries in releases), and U74 has no RVV, so it is scalar-only and expected to be slow. github.comgithub.com
  • onnxruntime Partial Upstream includes an MLAS RVV kernel and tools/scripts/build_riscv64.sh (contributed by SiFive), but there are no riscv64 prebuilt packages, so cross-compile yourself; the RVV kernel targets RVV 1.0. raw.githubusercontent.comgithub.com
  • pytorch Partial PyPI has no riscv64 wheels; RISE provides a torch 2.13.0 manylinux_2_39_riscv64 wheel (needs glibc >= 2.39, e.g. Ubuntu 24.04/Bianbu). riseproject.devpypi.riseproject.dev
  • opencv Works Upstream 4.x supports RISC-V and the RVV HAL; most distros can install it or build it with the RVV backend. No per-board performance validation. github.com
  • ncnn Partial Upstream has linux-riscv64 CI and RVV implementations; U74 has no RVV, so ncnn runs scalar-only. github.comgithub.com
  • tengine Partial tengine-lite provides RVV convolution kernels for risc-v/lp64dv and an rv64-c906 toolchain; only some operators are optimised, so support is experimental. raw.githubusercontent.comgithub.com

NPU / acceleratorNo NPU

ruyi provides OpenBSD/Ubuntu/openKylin/openWrt images; a long-standing ecosystem, but with no AI accelerator.

StarFive VisionFive 2

StarFive JH7110 (4x U74, RV64GC, no V)
  • llama.cpp Partial The community can build and run it, but issue #14926 reports Illegal instruction on the VF2, so set the RVV/CPU build flags correctly; with no V extension it is pure scalar inference and very slow. github.comgithub.com
  • onnxruntime Partial Upstream includes an MLAS RVV kernel and tools/scripts/build_riscv64.sh (contributed by SiFive), but there are no riscv64 prebuilt packages, so cross-compile yourself; the RVV kernel targets RVV 1.0. raw.githubusercontent.comgithub.com
  • pytorch Partial PyPI has no riscv64 wheels; RISE provides a torch 2.13.0 manylinux_2_39_riscv64 wheel (needs glibc >= 2.39, e.g. Ubuntu 24.04/Bianbu). riseproject.devpypi.riseproject.dev
  • opencv Works Upstream 4.x supports RISC-V and the RVV HAL; most distros can install it or build it with the RVV backend. No per-board performance validation. github.com
  • ncnn Partial Upstream has linux-riscv64 CI and RVV implementations; JH7110 has no RVV, so ncnn runs scalar-only. github.comgithub.com
  • tengine Partial tengine-lite provides RVV convolution kernels for risc-v/lp64dv and an rv64-c906 toolchain; only some operators are optimised, so support is experimental. raw.githubusercontent.comgithub.com

NPU / acceleratorNo NPU (GPU/video codec only)

One of the most mature starter boards (ruyi offers Armbian/openEIC/OpenBSD images), but the SoC has no vector extension, so LLMs are "it runs, slowly".

LicheePi 4A

T-HEAD TH1520 (4x C910 @1.85GHz, RV64GCV 0.7.1)
  • llama.cpp Works Sipeed's official wiki has a llama.cpp section: about 6s/token for a 7B model (without the V extension). C910 is RVV 0.7.1, so upstream's RVV 1.0 optimisation path does not apply and it stays scalar. raw.githubusercontent.comgithub.com
  • onnxruntime Partial Upstream's riscv64 MLAS RVV kernel targets RVV 1.0; the TH1520's 0.7.1 vectors can't use it, so it falls back to scalar. raw.githubusercontent.com
  • pytorch Partial RISE wheels need glibc >= 2.39 and are optimised for RVV 1.0; they install on RevyOS/Debian but give no vector acceleration. riseproject.dev
  • opencv Works Works as usual; the RVV HAL has limited 0.7.1 support. github.com
  • ncnn Partial Builds, but the RVV optimisations target 1.0 and degrade to scalar on 0.7.1. github.com
  • tengine Partial tengine-lite ships an rv64-c906 toolchain and RVV convolution kernels built for 0.7.1 cores like the C906/C910, but only some operators are covered. github.com
  • npu-sdk (HHB) Partial The official wiki documents the NPU flow: the T-Head HHB compiler turns ONNX into NPU executables (int8/int16 fixed point) inside a dedicated Docker image; the toolchain is closed source and fixed-point only, so it is unsuitable for LLMs. raw.githubusercontent.com

NPU / accelerator4 TOPS@INT8, vendor closed-source HHB toolchain only (int8/int16 fixed point), no upstream open-source driver

Running an LLM on the CPU works but is slow (~6s/token); the NPU only has the closed T-Head HHB path and cannot run Transformer LLMs.

Milk-V Meles

T-HEAD TH1520 (4x C910 @1.85GHz, RV64GCV 0.7.1)
  • llama.cpp Partial Same TH1520 as the LicheePi 4A and officially supported by RevyOS; llama.cpp follows the same 0.7.1 vector/scalar path (about 6s/token measured on the LPi4A). No Meles-specific public benchmark found. milkv.ioraw.githubusercontent.comrevyos.github.io
  • onnxruntime Partial Same TH1520 story: upstream's RVV kernel targets 1.0, so it degrades to scalar here. raw.githubusercontent.com
  • pytorch Partial RISE wheels install (RevyOS is Debian-based), with no vector acceleration. riseproject.dev
  • opencv Works Works as usual. github.com
  • ncnn Partial Builds, with the RVV optimisations degrading on 0.7.1. github.com
  • tengine Partial The rv64-c906 toolchain matches these cores, covering only some operators. github.com
  • npu-sdk (HHB) Partial Milk-V's specs confirm a 4TOPS@INT8 NPU with TensorFlow/ONNX/Caffe support, but it goes through the closed T-Head toolchain with no open-source driver. milkv.io

NPU / accelerator4 TOPS@INT8 (TH1520), closed-source HHB toolchain

ruyi can flash RevyOS directly (with 4G/8G/16G uboot packages); the AI situation matches the LPi4A.

SpacemiT K3 (Pico-ITX / CoM260)

SpacemiT K3 (A100 cores, RV64GCV + RVV 1.0)
  • llama.cpp Works Upstream llama.cpp has a dedicated build-riscv64-spacemit.md: A100 cores use RISCV64_SPACEMIT_IME2, and the measured qwen3 0.6B Q4_0 reaches pp128 565.8 / tg128 55.8 t/s while qwen3 4B Q4_0 reaches pp128 79.7 / tg128 11.3 t/s (8 threads). raw.githubusercontent.com
  • spacemit-llama.cpp (vendor) Works SpacemiT ships a prebuilt spacemit-llama.cpp.riscv64 (now 0.0.9) with the model library on archive.spacemit.com; Bit-Brick's docs show llama-cli/llama-server usage. archive.spacemit.comdocs.bit-brick.com
  • onnxruntime Works The RVV 1.0 cores fully use upstream's MLAS RVV kernel, but you must build it yourself. raw.githubusercontent.com
  • pytorch Works glibc >= 2.39 distros such as Bianbu can install RISE's torch 2.13.0 riscv64 wheel directly (it is manylinux_2_39_riscv64). riseproject.devpypi.riseproject.dev
  • opencv Works RVV 1.0 plus the RVV HAL — the best combination. github.com
  • ncnn Works RVV 1.0, covered by upstream CI. github.comgithub.com
  • tengine Partial Works, but the optimisations target the 0.7.1 C906 and give little on 1.0. github.com
  • spacemit-ai-sdk Works archive.spacemit.com/spacemit-ai/ offers ModelZoo, llama.cpp, localai, dify and more — one of the most complete vendor AI stacks on RISC-V today. archive.spacemit.com

NPU / acceleratorK3 leans on CPU+AI cores (SpacemiT IME extensions) with no standalone general-purpose NPU programming model; acceleration goes through SpacemiT's proprietary instructions and AI SDK

Currently the most complete AI software stack among RISC-V SBCs: upstream llama.cpp ships its kernels directly.

Zhihe A210 (XuanTie MelonPi dev board)

Zhihe A210 (4x C920 @2.3GHz + 4x C908, RV64GCV)
  • llama.cpp No public evidence No public llama.cpp benchmark on the A210; the C920 is RVV 0.7.1, so upstream's 1.0 optimisation path is unavailable. cnx-software.com
  • onnxruntime No public evidence No public evidence for this board (the chip is new, with upstream support only in 2026). raw.githubusercontent.com
  • pytorch No public evidence No public evidence for this board. riseproject.dev
  • opencv Partial RVV 0.7.1, so scalar/limited vector only; no benchmarks for this board. github.com
  • ncnn No public evidence No public evidence for this board. github.com
  • tengine No public evidence No public evidence for this board. github.com
  • torq-toolkit (vendor) Partial CNX reports: the official Linux SDK plus TORQ-Toolkit handle model conversion and deployment, the NPU supports INT4/INT8/INT16/FP8/FP16/BF16, and DeepSeek-7B is claimed at 8 tok/s; the toolchain is closed and its docs are not publicly available. cnx-software.com

NPU / accelerator12 TOPS@INT8 (supports FP16/BF16/FP8), via the vendor's closed-source TORQ-Toolkit

ruyi already offers Debian/buildroot images for zhihe-a210, but on the AI side there are only vendor claims and no publicly reproducible benchmark.

Canaan K230 (Kendryte K230 / CanMV-K230)

Canaan K230 (C908 + KPU)
  • llama.cpp No public evidence The K230 targets vision inference (KPU) and no public llama.cpp benchmark exists; with 512MB/1GB of RAM an LLM is unrealistic. kendryte.com
  • onnxruntime No public evidence No public evidence (the vendor pushes nncase). kendryte.com
  • pytorch No public evidence No public evidence; not applicable for training. kendryte.com
  • opencv Works The CanMV/K230 SDK includes image processing and a camera pipeline, and OpenCV-style APIs work. kendryte.com
  • ncnn No public evidence No public evidence. kendryte.com
  • nncase + KPU Works kendryte/nncase is the official open-source deep-learning compiler that turns ONNX/TFLite into KPU kmodels; the K230 SDK docs cover the whole AI workflow. github.comkendryte.com

NPU / acceleratorKPU (about 1 TOPS class); kmodels are compiled with nncase, and the driver comes from the vendor SDK (not upstream)

A textbook "strong at vision AI, unsuited to LLMs" board: nncase is open source, but the runtime is still tied to the vendor SDK.

Milk-V Megrez (ESWIN EIC7700X)

ESWIN EIC7700X (4x SiFive P550 @1.8GHz, RV64GBCH)
  • llama.cpp No public evidence The P550 has no RVV and there is no public llama.cpp benchmark on the Megrez; the official AI path is the NPU, not the CPU. milkv.io
  • onnxruntime No public evidence No public evidence. milkv.io
  • pytorch No public evidence No public evidence. milkv.io
  • opencv Partial No RVV, so scalar only; RockOS can install it but there is no public benchmark. github.com
  • ncnn No public evidence No public evidence. github.com
  • ennp-sdk (vendor) Works The ESWIN ENNP platform (closed source) provides EsQuant quantisation, EsAAC compilation and EsSimulator emulation; the official runtime sample gives Qwen2 and DeepSeek-R1 examples on the NPU (apt install es-sdk-sample-npu-qwen, model ZIFENG278/Qwen2-0.5B_ENNP). milkv.iomilkv.io

NPU / accelerator19.95 TOPS@INT8 (INT16/FP16) through the closed-source ENNP SDK, though official Qwen2/DeepSeek-R1 samples exist

Rare on RISC-V in that its NPU can run LLMs and the vendor ships samples; the cost is total lock-in to ESWIN's closed stack.

Milk-V Titan (UltraRISC DP1000)

UltraRISC UR-DP1000 (8x RISC-V RV64GCBH)
  • llama.cpp No public evidence No public llama.cpp benchmark on the Titan; the board is new and ships in small numbers. milkv.io
  • onnxruntime No public evidence No public evidence. milkv.io
  • pytorch No public evidence No public evidence. milkv.io
  • opencv Partial No RVV, so scalar only; no public benchmark. milkv.io
  • ncnn No public evidence No public evidence. milkv.io

NPU / acceleratorNo onboard NPU; it is designed to take a GPU/AI accelerator over PCIe Gen4 x16

Positioned as a Mini-ITX workstation (dual DDR4 ECC up to 64GB, BMC), so AI needs a PCIe card — but there is no public evidence of a working GPU/NPU driver stack on RISC-V yet.

Milk-V Pioneer (SG2042, server-oriented)

Sophgo SG2042 (64x XuanTie C920, RVV 0.7.1)
  • llama.cpp Works arXiv 2503.17422 (V-Seek) optimises LLM inference on the SG2042: DeepSeek R1 Distill Llama 8B / QWEN 14B reach 4.32 / 2.29 token/s generation and 6.54 / 3.68 token/s prefill. Milk-V also has its own InferLLM docs. arxiv.orgmilkv.io
  • onnxruntime Partial 64 cores run in parallel, but RVV 0.7.1 can't use upstream's 1.0 kernel. raw.githubusercontent.com
  • pytorch Partial RISE wheels install, but there is no 0.7.1 vector acceleration. riseproject.dev
  • opencv Works Multi-core scalar works. github.com
  • ncnn Partial Builds, degrading to scalar on 0.7.1. github.com
  • tengine Partial The rv64-c906 kernel targets 0.7.1, covering only some operators. github.com
  • inferllm Works Milk-V's docs cover deploying InferLLM (MegEngine) on the Pioneer. milkv.io

NPU / acceleratorNo NPU (64-core CPU only)

The only RISC-V board with both large memory (up to 128GB) and 64 cores, so 70B-class models fit — but throughput is single-digit token/s.

Orange Pi RV2 (Ky X1)

SpacemiT K1 (8x X60, RV64GCV + RVV 1.0)
  • llama.cpp Works The X60 is the same core as the BPI-F3; upstream's build-riscv64-spacemit.md has an X60 results table (qwen3 0.6B Q4_0: pp128 49.15 / tg128 11.73 t/s). There is also an experimental llama.cpp repo for the Orange Pi RV2. raw.githubusercontent.comgithub.com
  • spacemit-llama.cpp (vendor) Works SpacemiT's prebuilt packages work (same K1 silicon). archive.spacemit.com
  • onnxruntime Works RVV 1.0, upstream kernel usable. raw.githubusercontent.com
  • pytorch Partial glibc >= 2.39 (e.g. Ubuntu 24.04 / recent Armbian) can install RISE wheels; older images have too old a glibc. riseproject.dev
  • opencv Works RVV 1.0 plus the RVV HAL. github.com
  • ncnn Works RVV 1.0, covered by upstream CI. github.comgithub.com
  • tengine Partial Works; the optimisations are not 1.0-specific. github.com

NPU / acceleratorNo standalone NPU (K1's AI comes from SpacemiT's proprietary vector/AI extensions)

ruyi provides an armbian-orangepi-rv2-minimal image; one of the best value boards that genuinely runs LLMs.

Banana Pi BPI-F3 (SpacemiT K1)

SpacemiT K1 (8x X60, RV64GCV + RVV 1.0)
  • llama.cpp Works Upstream llama.cpp's riscv64-spacemit docs give a measured X60 (K1) table and a quantisation support matrix (Q4_0/Q4_1/Q4_K/Q8_0 work); Bit-Brick's docs cover full usage on Bianbu. raw.githubusercontent.comdocs.bit-brick.com
  • spacemit-llama.cpp (vendor) Works SpacemiT's prebuilt spacemit-llama.cpp.riscv64.0.0.4+ (0.0.9 on the archive) supports llama-cli / llama-server / an OpenAI-compatible API. archive.spacemit.comdocs.bit-brick.com
  • onnxruntime Works RVV 1.0, upstream MLAS RVV kernel works (self-built). raw.githubusercontent.com
  • pytorch Works glibc >= 2.39 distros such as Bianbu can install the RISE torch 2.13.0 riscv64 wheel (manylinux_2_39_riscv64). riseproject.devpypi.riseproject.dev
  • opencv Works RVV 1.0, the OpenCV RVV HAL is active. github.com
  • ncnn Works RVV 1.0, covered by upstream CI. github.comgithub.com
  • tengine Partial Works, but not optimal. github.com
  • spacemit-ai-sdk Works SpacemiT's AI artifact repository (ModelZoo/llama.cpp/localai/dify) is ready to use. archive.spacemit.com

NPU / acceleratorNo standalone NPU; AI runs on the X60's vector/AI extensions plus the proprietary AI SDK

The current poster board for "LLMs that just run": upstream llama.cpp, vendor prebuilt packages and Bianbu are all in place.

Milk-V Duo series (Duo / Duo 256M / Duo S)

Sophgo CV1800B (C906 @1GHz, 64/256MB)
  • llama.cpp Does not work With 64MB/256MB of RAM, no RVV and no FPU headroom, LLMs are not practically feasible; no public success report was found. milkv.io
  • onnxruntime Does not work Not enough memory or compute; the official AI path is the TPU rather than a general runtime. milkv.io
  • pytorch Does not work Not applicable. milkv.io
  • opencv Partial Basic image processing works, but memory is limited and the official samples go through the TDL SDK. milkv.io
  • ncnn No public evidence No public evidence (not enough memory to load common models). milkv.io
  • cvitek-tpu / tdl-sdk Works Milk-V's docs: the Duo series SoCs include a CVITEK TPU and the TDL SDK is recommended; YOLOv5/v8/11/12, MobileNetV2, ResNet18 and other samples are provided. The TPU stack is closed source. milkv.io

NPU / acceleratorCVITEK TPU (about 0.5 TOPS) with the closed-source TDL SDK / cvitek toolchain

A classic MCU-class vision board: fine for small YOLO-style models, thoroughly unsuited to LLMs.

RuyiSDK test matrix

https://matrix.ruyisdk.org/