回 帖 发 新 帖 刷新版面

主题:求助:ifort与gfortran的区别

如题所示,我的同一个.f90 的程序在同一个服务器上编译,使用ifort和gfortran都能编译成功,但是运行的时候有很大差别:使用ifort编译,运行时间很短,很快就能出结果了;但是使用gfortran编译后再运行,需要的时间就很长,和使用个人的电脑差不多情况,而且运行的时候还会出现服务器中断的情况,提示说服务器不可用。
搜索了一下,没有弄明白。还看到有人发帖说两种方式运行的结果有差别。
请教各位高手,这是什么原因?infort和gfortran编译和运行有什么不同吗?对结果有影响吗?
谢谢!

回复列表 (共4个回复)

沙发

这是一个很复杂的问题。

就好比两个不同的翻译公司,你请他们翻译,结果自然会不一样。但到底有什么区别,很难用几句话来表述的。

总体来说,如果你的代码是完善的,明确的,符合规范的。那么不同编译器结果应该是相同的。

造成不同编译器结果不同,99%的原因出在你的代码规范程度上。

板凳

[quote]这是一个很复杂的问题。

就好比两个不同的翻译公司,你请他们翻译,结果自然会不一样。但到底有什么区别,很难用几句话来表述的。

总体来说,如果你的代码是完善的,明确的,符合规范的。那么不同编译器结果应该是相同的。

造成不同编译器结果不同,99%的原因出在你的代码规范程度上。[/quote]
十分感谢你的回复!结果我对比了下,只是在结果的输出格式方面有一些小差别。但是很疑惑的是,为什么两种编译器编译后的程序运行时间相差这么大,ifort很快就出结果了,很gfortran就很慢?是不是因为ifort 比 gfortran 更先进、更有效?

3 楼

据对论坛的dongyunxun兄说, ifort对他自己的一些三角函数做了优化而且在浮点数精度的默认计算上做了手脚所以会相对快一点. 如果在相同(相似)的条件下再比较,gfortran不会比ifort差多少.

4 楼

[quote]据对论坛的dongyunxun兄说, ifort对他自己的一些三角函数做了优化而且在浮点数精度的默认计算上做了手脚所以会相对快一点. 如果在相同(相似)的条件下再比较,gfortran不会比ifort差多少.[/quote]
十分感谢你的回复!看来要想弄清楚它们之间到底有多大的区别是个很费劲的活了。
我是重复的别人发表的文献的结果,从运行的结果看,两种方法编译后运行的程序结果确实是存在差异的。同一个程序,windows下运行和用ifort编译后运行的结果是相同的,与文章的结果也相同,细微的差别来源于一些数值很小的双精度实数,这可能和你说的原因有关。但是使用gfortran编译后运行的结果与上面的结果存在很大的差别,也就是说得不到人家文章的结果!

我来回复

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