1

したがって、ファイルに 9 つの変数を書き込むコードのスニペットがあります。

if (rank == 0) then
    write (filehandle,*) a,b,c,d,e,f,g,h,i
endif

しかし、コードは異なるマシン/コンパイラで異なる結果をもたらします.CrayクラスターでPathScaleコンパイラを使用すると、次のようになります:

5.444445          0.0000000E+00      0.0000000E+00      1.5010493E-04    
1.4887122E-04      2.5604754E-09      0.0000000E+00     -4.7524699E-07    
0.0000000E+00

(x 列ごとに改行)

しかし、別のクラスターで GNU コンパイラーを使用すると、次のようになります。

5.444445          0.0000000E+00      0.0000000E+00      1.5010493E-04      1.4887122E-04      2.5604754E-09      0.0000000E+00     -4.7524699E-07     0.0000000E+00

(改行なしで、コードは期待どおりに機能します)

両方のコンパイラのメイクファイルは次のようになります。

# PathScale
FC = ftn
OPTFC = -Ofast -cpp
CC = cc
CFLAGS = -O3

# GNU
FC = mpif90
OPTFC = -O3 -funroll-loops -ftree-vectorize -fcray-pointer -cpp
CC = mpicc
CFLAGS = -O3

2 番目のケースと同様に、ファイル書き込みが機能する必要があります。システム管理の制約により、Cray に異なるコンパイラをインストールできません。誰かがこれを以前に見たことがありますか / 問題が何であるかを知っていますか? どんな助けでも大歓迎です!

4

0 に答える 0