#open-blas #link #coin-or #build #src #intel-mkl #mumps

sys mumps-src

将 Mumps 构建为 crate

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 数学

Download history 1/week @ 2024-04-22 27/week @ 2024-05-20 3/week @ 2024-05-27 10/week @ 2024-06-03 8/week @ 2024-06-10 7/week @ 2024-06-17 10/week @ 2024-06-24 136/week @ 2024-07-08 13/week @ 2024-07-15 24/week @ 2024-07-22 6/week @ 2024-07-29 6/week @ 2024-08-05

每月下载 54
ipopt-src 中使用

Apache-2.0

21KB
319

Mumps-src

Package Documentation License

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

用法

  1. 将以下内容添加到您的 Cargo.toml

    [dependencies]
    mumps-src = "\*"
    
  2. 将以下内容添加到您的 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}_SYSTEMCARGO_${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_CCOPENBLAS_FCOPENBLAS_HOSTCCOPENBLAS_TARGET 以将环境传递给 OpenBLAS,参考:openblas-srcOpenBLAS。例如

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