平衡点
2009/07/09
_ HDF5EOS の debian パッケージ作成中
install script があんまりなのでクラクラする.
_ MPICH2 と OpenMPI
そういえば, どっち使うのが良いんだろう.
_ 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)
OpenMPI と OpenMP が混乱しそうだったので修正.
(追記3)
OpenMP 有効にした時に test に転ぶのって, gt4f90io の頃からだった.エラーも同じ. むーん.
(追記4)
20090704 の更新で MPI 有効時に test に転ぶエラーは無くなりました.対応早い. さすが.