回 帖 发 新 帖 刷新版面

主题:win7系统在cvf下编程,debug和release模式没问题,IVF运行结果出现NAN

以前习惯用CVF编程,装了win7系统,还想用这个软件,

参考yrliu大侠的帖子:http://www.programfan.com/club/showtxt.asp?id=314906,可以用CVF了

同时我电脑里还装了IVF,

一般我都是用CVF编程序,然后IVF运行(曾经对比过速度,比CVF的release模式稍快一点),

今天出现了下面这个问题:

CVF的debug和release模式没问题,文件正常;IVF运行也正常,但计算结果中出现NAN,没法后处理了。

请教各位专家这是什么原因?

回复列表 (共21个回复)

沙发

很有可能是某些变量没初始化

板凳

谢谢您的回答,这个比较麻烦,程序有太多的变量了,我得好好检查一下。

3 楼

从CVF过渡到IVF还有很多工作要做啊,
同一个程序用CVF的debug模式和release模式都没问题,
用IVF能正常计算,但出现错误到结果,

IVF的计算速度倒是快很多。

4 楼

这种情况下一般是某些变量没有初始化. 想偷懒可以去工程设置那里设为零试试. 不过不是很建议这样做.

5 楼

多谢回答,程序现在已经扩展成三维了,查了好久也没查出问题,
而且三维程序用CVF的debug模式和release模式均没有问题,
用IVF能算,但结果明显跟在CVF下的不一样,是个错误的结果。

顺便说一下,我用fortran77语言编的,主要以前学的是fortran77,暂时没习惯fortran90

6 楼

设置打开没更多的warning就容易找了. 以前的f77经常不用implicit none而用一些默认或者指定字母开头区域来定义变量类型, 这些地方容易隐藏问题.

7 楼

编程时考虑了implicit none的问题,大部分子程序都加了,

只有一个子程序没加implicit none,因为这个子程序是借鉴过来的,不知道是不是它出了问题

8 楼

请问ifort有没有强制初始化开关?

gfortran好像有个开关-finit-local-zero来进行强制初始化。

我用gfortran加强制初始化试了下,计算结果正确,就是速度太慢了,算了一天才结束。

ifort倒是快了不少,但结果是错的

9 楼

ifort --help >> iforthelp.txt
然后看看当前目录下iforthelp.txt文件吧.

10 楼

gfortran慢?

你不会直接就gfortran -finit-local-zero main.f90 编译吧

用gfortran -O3 -fivopts -ftree-loop-linear -ftree-vectorize -fforce-addr -fomit-frame-pointer -fno-bounds-check -funroll-loops -ffast-math -march=native -finit-local-zero main.f90

还有更多优化开关,谁知道你gfortran版本是啥啊

我来回复

您尚未登录,请登录后再回复。点此登录或注册