Skip to content

Feature: Build riscv64 wheel #226

@ffgan

Description

@ffgan

Hi there.

As mentioned previously, cibuildwheel provides excellent support for different platforms. Although the cibuildwheel refactoring for other platforms is not yet complete, the Linux platform is basically usable now.

Therefore, we can discuss the issue of openblas-libs supporting riscv64 (rv64). Currently, PyPI already supports hosting rv64 wheels, and cibuildwheel also supports rv64. Many projects have already supported building rv64 wheels, such as lxml, ruff, uv, etc. They all have wheels that can be directly pip install. Regarding this, I hope openblas-libs can support rv64 wheels as soon as possible. If there's anything I need to assist with, feel free to @ me anytime. Once openblas-libs supports rv64 wheels, numpy and scipy will soon be able to gain rv64 support as well.

The upstream OpenBLAS has already added support for rv64, so we don't need to make too many changes. I attempted building for rv64 in my own fork, and the CI results show everything went smoothly. However, there are two points that need special attention:

  1. The build was completed using docker+qemu, not a native build
  2. The build time is quite long

For the first point, you can check my commit content for details - the modifications are very minimal.

For the second point, it's actually due to performance issues caused by virtualization, so the time required is much longer compared to native builds on other architectures.

My main question is: will openblas-libs accept wheels built using the docker+qemu approach? If acceptable, I can raise a PR very soon and ensure CI passes. If native builds are deemed necessary, we can take our time to discuss this. If there's any new relevant information, I will update this issue promptly.


Other Info
Co-authored by: nijincheng@iscas.ac.cn;

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions