MPIによるベクトルエンジン間の並列計算に加えて、自動並列化やOpenMPによってベクトルエンジン内並列実行を行うことが可能です。MPIコードに対して、自動並列化やOpenMP用の指示行挿入を行う必要がありますので、まず以下をご一読ください。
自動並列化/OpenMPの利用方法
コンパイル
SQUIDではNEC MPIコンパイラが利用可能です。プログラミング言語ごとにコマンドが異なりますので、ご注意ください。
MPI+自動並列化
$ module load BaseVEC
$ mpinfort -mparallel [options] source_file (Fortranの場合)
$ mpincc -mparallel [options] source_file (Cの場合)
$ mpinc++ -mparallel [options] source_file (C++の場合)
MPI+OpenMP
$ module load BaseVEC
$ mpinfort -fopenmp [options] source_file (Fortranの場合)
$ mpincc -fopenmp [options] source_file (Cの場合)
$ mpinc++ -fopenmp [options] source_file (C++の場合)
実行スクリプト
SQUID ベクトルノード群で、NEC MPI&自動並列化/OpenMPプログラムを実行する際のスクリプト例は下記の通りです。
4ノード並列実行(32ベクトルエンジンをNEC MPIで並列実行、ベクトルエンジン内の各10コアを自動並列化/OpenMPで並列実行※)、経過時間 1時間でMPIのバッチリクエストを実行するスクリプトになります。
※1ノードにつき8基のベクトルエンジン(SX-Aurora TSUBASA)を搭載しています。ベクトルエンジン(SX-Aurora TSUBASA)は1基あたり10コアを搭載しています。ベクトルエンジンの使用数はvenodeに指定します。
1 2 3 4 5 6 7 8 9 10 |
#!/bin/bash #PBS -q SQUID #PBS --group=【グループ名】 #PBS -l elapstim_req=1:00:00 #PBS --venode=32 #PBS -T necmpi #PBS -v OMP_NUM_THREADS=10 cd $PBS_O_WORKDIR module load BaseVEC mpirun –venode -np 32 ./a.out |
マルチノード実行時の注意点
ジョブスクリプトで「setenv (オプション名)」などでオプションや環境変数を指定した場合、マスターノードにのみ設定され、スレーブノードには設定されません。
全ノードに設定を反映させたい場合は「#PBS -v (オプション名)」と指定してください。
詳細は下記に記載しております。
ジョブスクリプトの書き方 環境変数の指定