#cargo-command #parallel #mpi #cargo-subcommand #message-passing #cargo-build

app cargo-mpirun

cargo mpirun 允许您通过一条命令轻松构建和运行您的 MPI 应用程序。它模拟了 cargo run,允许您指定要构建和运行的目标,Cargo 会处理其余部分。

9 个版本

使用旧的 Rust 2015

0.1.8 2020年1月19日
0.1.7 2018年12月3日
0.1.6 2018年9月26日
0.1.3 2018年2月14日

#331Cargo 插件

Download history 189/week @ 2024-04-12 108/week @ 2024-04-19 273/week @ 2024-04-26 280/week @ 2024-05-03 314/week @ 2024-05-10 201/week @ 2024-05-17 137/week @ 2024-05-24 201/week @ 2024-05-31 115/week @ 2024-06-07 147/week @ 2024-06-14 273/week @ 2024-06-21 126/week @ 2024-06-28 119/week @ 2024-07-05 166/week @ 2024-07-12 236/week @ 2024-07-19 150/week @ 2024-07-26

705 每月下载量

MIT 许可证

14KB
207 代码行

cargo-mpirun

Travis Crates.io

cargo-mpirun 是一个类似于 cargo run 的 cargo 自定义命令,它使用 mpiexec 运行目标。它简化了用 Rust 编写的 MPI 程序的构建和测试。

要求

需要一个符合规范的 MPI 安装,其中包含可在 PATH 中找到的 mpiexec 命令。 cargo mpirun 使用 mpiexec,这是启动 MPI 作业的标准化 CLI。

安装

cargo-mpirun 可以通过 Cargo 安装

cargo install cargo-mpirun

如果您对在 Rust 中编写 MPI 应用程序感兴趣,请查看 rsmpi。它提供了一种零开销、安全的 C MPI API 抽象。

使用方法

调用 cargo-mpirun 很简单。由于 cargo-mpirun 是一个 cargo 自定义命令,它被上下文化为当前的 cargo 项目。因此,只需将目录更改为您的 Rust 二进制 MPI 项目的根目录,然后运行

cargo mpirun

这将使用默认的 mpiexec 参数使用 mpiexec 调用二进制文件。

如果您想指定要使用的进程数,则适用典型的 mpiexec 参数。

cargo mpirun -n <num_processes>

num_processes 是一个正整数。同样,可以使用 --oversubscribe 来强制 MPI 分配比处理元素更多的进程。

如果你的 Cargo 工作区包含多个 bin 目标,请使用 --bin 指定目标。

cargo mpirun --bin <target>

类似地,可以使用 --example 在项目中运行示例。

cargo mpirun --example <example>

完整用法

cargo-mpirun 0.1
Andrew Gaspar <andrew.gaspar@outlook.com>
Run the main binary of the local package (src/main.rs) using mpiexec.

USAGE:
    cargo mpirun [OPTIONS]

OPTIONS:
    -n, --np <num_processes>          Number of processes to run
    -N, --npernode <num_processes>
            Launch num_processes per node on all allocated nodes

        --oversubscribe
            Nodes are allowed to be oversubscribed, even on a managed system,
            and overloading of processing elements
        --bin <NAME>                  Name of the bin target to run
        --example <NAME>              Name of the example target to run
    -p, --package <NAME>              Package with the target to run
    -j, --jobs <N>
            Number of parallel jobs, defaults to # of CPUs

        --release
            Build artifacts in release mode, with optimizations

        --features <FEATURE>...
            Space-separated list of features to also build

        --all-features                Build all available features
        --no-default-features         Do not build the `default` feature
        --target <TRIPLE>             Build for the target triple
        --manifest-path <PATH>        Path to the manifest to execute
    -v, --verbose
            Use verbose output (-vv very verbose/build.rs output)

    -q, --quiet                       No output printed to stdout
        --color <WHEN>                Coloring [values: auto, always, never]
        --message-format <FMT>
            Error format [default: human]  [values: human, json]

        --frozen
            Require Cargo.lock and cache are up to date

        --locked                      Require Cargo.lock is up to date
    -Z <FLAG>...                      Unstable (nightly-only) flags to Cargo
    -h, --help                        Prints help information
    -V, --version                     Prints version information

If neither `--bin` nor `--example` are given, then if the project only has one
bin target it will be run. Otherwise `--bin` specifies the bin target to run,
and `--example` specifies the example target to run. At most one of `--bin` or
`--example` can be provided.

All of the trailing arguments are passed to mpiexec. If you're passing arguments
to both Cargo and the binary, the ones after `--` go to mpiexec, the ones before
go to Cargo.

依赖项

~1.7–2.7MB
~50K SLoC