回 帖 发 新 帖 刷新版面

主题:关于康柏fortran与intel fortran的计算速度

我在康柏fortran下编译的程序,直接复制粘贴到intel fortran下可以正常运行,但是计算速度慢了10倍,在康柏fortran中计算一步需要0.8秒,在intel fortran下计算同样的一步需要7秒中,这是为什么呢?

回复列表 (共4个回复)

沙发

不知道是不是编译器的问题,因为有过报道:
Osnews报道,有些事情你可能不知道,但你也许应该需要知道——尤其你是一位程序员,尤其你还使用Intel的编译器——Intel的编译器会有意的削弱非Intel处理器的性能。这是Intel反竞争的卑鄙手段之一。
Intel的编译器会产生不同的代码片段,对不同的处理器或不同的指令集((SSE2、SSE3等)进行优化。系统会探测运行的CPU,然后据此选择优化代码路径,Intel称这种方法为CPU调度程序。但秘密在于,调度程序不仅仅检查CPU支持的指令集,它还检查供应商身份识别码。如果身份识别码是GenuineIntel,它随后会使用优化代码;如果不是,它会选择最慢的代码版本。相同处理器如果修改了身份识别码,编译出来的程序在性能测试中有相当大的变化,比如将VIA Nano处理器的CPUID改成GenuineIntel,性能竟然提升了47.4%。这是一个严重的问题。幸运的是,最近AMD和Intel达成了反托拉斯和解协议,该问题得到了部分解决,至少对于AMD用户是如此。

英文原文报道:
http://www.osnews.com/story/22683/Intel_Forced_to_Remove_quot_Cripple_AMD_quot_Function_from_Compiler_

板凳

还有这个问题啊,学习了

3 楼

对于Intel自己的CPU,intel fortran比康柏fortran编译后的程序还是快了不少

4 楼


问题解决了,我原来用的是debug模式,改成release模式后,比康柏的速度还快。具体原因不清楚,好像release模式会对算法进行了优化

我来回复

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