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

+--------------------------------------------------------------------------+ |1.OpenMP ライブラリの実行結果異常について                | | (スーパーコンピュータシステム, 高性能演算サーバシステム)       | |2.C, C++ 言語の実行結果異常について(スーパーコンピュータシステム)    | +--------------------------------------------------------------------------+ ----------------------------------------------------------------- 情報基盤研究開発センター研究用計算機システムWWWホームページ     http://www.cc.kyushu-u.ac.jp/scp/ ----------------------------------------------------------------- 1.OpenMP ライブラリの実行結果異常について   (スーパーコンピュータシステム, 高性能演算サーバシステム) スーパーコンピュータシステムFX10, 高性能演算サーバシステムCX400 の OpenMP ライブラリにおいて,実行結果異常となる障害が見つかりました.障害は,以下 の条件をすべてみたした場合に発生するもので,富士通製の Technical Computing Suite の Fortran, C, C++ のみが該当します.障害は3月末に修正済みです. 心当たりのある方はセンターまで( E-mail: request@iii.kyushu-u.ac.jp) ご相談願います. <現象と条件> 以下の条件をすべてみたす場合,異常終了または処理結果異常となることがあります. 1) -Kopenmpオプションが指定されている. 2) ループ構文のschedule指示節にdynamicが指定されている. 3) ループ構文のnowait指示節が指定されていない. 4) スレッド数が2以上である. 5) ループの初期値処理を実行するスレッドが処理を完了する前に,他のスレッド が初期値処理をぬける場合がある. <プログラム例> !$omp parallel !$omp do schedule(dynamic) ! 2)および3)に該当 do i=1, 1024 a(i) = a(i)+1 end do !$omp end parallel ※スレッド動作に依存した障害のため(条件5),スレッドの動作タイミング によっては再現しない場合があります. 2.C, C++ 言語の実行結果異常について(スーパーコンピュータシステム) スーパーコンピュータシステム FX10 の C, C++ 言語の libc ライブラリにおいて, 実行結果異常となる障害が見つかりました.障害は,以下の条件をすべてみたした 場合に発生するものです.障害は3月末に修正済みです.心当たりのある方はセンタ ーまで( E-mail: request@iii.kyushu-u.ac.jp)ご相談願います. <現象と条件> 以下の条件をすべてみたす場合,処理結果異常が発生することがあります. 1) /lib64/libc.so.6 をリンクして作成した実行可能プログラムである. 2) 1)で作成したプログラム内で,負の値が代入された signed int 型変数と long double型変数との演算・代入処理を含む場合,または,glibcの数学 ライブラリ libm のlong double 型を扱う関数を使用している場合. <プログラム例1: signed int型変数からlong double型変数への代入> long double ld; int i = -1; ld = i; printf("i = %d, ld = %Lf\n", i, ld); <プログラム例2: ライブラリ関数 powl の処理> long double a, b, c; a = 0.1; b = 0.1; c = powl(a, b); printf("powl(%Lf, %Lf) = %Lf\n", a, b, c); <確認方法> 翻訳した実行可能プログラムが /lib64/libc.so.6 をリンクしていることは,ldd コマンドにより確認できます. 例) リンクされている場合 % ldd a.out libc.so.6 => /lib64/libc.so.6 (0xffffffff00018000) /lib64/ld-linux.so.2 (0xfffff801a07e8000)