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.rsextern 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_arithdouble, 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