MPIライブラリの障害(実行結果の異常)について
障害番号 | PH05751 |
システム | FX10 |
言語 | MPI |
修正予定 | 未定 |
現象と条件
以下の条件をすべて満たした場合、MPI_Allgather関数、またはMPI_Allgatherv関数の受信バッファのデータに欠落が生じる場合があります。
- 受信バッファのデータ型が基本データ型である。
- 受信バッファの先頭アドレスが4バイトバウンダリである。
- 受信バッファ内の各ランク単位が4バイトバウンダリに配置されている。
- 受信バッファのデータ型の大きさと要素数の積が4の倍数である。
- 受信バッファのデータ型の大きさと要素数の積が3210241024-8より大きい。
- MCAパラメーターcommon_tofu_max_tnisが指定されていない場合、受信バッファのデータ型の大きさと要素数の積が6410241024-16以下である。
- MCAパラメーターcommon_tofu_max_tnisが指定されている場合、common_tofu_max_tnisが3以上で、かつ受信バッファのデータ型の大きさと要素数の積が(1610241024-4)common_tofu_max_tnis以下である。
- ジョブ形状指定が3次元である。
- コミュニケータ形状が稠密な直方体である。
- コミュニケータ形状のX軸、Y軸、Z軸のうち、2つの軸の軸長が1である。
- 1ノードあたりのプロセス数が1プロセスである。
<プログラム例>
#include stdio.h
#include stdlib.h
#include string.h
#include mpi.h
int main(){
char buf;
int sz = 8192 768 8;
int nprocs;
int myrank;
int i;
MPI_Init(NULL, NULL);
MPI_Comm_size(MPI_COMM_WORLD, &nprocs);
MPI_Comm_rank(MPI_COMM_WORLD, &myrank);
buf = malloc(sz nprocs);
memset(buf, 0x23, sz nprocs);
memset(buf + sz myrank, 0x45, sz);
MPI_Barrier(MPI_COMM_WORLD);
MPI_Allgather(MPI_IN_PLACE, sz, MPI_BYTE, buf, sz, MPI_BYTE, MPI_COMM_WORLD);
for(i = 0; i sz nprocs; i++){
if(buf[i] != 0x45){
printf(index %d not overwrittenn, i);
fflush(stdout);
break;
}
}
MPI_Finalize();
return 0;
}
原因
MPIライブラリにおける、集団通信のアルゴリズム選択処理に誤りがありました。
回避方法
以下のいずれかの方法で回避できます。
a) MCAパラメーター common_tofu_max_tnis に 2 を指定する。または、
b) ジョブスクリプトの形状指定を1次元または2次元に変更する。
チェックツールご案内
SPC-247-1のチェックコンパイラのツールを以下に格納しております。
/center/local/chkcmp/SPC-247-1
+ FX10_V10_check_compiler_cross ← FX10 クロス版
+ FX10_V10_check_compiler_own ← FX10 オウン版
+ PCC_V10_checkcompiler ← CX400版
使用方法につきましては、各ディレクトリーのREADMEファイルの【スクリプトファイルを使用しない】をご参照してください。
→ 例題の-Y0オプションの /tmp/check_compiler の部分は、上記の格納ディレクトリーをご指定下さい。
使用例 (CX400の場合)
※チェックするプログラムについては、お客様のプログラムで実施いただく必要がございます。
下記は「PH05687.c」の例となります。
[cx02 sample]$ ls -l /center/local/chkcmp/SPC-247-1/PCC_V10_checkcompiler/sample/PH05687.c
-rw-r--r-- 1 xxxxxxx center 303 Mar 3 08:02 /center/local/chkcmp/SPC-247-1/PCC_V10_checkcompiler/sample/PH05687.c
[cx02 sample]$ cd /center/local/chkcmp/SPC-247-1/PCC_V10_checkcompiler/sample
[cx01 sample]$ fcc -O2 -Krdconv -Klib -Kunroll -Y0,/center/local/chkcmp/SPC-247-1/PCC_V10_checkcompiler/lib PH05687.c
***** PH05687 found ***** "PH05687.c", line 11
→ 該当する場合、上記、形式でメッセージが出力されます。