はじめに

Rustで並列処理を行ってみます。並列処理としてMicrosoft MPI(MS-MPI)を利用します。RustでMS-MPIが実行できるコードを作成するため、mpiクレートを利用します。

環境

    • Windows 10 home

 

    • Rust(1.53.0)

 

    • Visual Studio Code(1.62.2)

 

    MS-MPI(10.1.2)

準備

MS-MPIのインストール方法は、以前の記事を参考ください。Rustもインストールしておきます。

mpi_envorinment_variable_trim.png

mpiクレート

RustでMPIを使うため、mpiクレートを利用します。crates.ioのmpiクレートだと、2021/11/13時点で、MS-MPIに対応していないため、githubにあるmpiクレート使います。cargo new で作成したフォルダのCargo.tomlに、以下のようにgithubのURLを指定します。

cargo new mpi_qiita
[package]
name = "mpi_qiita"
version = "0.1.0"
edition = "2018"

[dependencies]
mpi = {git="https://github.com/rsmpi/rsmpi", branch="master"}

Rust並列処理コード

以前のc++で作成したコードと同じ動きをするRustコードを作成します。

use mpi::traits::*;
fn main() {
    let universe = mpi::initialize().unwrap();
    let world = universe.world();
    let size = world.size();
    let rank = world.rank();
    print!("Hello world I am {} of {}", rank, size);
}

ビルドします。

cargo build

mpi_qiitaというパッケージ名にしたので、mpi_qiita\target\debug\mpi_qiita.exeという実行ファイルが出来上がります。

MS-MPIでの実行

MS-MPIで実行ファイルを動かします。

mpiexec -n 7 mpi_qiita.exe
rust_mpi_exec.png

参考

广告
将在 10 秒后关闭
bannerAds