Compiler construction 升级Fortran编译器(英特尔v11.1版至v13.0版)后的数值差异

Compiler construction 升级Fortran编译器(英特尔v11.1版至v13.0版)后的数值差异,compiler-construction,floating-point,fortran,intel,Compiler Construction,Floating Point,Fortran,Intel,背景: 我们正在尝试将英特尔Composer安装从2011年升级到2013年,但我们发现,尽管大多数结果没有变化,但有一些变化不大,有些变化很大 我已经通读了发行说明,我所理解的并不能解释这些差异(我们没有多线程、类-多态或其他) 问题: “英特尔Fortran编译器v13.0”与其前代版本v11.0在以下方面是否存在差异: 未初始化变量的处理方式是否不同 是否有默认值已更改的编译器标志(如浮点设置) 数值类型的隐式转换是否已更改 我只是把史蒂夫·莱昂内尔的评论作为回答,这样我就可以结束这个问

背景:

我们正在尝试将英特尔Composer安装从2011年升级到2013年,但我们发现,尽管大多数结果没有变化,但有一些变化不大,有些变化很大

我已经通读了发行说明,我所理解的并不能解释这些差异(我们没有多线程、类-多态或其他)

问题:

“英特尔Fortran编译器v13.0”与其前代版本v11.0在以下方面是否存在差异:

  • 未初始化变量的处理方式是否不同
  • 是否有默认值已更改的编译器标志(如浮点设置)
  • 数值类型的隐式转换是否已更改

我只是把史蒂夫·莱昂内尔的评论作为回答,这样我就可以结束这个问题了:


“对你的三个问题的答案是:不,不,不。但是可能有很多导致数值差异的原因,特别是当算法不稳定时。也许更多的代码矢量化、数学例程的改进、不同的操作顺序等等。正如其他人所说,如果您能向“英特尔卓越支持”提供一个测试用例,我们将帮助您解决这个问题。但是你也可以通过观察过程中结果的分歧来解决这个问题。”–Steve Lionel 4月3日14日20:17,你是否有重复案例?如果有一个具体的情况,你可以表现出不同,这会有很大帮助。如果问题没有延伸,我可能会投票结束:“要么有太多可能的答案,或者好的答案对于这种格式来说太长了。请添加详细信息,以缩小答案集或隔离可以在几段中回答的问题。“啊,我从每一个Fortran论坛上都能认出史蒂文·莱昂内尔的照片,在那里有一个真实的答案。是的,我怀疑他就是这个人……你的第一个问题意味着你怀疑你在引用未初始化的变量。如果您更改编译器版本,编程错误绝对可能导致差异。您的三个问题的答案是:不,不,不。但是可能有许多导致数值差异的原因,特别是当算法不稳定时。也许更多的代码矢量化、数学例程的改进、不同的操作顺序等等。正如其他人所说,如果您能向“英特尔卓越支持”提供一个测试用例,我们将帮助您解决这个问题。但是你也可以通过观察结果在过程中的什么地方开始发散来解决这个问题。浮点数学并不完全是关联的,但它对于优化(尤其是向量化)非常有用,可以假装是关联的。以不同的顺序执行等效操作通常会得到非常相似的结果。对于C编译器,通常需要使用某种“快速数学”选项来允许编译器自由地执行此操作。关于Fortran的IDK。