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 在 算法 中排名
18,233 每月下载量
用于 88 个 crate(76 个直接使用)
355KB
8K SLoC
ndarray-linalg
基于外部 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
将静态链接。动态链接优先于静态链接。- 要求通知
gcc
和gfortran
可以是另一个编译器,例如icc
和ifort
。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