九州大学 情報基盤研究開発センター 研究用計算機システムニュース   No.310                                 2014.01.27

+--------------------------------------------------------------------------+ |1.Fortran, C, C++ の実行結果異常について (スーパーコンピュータシステム) | +--------------------------------------------------------------------------+ ----------------------------------------------------------------- 情報基盤研究開発センター研究用計算機システムWWWホームページ     http://www.cc.kyushu-u.ac.jp/scp/ ----------------------------------------------------------------- 1.Fortran, C, C++ の実行結果異常について (スーパーコンピュータシステム) スーパーコンピュータシステム FX10 の Fortran, C, C++ 言語に実行結果異常となる 障害が見つかりました.障害修正は2014年3月の予定です.心当たりのある方はセンター ( E-mail: request(at)iii.kyushu-u.ac.jp) までご相談願います.なお,障害は高性 能演算サーバシステム CX400 では発生しません. <現象と条件> 以下の条件を全て満たすとき,実行結果に誤りが生じる場合があります. 1) 以下の翻訳時オプションが全て有効である. - -O2以上 (*1,*3) - -Kunroll (*2,*3) - -Ksimd (*2,*3) 2) プログラム内に多重ループが存在する. 3) ループが以下の条件に当てはまらない. - ループ外への飛び出しがある - ループ内にユーザ手続きの呼出しがある 4) ループの制御変数は配列の添字のみで参照している. 5) ループB のループの回転数が翻訳時に確定する. 6) ループB の回転数は16以下である. 7) ループB はループ展開によりフルアンローリングされる. * 翻訳メッセージ jwd8203o-i が出力されます 8) ループB に配列の定義が存在する. 9) 8) の配列の型は整数型または実数型である. 10) 8) の配列の定義は複数存在する. 11) 10) の配列の添字は定数またはループ内で定義されない変数を参照している. 12) 11) の添字の値は同一ではない. 13) 10) の配列はアドレスが低い方が先行している. 14) 10) の配列の添字は、親ループ(ループA)のループ制御変数を含んでいる. 15) 8) の配列の参照がループA(ループBの下)に存在する. 16) 15) の配列はアドレスが低い方が先行している. 17) ループAに10)の配列とは異なる連続アクセスの配列が存在する. 18) ループAが SIMD 化される. * 翻訳メッセージ jwd6001s-i が出力されます *1: Fortran の場合デフォルトで -O2 が誘導されます *2: 翻訳時オプション -O2 以上で誘導されます *3: 翻訳時オプション-Kfast で誘導されます <プログラム例> !ループA do j=1,3 ! 2) 3) 4) 14) ! ループB do i=1,3 ! 2) 3) 4) 5) 6) 7) b(i,j,1)=0 ! 4) 8) 9) 10) 11) 12) 13) 14) b(i,j,2)=0 ! 4) 8) 9) 10) 11) 12) 13) 14) end do c(j,6)=0 ! 17) d(2,j,1)=b(2,j,1) ! 4) 15) 16) d(2,j,2)=b(2,j,2) ! 4) 15) 16) end do <回避方法> 以下のいずれかの方法で回避できます. なお、実行性能に影響が少ない回避方法は d) または e) となります. a) 翻訳時オプション -O1 以下を有効にする. b) 翻訳時オプション -Knosimd を有効にする. c) 翻訳時オプション -Knounroll を有効にする. d) 翻訳時オプション -Kocl を有効とし,かつソースプログラムの対象ループ(ループB)に !ocl nounrollを追記する. e) 翻訳時オプション -Kocl を有効とし,かつソースプログラムの対象ループ(ループA)に !ocl nosimd を追記する. <チェックコンパイラ> お手持ちのプログラムが障害に該当するかどうかを判断する方法は以下を参照してください. 障害番号は PG99611 です. http://www.cc.kyushu-u.ac.jp/scp/users/c_news/attached/PG99611.txt