3 个版本
0.1.2+5.7.2 | 2024年7月8日 |
---|---|
0.1.1+5.6.2 | 2024年4月11日 |
0.1.0+5.6.2 | 2024年1月19日 |
#475 in 数学
每月下载 54 次
在 ipopt-src 中使用
21KB
319 行
Mumps-src
Mumps-src
crate 是一个 *-src crate。它通过 cargo 将 Mumps 库链接到可执行构建,但不会提供 Rust 绑定。Mumps 是使用 Mumps (Mumps) 与 OpenBLAS (openblas-src)(可选) 或 Intel-MKL (intel-mkl-src)(可选) 构建的。
通过此包,您无需担心在系统中安装 Mumps,并且它是一个针对 所有平台(linux) 的包。
Mumps (MUltifrontal Massively Parallel sparse direct Solver) 是一个用于解决 Ax = b 形式的线性方程组的包,其中 A 是一个可以是非对称、对称正定或一般对称的平方稀疏矩阵,在分布式内存计算机上。
注意: 目前仅支持顺序版本。并且不支持 Metis
。
用法
-
将以下内容添加到您的
Cargo.toml
[dependencies] mumps-src = "\*"
-
将以下内容添加到您的
lib.rs
extern crate mumps_src;
此包不提供绑定。
配置
功能
以下 Cargo 功能受支持
default
用于openblas-static
功能和d_arith
功能;
至少需要选择以下功能之一
openblas-system
用于链接到 OpenBLAS 系统库;openblas-static
用于静态链接到 OpenBLAS;intel-mkl-system
用于链接到 intel-mkl 系统库;intel-mkl-static
用于静态链接到 intel-mkl;
mumps 有 4 种精度,至少需要选择以下功能之一
s_arith
单精度,实数精度;d_arith
双精度,实数精度;c_arith
单精度,复数精度;z_arith
double, complex, precision;
环境
默认情况下,该包从源代码构建并静态链接。它还提供以下环境变量,以允许用户自定义链接到系统库
CARGO_MUMPS_STATIC
用于静态链接 Mumps;CARGO_MUMPS_SYSTEM
用于链接 Mumps 系统库;
将环境变量设置为 1
以启用此功能。例如,要动态链接到系统库,请将 CARGO_${LIB_NAME}_SYSTEM
设置为 1
;要静态链接到系统库,请将 CARGO_${LIB_NAME}_SYSTEM
和 CARGO_${LIB_NAME}_STATIC
都设置为 1
。
如果您启用了 OpenBLAS(openblas-src),您还可以通过 OPENBLAS_*
将环境传递给 make
。更多信息请参阅 此处
其他
如果您启用了 OpenBLAS(openblas-src),您可以通过禁用默认功能并选择您喜欢的选项来静态或动态链接 OpenBLAS
,例如
mumps-src = { version = "\*", default-features = no, features = ["d_arith", "openblas-system"] }
同样,您可以使用以下方式链接 Intel MKL(intel-mkl-src)
mumps-src = { version = "\*", default-features = no, features = ["d_arith", "intel-mkl-system"] }
如果您需要更多配置,您可以尝试这样做
mumps-src = { version = "\*", default-features = no, features = ["d_arith"] }
intel-mkl-src = { version = "\*", features = ["mkl-static-lp64-seq"] }
交叉编译
如果您使用 OpenBLAS(openblas-src),您需要设置 OPENBLAS_CC
、OPENBLAS_FC
、OPENBLAS_HOSTCC
和 OPENBLAS_TARGET
以将环境传递给 OpenBLAS,参考:openblas-src 和 OpenBLAS。例如
export OPENBLAS_TARGET=ARMV8
export OPENBLAS_HOSTCC=gcc
export OPENBLAS_CC=aarch64-linux-gnu-gcc
export OPENBLAS_FC=aarch64-linux-gnu-gfortran
您可以通过向 --target
选项提供 cargo build
提供其他目标的编译。
目标 | 支持的 |
---|---|
arm-unknown-linux-gnueabi |
✓ |
arm-unknown-linux-gnueabihf |
✓ |
armv7-unknown-linux-gnueabi |
✓ |
armv7-unknown-linux-gnueabihf |
✓ |
armv7-unknown-linux-musleabi |
✓ |
armv7-unknown-linux-musleabihf |
✓ |
aarch64-unknown-linux-gnu |
✓ |
aarch64-unknown-linux-musl |
✓ |
riscv64gc-unknown-linux-gnu |
✓ |
x86_64-ps-windows-msvc |
✓ |
x86_64-unknown-linux-gnu |
✓ |
x86_64-unknown-linux-musl |
✓ |
其他 | 未测试 |
注意:功能 intel-mkl-*
只能用于 x86_64-*
。功能 openblas-static
只能用于 linux
。
贡献
您的贡献非常受重视。请随时提出问题或发起拉取请求。请注意,任何提交给项目包括在内的贡献都将根据以下条款进行许可:LICENSE。
依赖项
~0–2.2MB
~37K SLoC