#matrix #lapack #ndarray #open-blas

ndarray-linalg

基于 LAPACK 的 Rust-ndarray 线性代数库

40 个版本

0.16.0 2022 年 10 月 4 日
0.14.1 2021 年 8 月 14 日
0.14.0 2021 年 7 月 17 日
0.13.1 2021 年 3 月 13 日
0.1.5 2016 年 11 月 28 日

#37算法 中排名

Download history 4684/week @ 2024-03-14 5504/week @ 2024-03-21 4487/week @ 2024-03-28 5349/week @ 2024-04-04 5486/week @ 2024-04-11 5288/week @ 2024-04-18 4596/week @ 2024-04-25 4586/week @ 2024-05-02 5188/week @ 2024-05-09 4766/week @ 2024-05-16 5083/week @ 2024-05-23 4206/week @ 2024-05-30 4770/week @ 2024-06-06 4684/week @ 2024-06-13 4711/week @ 2024-06-20 3407/week @ 2024-06-27

18,233 每月下载量
用于 88 crate(76 个直接使用)

MIT/Apache

355KB
8K SLoC

ndarray-linalg

crate docs.rs master

基于外部 LAPACK 实现的 Rust 线性代数库,使用 ndarray。

示例

查看 示例目录

注意:要运行示例,您必须指定将使用哪个后端(如下文所述)。例如,您可以使用如下方式执行使用 OpenBLAS 后端的 solve 示例

cargo run --example solve --features=openblas

并使用 OpenBLAS 运行 ndarray-linalg 的所有测试

cargo test --features=openblas

后端功能

有三个 LAPACK 源 crate

ndarray_linalg 必须为 LAPACK FFI 链接 仅一个

[dependencies]
ndarray = "0.14"
ndarray-linalg = { version = "0.13", features = ["openblas-static"] }

支持以下功能

功能 链接类型 要求 描述
openblas-static 静态 gcc, gfortran, make 在您的项目中构建 OpenBLAS,并将其静态链接
openblas-system 动态/静态 libopenblas-dev 在系统中查找 OpenBLAS,并链接它
netlib-static 静态 gfortran, make 与 openblas-static 相同,但使用参考 LAPACK
netlib-system 动态/静态 liblapack-dev 与 openblas-system 相同,但使用参考 LAPACK
intel-mkl-static 静态 (pkg-config) 在系统中查找 Intel MKL 的静态库,如果没有找到,则下载并静态链接它
intel-mkl-system 动态 (pkg-config) 在系统中查找 Intel MKL 的共享库,并动态链接它
  • 您必须使用其中 一个 功能。
  • dynamic/static 表示它取决于系统中的内容。当系统有 /usr/lib/libopenblas.so 时,它将动态链接,而 /usr/lib/libopenblas.a 将静态链接。动态链接优先于静态链接。
  • 要求通知
    • gccgfortran 可以是另一个编译器,例如 iccifort
    • libopenblas-dev 是 Debian、Ubuntu 及其他衍生发行版的包名。OpenBLAS 有几个二进制包,即 libopenblas-{openmp,pthread,serial}-dev。在其他发行版中可能会有不同的名称,例如 Fedora、ArchLinux 等。
    • pkg-config 用于在系统中搜索 Intel MKL 包,这是可选的。详情请见 intel-mkl-src/README.md

对于库开发者

如果你正在创建依赖此crate的库,我们鼓励你不要链接任何后端

[dependencies]
ndarray = "0.13"
ndarray-linalg = "0.12"

cargo 的功能是可累加的。如果你的库(例如 lib1)设置了 openblas-static 功能,尽管它们想使用 intel-mkl-static 后端,但使用 lib1 的应用程序在构建 ndarray_linalg 时会使用 openblas-static 功能。

详情请见 cargo 参考

测试环境

目前仅支持 x86_64 系统。

后端 Linux Windows macOS
OpenBLAS ✔️ - -
Netlib ✔️ - -
Intel MKL ✔️ ✔️ ✔️

许可证

注意 如果你使用 intel-mkl-src 后端,你必须接受除了 MIT 许可证或 Apache-2.0 许可证之外,还要接受 Intel 简化软件许可协议

双许可以兼容 Rust 项目。可以选择在 Apache 许可证版本 2.0 https://apache.ac.cn/licenses/LICENSE-2.0 或 MIT 许可证下授权。

依赖项

~70MB
~877K SLoC