所以我有一段代码将 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
我需要文件写入像在第二种情况下一样工作。由于系统管理员的限制,我无法在 Cray 上安装不同的编译器。有没有人见过这个/知道问题可能是什么?任何帮助,将不胜感激!