MPIライブラリの障害(実行結果の異常)について

障害番号 PH05751
システム FX10
言語 MPI
修正予定 未定

現象と条件

以下の条件をすべて満たした場合、MPI_Allgather関数、またはMPI_Allgatherv関数の受信バッファのデータに欠落が生じる場合があります。

  1. 受信バッファのデータ型が基本データ型である。
  2. 受信バッファの先頭アドレスが4バイトバウンダリである。
  3. 受信バッファ内の各ランク単位が4バイトバウンダリに配置されている。
  4. 受信バッファのデータ型の大きさと要素数の積が4の倍数である。
  5. 受信バッファのデータ型の大きさと要素数の積が3210241024-8より大きい。
  6. MCAパラメーターcommon_tofu_max_tnisが指定されていない場合、受信バッファのデータ型の大きさと要素数の積が6410241024-16以下である。
  7. MCAパラメーターcommon_tofu_max_tnisが指定されている場合、common_tofu_max_tnisが3以上で、かつ受信バッファのデータ型の大きさと要素数の積が(1610241024-4)common_tofu_max_tnis以下である。
  8. ジョブ形状指定が3次元である。
  9. コミュニケータ形状が稠密な直方体である。
  10. コミュニケータ形状のX軸、Y軸、Z軸のうち、2つの軸の軸長が1である。
  11. 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

→ 該当する場合、上記、形式でメッセージが出力されます。