主题:win7系统在cvf下编程,debug和release模式没问题,IVF运行结果出现NAN
ch06
[专家分:30] 发布于 2011-08-14 19:03:00
以前习惯用CVF编程,装了win7系统,还想用这个软件,
参考yrliu大侠的帖子:http://www.programfan.com/club/showtxt.asp?id=314906,可以用CVF了
同时我电脑里还装了IVF,
一般我都是用CVF编程序,然后IVF运行(曾经对比过速度,比CVF的release模式稍快一点),
今天出现了下面这个问题:
CVF的debug和release模式没问题,文件正常;IVF运行也正常,但计算结果中出现NAN,没法后处理了。
请教各位专家这是什么原因?
回复列表 (共21个回复)
沙发
dongyuanxun [专家分:7180] 发布于 2011-08-15 04:20:00
很有可能是某些变量没初始化
板凳
ch06 [专家分:30] 发布于 2011-08-15 08:50:00
谢谢您的回答,这个比较麻烦,程序有太多的变量了,我得好好检查一下。
3 楼
ch06 [专家分:30] 发布于 2011-10-02 16:18:00
从CVF过渡到IVF还有很多工作要做啊,
同一个程序用CVF的debug模式和release模式都没问题,
用IVF能正常计算,但出现错误到结果,
IVF的计算速度倒是快很多。
4 楼
yeg001 [专家分:14390] 发布于 2011-10-05 10:11:00
这种情况下一般是某些变量没有初始化. 想偷懒可以去工程设置那里设为零试试. 不过不是很建议这样做.
5 楼
ch06 [专家分:30] 发布于 2011-10-12 08:15:00
多谢回答,程序现在已经扩展成三维了,查了好久也没查出问题,
而且三维程序用CVF的debug模式和release模式均没有问题,
用IVF能算,但结果明显跟在CVF下的不一样,是个错误的结果。
顺便说一下,我用fortran77语言编的,主要以前学的是fortran77,暂时没习惯fortran90
6 楼
yeg001 [专家分:14390] 发布于 2011-10-12 09:02:00
设置打开没更多的warning就容易找了. 以前的f77经常不用implicit none而用一些默认或者指定字母开头区域来定义变量类型, 这些地方容易隐藏问题.
7 楼
ch06 [专家分:30] 发布于 2011-10-12 09:22:00
编程时考虑了implicit none的问题,大部分子程序都加了,
只有一个子程序没加implicit none,因为这个子程序是借鉴过来的,不知道是不是它出了问题
8 楼
ch06 [专家分:30] 发布于 2011-10-12 20:42:00
请问ifort有没有强制初始化开关?
gfortran好像有个开关-finit-local-zero来进行强制初始化。
我用gfortran加强制初始化试了下,计算结果正确,就是速度太慢了,算了一天才结束。
ifort倒是快了不少,但结果是错的
9 楼
yeg001 [专家分:14390] 发布于 2011-10-12 22:12:00
ifort --help >> iforthelp.txt
然后看看当前目录下iforthelp.txt文件吧.
10 楼
dongyuanxun [专家分:7180] 发布于 2011-10-13 05:45:00
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版本是啥啊
我来回复