1.OpenMP ライブラリの実行結果異常について
2.C, C++ 言語の実行結果異常について(スーパーコンピュータシステム)
九州大学 情報基盤研究開発センター 研究用計算機システムニュース 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)