チェックツールの案内 ※2017.03.15追記
チェックツールが提供されました。使用方法は以下のとおりです。
●使用方法
【hayaka、chihaya向けクチェックコンパイラ(クロスコンパイラ用)配置パス】:/home/app/tool/PH12230/FX10_cross/bin
実行例)/home/app/tool/PH12230/FX10_cross/bin/chk_frtpx -O2 -xtest.sub2 sample.f90
【hayaka、chihaya向けクチェックコンパイラ(オウンコンパイラ用)配置パス】:/home/app/tool/PH12230/FX10_own/bin
実行例)/home/app/tool/PH12230/FX10_own/bin/chk_frt -O2 -xtest.sub2 sample.f90
【tatara向けチェックコンパイラ配置パス】: /homecx/app/tool/PH12230/PCC/bin
実行例)/homecx/app/tool/PH12230/PCC/bin/chk_frt -O2 -xtest.sub2 sample.f90
(-xtest.sub2の意味)
-xinl_arg inl_arg: { - | proc_name[,proc_name]... | stmt_no | dat_szK | dir=dir_name[,dir=dir_name]... | 0 }
-xオプションは、-Kオプションと同じくオブジェクトプログラムの実行性能向上を追求するため、利用者定義の手続の
インライン展開の最適化を指示する機能です。最適化機能は、-xオプションの引数として指定します。-O1オプション以上が
有効な場合に意味があります。-xオプションの引数はコンマ( ,)を区切り子とし、組み合わせて指定することができます。
実行例では-xtest.sub2となっておりますが、-xオプションに、subroutine test の内部手続き sub2 をインライン展開しなさい
と指示しているという意味になります。内部手続きは、sub.test2 のように、「.」で区切ります。
スクリプトファイルは、以下のように呼び出してください。(コマンド名のみ異なります。)
■hayaka,chihaya向けチェックコンパイラ(クロスコンパイラ用)
FORTRAN : chk_frtpx オプションまたはファイル名の並び
MPI FORTRAN : chk_mpifrtpx オプションまたはファイル名の並び
■hayaka,chihaya向けチェックコンパイラ(オウンコンパイラ用)及び、tatara向けチェックコンパイラ
FORTRAN : chk_frt オプションまたはファイル名の並び
MPI FORTRAN : chk_mpifrt オプションまたはファイル名の並び
●メッセージ出力例
該当障害が検出された場合には、以下の形式でメッセージが標準出力に出力されます。
" ***** 該当障レ番号 found ***** "ソースファイル名", line 行番号"
例) ***** PH12230 found ***** "sample.f90", line 14
九州大学 情報基盤研究開発センター 研究用計算機システムニュース No.389
2017.02.03
+--------------------------------------------------------------------------+
|1.富士通Fortranコンパイラの実行結果異常について |
|(スーパーコンピュータシステム, 高性能演算サーバシステム) |
+--------------------------------------------------------------------------+
-----------------------------------------------------------------
情報基盤研究開発センター研究用計算機システムWWWホームページ
https://www.cc.kyushu-u.ac.jp/scp/
-----------------------------------------------------------------
1.富士通Fortranコンパイラの実行結果異常について
スーパーコンピュータシステムFX10 (hayaka, chihaya)および高性能演算サーバシステム
(tatara)の Fortranコンパイラにおいて,実行結果異常となる障害が見つかりました.障害
は以下の条件をすべて満たした場合に発生するもので,富士通製の Technical Computing
Suite の Fortran のみが該当します.
障害修正時期は未定です.心当たりのある方はセンター(request(at)iii.kyushu-u.ac.jp)
までご相談ください.
●現象と条件
以下の条件をすべて満たした場合,実行結果に誤りが生じることがあります.
(1) -x オプションおよび以下のいずれかの翻訳時オプションが有効である.
・-Ksimd (*1)
・-Kparallel
・-O3 (*2)
(2) プログラム中に副プログラム(関数またはサブルーチン)が存在する.
(3) (2) の副プログラム内にループが存在する.
(4) (3) のループ内に同一の内部副プログラムまたはモジュール副プログラムの呼出し
が複数存在する.
(5) (4) の各内部副プログラムまたは各モジュール副プログラムの実引数は (2)
の副プログラムの仮引数である.
(6) (4) の同一の内部副プログラムまたはモジュール副プログラムの呼出しに関して,
その最初の呼出しと最後の呼出しの実引数は,以下の条件を満たす同一変数(配列
または構造体)が指定されている.
(6-1) 実引数が配列の場合,各添字は異なる定数.(*3)
(6-2) 実引数が構造体の場合,異なる成分のアクセス.
(7) (4) の内部副プログラムまたはモジュール副プログラムはインライン展開(*4)される.
(8) (4) の内部副プログラムまたはモジュール副プログラム内に仮引数の参照が存在する.
(9) (8) の後で (4) とは別の内部副プログラムまたはモジュール副プログラムの呼出し
が存在する.
(10) (9) の内部副プログラムまたはモジュール副プログラムはインライン展開(*4)されない.
*1: 翻訳時オプション -O2 以上で -Ksimd が誘導されます.
*2: 翻訳時オプション -Kfast で -O3 が誘導されます.
*3: 添字がない場合は配列の先頭に等しくなります.
*4: 翻訳時メッセージ jwd8101o-i によりインライン展開が確認できます.
<プログラム例>
翻訳時オプション: -O2 -xtest.sub2
(モジュール test 中のサブルーチン sub2 のインライン展開を指示)
program main
use test
real(8),dimension(8) :: data1
data data1/1,2,3,4,5,6,7,8/
call sub1(data1,2)
end program main
module test
contains
subroutine sub1(data1,n) ! (2)
real(8),dimension(8) :: data1
integer :: i
do i = 1, n ! (3)
call sub2(data1(1)) ! (4), (5), (6), (7)
call sub2(data1(3)) ! (4), (5), (6), (7)
enddo
end subroutine sub1
subroutine sub2(data1)
real(8),dimension(2) :: data1
data1(2) = data1(1) ! (8)
call sub3(data1(1)) ! (9), (10)
end subroutine sub2
subroutine sub3(data3)
real(8) :: data3
print *,data3
end subroutine sub3
end module test
●回避方法
翻訳時オプション-x0 (インライン展開の抑止)を指定することにより回避できます.
[問い合せ窓口]
九州大学 情報統括本部 HPC事業室 全国共同利用担当
Mail: request(at)iii.kyushu-u.ac.jp
Tel : 092-802-2683