-
Notifications
You must be signed in to change notification settings - Fork 1.3k
Open
Description
Add linux_riscv64 wheel to PyPI releases
Summary
pip install llama-cpp-python on riscv64 Linux currently requires building from source (~15 min on a 1.6 GHz RISC-V SoC). Adding linux_riscv64 to the wheel build matrix would give riscv64 users a prebuilt wheel.
Evidence
| Tested wheel | llama_cpp_python-0.3.16-cp313-cp313-linux_riscv64.whl |
| Hardware | BananaPi F3 (SpacemiT K1, rv64imafdcv, 8 cores @ 1.6 GHz, 16 GB RAM) |
| Python | 3.13 (CPython) |
| Build system | cibuildwheel (scikit-build-core + CMake) |
| Build time | ~15 min (native, on hardware) |
The wheel imports and passes basic smoke tests on riscv64 Linux.
Suggested CI change
Workflow: .github/workflows/build-and-release.yaml
Add a new job following the existing arm64 pattern:
build_wheels_riscv64:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
submodules: recursive
- uses: docker/setup-qemu-action@v3
with:
platforms: linux/riscv64
- uses: pypa/cibuildwheel@v2.22.0
env:
CIBW_ARCHS: riscv64
CIBW_SKIP: '*musllinux* pp*'
CMAKE_ARGS: >-
-DCMAKE_CROSSCOMPILING=ON
-DGGML_RISCV=ONCritical: -DGGML_RISCV=ON enables the RISC-V SIMD (RVV) path in llama.cpp.
Ecosystem context
manylinux_2_28_riscv64images are available onquay.io/pypa/(landed in pypa/manylinux, 2025)- cibuildwheel 3.x supports riscv64 via QEMU emulation
- auditwheel supports riscv64 platform tags
- maturin-action supports
riscv64gc-unknown-linux-gnucross-compilation - Packages already shipping riscv64 wheels on PyPI: aiohttp, yarl, regex, markupsafe, charset-normalizer, rpds-py, multidict, propcache, watchfiles, rignore, setproctitle
- RISC-V hardware is shipping: SiFive HiFive, SpacemiT K1/K3, Sophgo SG2044 (64-core)
Our temporary index
While upstream support is pending, we maintain a PEP 503 index with 50+ riscv64 wheels for the Python ML/AI stack, built natively on RISC-V hardware.
Tracking repo: https://github.com/gounthar/riscv64-python-wheels
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels