Xeon E5-2620 v4 (8コア) x 2
32GB RAM
CentOS 6.8 (64bit)
openmpi-1.8.x86_64 とその-devel
mpich.x86_64 3.1-5.el6とその-devel
gcc version 4.4.7 (とgfortran)
NCAR Command Language Version 6.3.0
WRF v3.7.1を使用。
Python 2.6.6 (r266:84292, Aug 18 2016, 15:13:37)
Python 3.6.0 on virtualenv
WRF(Weather Research and Forecasting Model)に関して。
WRF / WPS > v3.9セットアップ > GFortranのバグにはまる
において、GFortranのv4.4.7とv4.9.2でそれぞれ作成した実行ファイルが生成するバイナリファイルの互換性が気になっている。
unformatted形式で試してみた。
バージョンの切替 > scl使用
CentOS 6.8ではv4.4.7のGFortranがインストールできる。
一方でSoftware Collections (SCL)を用いてv4.9.2をインストールできる。
方法については以下を参照 (gcc-c++でなくgcc-gfortranとした)
http://qiita.com/phanect/items/45c67fa55d624e45367b
code
Fortran90なのかFortran77なのか分からないcodeであるが気にしない。
implicit none
real(8) pi, napier, avogadro
pi = 3.141592
napier = 2.7182
avogadro = 6.022
open(10, file='test.bin', form='unformatted')
write(10) pi
write(10) napier
write(10) avogadro
close(10)
stop
end
implicit none
real(8) pi, napier, avogadro
open(10, file='test.bin', form='unformatted')
read(10) pi
read(10) napier
read(10) avogadro
close(10)
write(6,*) pi
write(6,*) napier
write(6,*) avogadro
stop
end
実行
v4.4.7の環境において
$ gfortran write_sample_170606.f90
$ gfortran read_sample_170606.f90 -o read_sample_v4_4_7
v4.9.2の環境において
$ gfortran read_sample_170606.f90 -o read_sample_v4_9_2
$ ./read_sample_v4_4_7
3.1415920257568359
2.7181999683380127
6.0219998359680176
$ ./read_sample_v4_9_2
3.1415920257568359
2.7181999683380127
6.0219998359680176
ここまで実施して、ふと思ったのが「バージョンが変わることでバイナリ出力形式が変更されたら大問題になるだろう」ということ。
よほどの問題がない限りは変更されないという気がしてきた。
しかしながらmodファイルはバージョンによって違う。
同じバージョンのコンパイラでビルドするのが前提のような気もする。
link
バイナリ保存関連で見つけた記事。
http://naturesflyers.blogspot.jp/2015/01/fortran-unformatted-binary.html
v4.4.7とv4.9.2の混在
影響が不明のため混在をやめてv4.9.2で統一することにした。