主题:急急急,fortran程序在linux下运行的输出结果每步都和win下不同?
hhjjack
[专家分:0] 发布于 2011-10-09 16:45:00
最近把windows下的一个程序移植到linux,windows下的程序是通的,结果移植到linux后就出现NaN的输出。为何我在windows下运行好好的,结果到linux下就出现这样的结果呢?求教!
同时,linux下编译程序是通过的,但是每一步输出的结果跟windows都不一样(linux下输出的结果是错的),linux下运行几步后就会出现NaN,我现在正在仔细校对代码,不知道各位大侠有没有遇到过这样的情况,真诚求教!!!
回复列表 (共10个回复)
沙发
dongyuanxun [专家分:7180] 发布于 2011-10-09 17:37:00
编译器 编译器 编译器
32? 64?
板凳
yeg001 [专家分:14390] 发布于 2011-10-09 19:54:00
应该写清楚编译器改变前后的具体版本.
转换中NAN的出现很可能是初始化问题.
3 楼
hhjjack [专家分:0] 发布于 2011-10-09 21:16:00
是这样的,在win下是f90写的,在linux下用的是f77编译,但是程序中没有调用任何函数库,所以应该不是lib库不同的问题。
4 楼
hhjjack [专家分:0] 发布于 2011-10-09 21:19:00
NAN出现是每个迭代步的误差太大最后发散了,我问题的关键是它每一步的迭代都和win下不同,这个怎么解释?是不是程序写的还不规范?linux下得容错要比win差?
5 楼
dongyuanxun [专家分:7180] 发布于 2011-10-09 21:33:00
让你说编译器,非要扯格式
6 楼
cgl_lgs [专家分:21040] 发布于 2011-10-09 22:09:00
Windows下使用的编译器是什么?
Linux下使用的编译器是什么?
编译选项分别是什么?
7 楼
hhjjack [专家分:0] 发布于 2011-10-10 11:22:00
windows下用的compaq Visual fortran linux下用的gfortran 和intel fortran
,linux下两种都算过,情况一样,有微小差别!
8 楼
hhjjack [专家分:0] 发布于 2011-10-10 11:25:00
呵呵,大侠别生气。小弟最近被程序搞晕了!
9 楼
dongyuanxun [专家分:7180] 发布于 2011-10-10 12:28:00
cvf默认初始化为0
gfortran/ivf默认不初始化
gfortran好像有个开关-finit-local-zero来进行强制初始化。
最好自行初始化。
10 楼
cgl_lgs [专家分:21040] 发布于 2011-10-10 13:42:00
最好养成好习惯,把程序改改吧。初始化一定要写上。
另外把warning检查全打开,并把所有warning都解决掉:)
我来回复