我有一个最初在Visual Studio for Windows中编写的C ++项目。它包含对Intel MKL的调用和一些OMP代码。向量和矩阵运算不同。我已经在Windows的Microsoft和Intel编译器中的VS中进行了发布和调试测试,没有任何问题。
我已经使用Eclipse和Intel C ++编译器将其移植到Linux上。在调试配置中,通过了测试,但是当我将优化级别从“已禁用”(-O0)更改为“ MaximizeSpeed(-O2)”时。测试开始失败,某处计算会产生不同的结果(约10%)。在启用了优化的情况下,Linux上相同的英特尔编译器产生不同结果的原因可能是什么?有什么想法要检查吗?
答案 0 :(得分:2)
可能的原因:
正如Jesper在评论中指出的那样,很可能您的程序具有未定义的行为,从而导致不同的结果。
其他不太可能是编译器错误-检查您是否使用最新的编译器版本和/或尝试其他编译器。
我建议按降序排列: