gtool5 の OpenMP 非対応?

一晩寝かせてから投げることにして. とりあえずメモ

環境

OS

Debian GNU/Linux sqeeze/sid

Compiler

* gfortran 4.3.3 with or without MPI (OpenMPI 1.3.2)
* Fujitsu Fortran 64bit ver.1 with or without MPI (OpenMPI 1.3.2)

NetCDF

netcdf 3.6.2
:gtool5
gtool5-20090704

現状

Fujitsu でも gfortran でも OpenMP を有効にするとテストで転ぶ.

症例 1
Compiler

Fujitsu Fortran, without MPI.

OpenMP を有効(-KOMP)にすると以下のテストで転ぶ

 $ make test-installed
   ...
 make[3]: `histtest' は更新済みです
 make[3]: ディレクトリ `/home/uwabami/work/GFD/gtool5-20090704/test' から出ます
 *** PutLine test ** #<GT_HISTORY:: @initialized=no>
 *** MESSAGE [HistoryCreate3] ***  "xhisttest/xhisttest1.nc" is created (origin=0. [s])
 *** MESSAGE [HistoryCreate3] ***  "xhisttest/xhisttest9.nc" is created (origin=0. [s])
 *** ERROR (Code -117) [GTVarGetPointerReal1] ***   invalid allocated size
 histtest.sh: line 45: 10560 アボートしました./histtest 2> xdifs.log
 Error: stderr is output to xdifs.log .
 make[2]: *** [test] エラー 1
  • OpenMP を有効にしない場合には, テストは通る(このエラーは出ない).
  • gfortran では OpenMP を有効にした場合(-fopenmp)でも, テストは通る.
    • MPI を有効にしても同様
症例 2
Compiler

* gfortran with MPI
* Fujitsu Fortran with MPI

OpenMP を有効(-fopenmp, -KOMP) にした場合に, test-mpi-installed で以下のエラー.

 $ make test-mpi-installed
 ...
 make[3]: `histtest_mpi' は更新済みです
 make[3]: ディレクトリ `/home/uwabami/work/GFD/gtool5-20090704/test' から出ます
  *** MESSAGE [HistoryCreate3] ***  "xhisttest_mpi/xhisttest_mpi1_rank000001.nc" is created (origin=0. [sec.])
  *** MESSAGE [HistoryCreate3] ***  "xhisttest_mpi/xhisttest_mpi1_rank000003.nc" is created (origin=0. [sec.])
  *** MESSAGE [HistoryCreate3] ***  "xhisttest_mpi/xhisttest_mpi1_rank000000.nc" is created (origin=0. [sec.])
  ...
  *** MESSAGE [HistoryClose] ***  "xhisttest_mpi/xhisttest_mpi10.nc" is closed
  making CDL files from original data files ................  done.
  making CDL files from generated data files ................  done.
  testing xhisttest_mpi1_rank000000.nc ...9a10,11
  >               lon:topology = "circular"
  >               lon:modulo = 360.f
    Error: stderr is output to xdifs.log .
  • gfortran, Fujitsu Fortran ともOpenMP を有効にしない場合にはテストは通る(エラーは出ない)

まとめ

というわけで, OpenMP + MPI のハイブリッド並列を実行しようとしても, 動作しない(かもしれない)のが現状.

I/O ライブラリが OpenMP に対応していないからと言って,本チャンのモデルが走らない, って事は無いとは思うんですがね.

要望

以下, 非常にどうでも良い(?)こと

  • テスト実行後にテスト用の original な NetCDF が更新されるのはちょっと嫌. original な奴は更新しない or 更新されるモンはテスト時に自動生成して, 配布物には同梱しない方が良いと思ったりする.
  • mpiexec の指定(--with-mpiexec) が効かない事があるのですが, 何故?
    • まあ configure の自動判定がちょっとアレなんだろうから,適当に書けば良いのですけれど.
 ...
 configure: error: "/usr/local/stow/openmpi-ffc/bin/mpif90" compiler
 does not support MPI. Specify MPI fortran compiler to "$FC"
  • mpiexec 指定時に prefix にまで -mpi を付けるのはやりすぎだと思います.
    • prefix の意味無いじゃん. 住みわけの為にそうしているのかな?
    • にしても, なんか嫌.

(追記)

そういや OpenMP 有効にした際にはスレッド数指定していなかった. 関係無いと思うけれど.

(追記2)

OpenMPIOpenMP が混乱しそうだったので修正.

(追記3)

OpenMP 有効にした時に test に転ぶのって, gt4f90io の頃からだった.エラーも同じ. むーん.

(追記4)

20090704 の更新で MPI 有効時に test に転ぶエラーは無くなりました.対応早い. さすが.