MVAPICH

MVAPICHはオハイオ州立大学で開発、公開されている MPI (Message Passing Interface) ライブラリです。


モジュール

モジュール名 バージョン
mvapich 3.0-gcc8.5.0
3.0-intel2023.2


モジュールの利用法は以下を参照してください。

モジュール利用法

利用方法

環境設定 (moduleコマンド)

GNUコンパイラを利用する場合


$ module load gcc
$ module load mvapich/3.0-gcc8.5.0

Intelコンパイラを利用する場合


$ module load intel
$ module load mvapich/3.0-intel2023.2

コンパイル

基本的なコンパイルコマンドの例は以下の通りです。 必要に応じて、最適化オプション(-O3など)やOpenMP有効化オプション(-fopenmp)などを追加してください。

C言語のコンパイル例


$ mpicc test.c -o test

Fortranのコンパイル例


$ mpifort test.f90 -o test

ジョブスクリプト

GNUコンパイラを利用した場合のMPI並列でのジョブスクリプト例

(ノード数 8、ノード当たりプロセス 120)


#!/bin/bash
#PJM -L rscgrp=a-batch
#PJM -L node=8
#PJM -L elapse=00:20:00
#PJM -j
#PJM -S

module load gcc
module load mvapich/3.0-gcc8.5.0

mpiexec -np 960 -ppn 120 -machinefile ${PJM_O_NODEINF} -launcher ssh -launcher-exec /bin/pjrsh ./a.out

Intelコンパイラを利用した場合のMPI並列でのジョブスクリプト例

(ノード数 8、ノード当たりプロセス 120)


#!/bin/bash
#PJM -L rscgrp=a-batch
#PJM -L node=8
#PJM -L elapse=00:20:00
#PJM -j
#PJM -S

module load intel
module load mvapich/3.0-intel2023.2

mpiexec -np 960 -ppn 120 -machinefile ${PJM_O_NODEINF} -launcher ssh -launcher-exec /bin/pjrsh ./a.out

GNUコンパイラを利用した場合のハイブリッド並列でのジョブスクリプト例

(ノード数 8、ノード当たりプロセス 15、プロセス当たりスレッド数 8)


#!/bin/bash
#PJM -L rscgrp=a-batch
#PJM -L node=8
#PJM -L elapse=00:20:00
#PJM -j
#PJM -S

module load gcc
module load mvapich/3.0-gcc8.5.0

export OMP_NUM_THREADS=8
mpiexec -np 120 -ppn 15 -machinefile ${PJM_O_NODEINF} -launcher ssh -launcher-exec /bin/pjrsh ./a.out

Intelコンパイラを利用した場合のハイブリッド並列でのジョブスクリプト例

(ノード数 8、ノード当たりプロセス 15、プロセス当たりスレッド数 8)


#!/bin/bash
#PJM -L rscgrp=a-batch
#PJM -L node=8
#PJM -L elapse=00:20:00
#PJM -j
#PJM -S

module load intel
module load mvapich/3.0-intel2023.2

export OMP_NUM_THREADS=8
mpiexec -np 120 -ppn 15 -machinefile ${PJM_O_NODEINF} -launcher ssh -launcher-exec /bin/pjrsh ./a.out

注意事項

実行時の警告メッセージ

利用可能なコア数と同じ数のプロセスを起動した場合、以下の警告メッセージが出力されます。 これは、MPIライブラリの内部でプロセス当たり 1つずつ追加でスレッドを起動する可能性があり、 そのため性能が低下するかもしれない、というメッセージです。 この場合、ノード当たりのプロセス数を 2個以上減らすことで性能が向上する可能性がありますので、お試しください。


[][mvp_generate_implicit_cpu_mapping] WARNING: You appear to be running at full subscription for this j
ob. UCX spawns an additional thread for each process which may result in oversubscribed cores and poor
performance. Please consider reserving at least 2 cores per node for the additional threads, enabling S
MT, or setting MVP_THREADS_PER_PROCESS=2 to ensure that sufficient resources are available.