英特尔编译器值得使用吗?

5
相当直截了当,Intel编译器值得购买吗? 我主要从事系统级和桌面工作,所以我想我可能会受益。 有没有一些更有经验的人能够解释一下?

对于自动矢量化和Fortran语言,是的,绝对没问题。 - Jeff Hammond
1
VTC是基于个人观点的。即使我们可以展示客观的定量差异,这些差异只针对当前版本和当前竞争对手的版本有效。各种功能差异很快就会过时。 - Vladimir F Героям слава
5个回答

6
如果您使用Windows操作系统,与其他编译器相比,Intel编译器可以显著提高处理器速度。但是需要注意的是,它在非Intel处理器(如AMD、VIA)上可能会选择一个非常缓慢的代码路径,并且此问题曾引起反垄断调查。
如果您使用线程构建模块或其他功能,您还可能长期依赖于Intel编译器,因为这些功能在其他地方不存在。
在Linux上,GCC 4.5与Intel编译器几乎同等。在该平台上没有明确的优胜者。

1
Intel TBB在GCC和MSVC(现代版本)上表现得非常好。 - Nick Bastin

1
在我使用英特尔编译器(仅限C语言)的一些小经验中,我认为它们要优秀得多。具体来说,OpenMP库比开源版本快得多。但是,“值得”取决于您的情况,它们很昂贵,但在我看来更好。

好的,我有资格享受学生优惠,所以在我毕业前买它们也不会太糟糕。 - samoz
如果你有能力的话,我会建议你去尝试一下。我曾经通过一门课程使用过它,那时教授拥有教学许可证,但是课程结束后我就不能再使用了,我感到非常难过。通过使用英特尔的工具,我对他们的软件获得了很多尊重,他们做出了很好的东西。 - Tom

1

如果你正在比较ICL和MSVC++的数值行为,你必须考虑到/fp:设置的不同行为。 ICL /fp:source(比默认设置更温和)等价于MSVC /fp:fast(比默认设置更激进)。 Microsoft不执行ICL默认启用的任何优化。这些包括simd缩减(通常会提高精度,但是具有不可预测的幅度)。ICL还默认违反了关于圆括号的标准。仍然存在争议,是否通过更好的手段而不是/fp:source来解决这个问题。


1
在此线程早期,提到了Intel与gnu编译器性能的比较。g++ -ffast-math -fno-cx-limited-range大致相当于ICL默认/fp:fast。在Windows上,-ffast-math可能无法控制下溢模式,因此可能需要在程序中自行设置。-ffast-math将fmin/fmax等缩减为单个指令,但使用Intel C++时需要std::min/max。 - tim18
最近ICL添加了选项/Qprotect-parens,以遵守括号的后K&R语言标准。gcc将K&R处理括号耦合到-ffast-math中。 - tim18

0
从我看到的基准测试结果来看,使用英特尔专用编译器似乎比使用开源替代品能够提供更好的性能和多线程优势。

0

如果浮点数精度对您很重要,那么请使用Visual Studio编译器而不是Intel编译器。 在使用Intel编译器时,32位和64位应用程序的计算结果可能会有所不同(已经检查过)。 而使用Visual Studio编译器,32位和64位应用程序的计算结果将会相同。


ICC 的默认 -fp-modelfast:1,而大多数其他编译器则默认为 strict(例如 gcc -fno-fast-math)。 如果您想要从 ICC 获得严格的浮点运算语义,可以通过请求来实现(https://www.intel.com/content/www/us/en/docs/cpp-compiler/developer-guide-reference/2021-8/fp-model-fp.html)。 除非有编译器错误导致不完全遵守它,否则您应该得到 ISO C 标准求值顺序。 - Peter Cordes

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接