If you are on Windows, they do provide a nice speed boost over other compilers on Intel processors. There is a known behavior where they pick a very slow code path with non-Intel processors (AMD, VIA), and antitrust probes surrounding the issue.
If you use the thread building blocks or other features, you also risk tying your code to the Intel compiler long term as the functionality doesn't exist elsewhere.
GCC 4.5 on Linux is nearly on-par with the Intel compiler. There is no clear winner on that platform.
In the small experience I've had with intel compilers (C only), I would say their are vastly superior. Specifically the OpenMP library was much much faster than the open source version. "Worth it" depends on your situation though, they are expensive, but they are better IMO.
If you're comparing the numerical behavior of ICL vs. MSVC++ you must take into account the different behavior of the /fp: settings. ICL /fp:source (less aggressive than default) is equivalent to MSVC /fp:fast (more aggressive than default). Microsoft doesn't perform any of the optimizations which are enabled by ICL default. These include simd reductions (which usually improve accuracy, but by an unpredictable margin). ICL also violates the standard about parens by default. There still seems to be a controversy about whether to fix that by better performing means than /fp:source.
From the benchmarks I've seen, it does look like using the Intel specific compilers provide some performance/multithreading benefit over their Open Source alternatives.
如果浮点数精度对您很重要,那么请使用 Visual Studio 编译器而不是 Intel 编译器。 32 位与 64 位应用程序使用英特尔编译器计算时可以给出不同的结果。 (已检查)。 32 位和 64 位上的 Visual Studio 编译器结果是相同的。
if floating number precision is important to you then use Visual studio compiler and not intel compiler. 32 bit vs 64 bit application Can give you different result on calculation with Intel compiler. (checked). Visual studio compiler result on 32 bit vs 64 bit will be same.
发布评论
评论(5)
如果您使用的是 Windows,它们确实比英特尔处理器上的其他编译器提供了很好的速度提升。有一个已知的行为,他们使用非英特尔处理器(AMD、VIA)选择非常慢的代码路径,并围绕该问题进行反垄断调查。
如果您使用线程构建块或其他功能,您还可能面临将代码长期绑定到英特尔编译器的风险,因为其他地方不存在该功能。
Linux 上的 GCC 4.5 几乎与 Intel 编译器相当。该平台上没有明显的赢家。
If you are on Windows, they do provide a nice speed boost over other compilers on Intel processors. There is a known behavior where they pick a very slow code path with non-Intel processors (AMD, VIA), and antitrust probes surrounding the issue.
If you use the thread building blocks or other features, you also risk tying your code to the Intel compiler long term as the functionality doesn't exist elsewhere.
GCC 4.5 on Linux is nearly on-par with the Intel compiler. There is no clear winner on that platform.
根据我使用英特尔编译器(仅限 C)的小经验,我想说它们非常优越。具体来说,OpenMP 库比开源版本快得多。 “值得”取决于你的情况,虽然它们很贵,但在我看来更好。
In the small experience I've had with intel compilers (C only), I would say their are vastly superior. Specifically the OpenMP library was much much faster than the open source version. "Worth it" depends on your situation though, they are expensive, but they are better IMO.
如果您要比较 ICL 与 MSVC++ 的数值行为,则必须考虑 /fp: 设置的不同行为。
ICL /fp:source(比默认值更不积极)相当于 MSVC /fp:fast(比默认值更积极)。
Microsoft 不会执行 ICL 默认启用的任何优化。其中包括 simd 减少(通常会提高准确性,但幅度不可预测)。默认情况下,ICL 也违反了有关括号的标准。关于是否通过比 /fp:source 性能更好的方法来解决这个问题似乎仍然存在争议。
If you're comparing the numerical behavior of ICL vs. MSVC++ you must take into account the different behavior of the /fp: settings.
ICL /fp:source (less aggressive than default) is equivalent to MSVC /fp:fast (more aggressive than default).
Microsoft doesn't perform any of the optimizations which are enabled by ICL default. These include simd reductions (which usually improve accuracy, but by an unpredictable margin). ICL also violates the standard about parens by default. There still seems to be a controversy about whether to fix that by better performing means than /fp:source.
从我所看到的基准来看,使用英特尔特定编译器确实比其开源替代方案提供了一些性能/多线程优势。
From the benchmarks I've seen, it does look like using the Intel specific compilers provide some performance/multithreading benefit over their Open Source alternatives.
如果浮点数精度对您很重要,那么请使用 Visual Studio 编译器而不是 Intel 编译器。
32 位与 64 位应用程序使用英特尔编译器计算时可以给出不同的结果。 (已检查)。
32 位和 64 位上的 Visual Studio 编译器结果是相同的。
if floating number precision is important to you then use Visual studio compiler and not intel compiler.
32 bit vs 64 bit application Can give you different result on calculation with Intel compiler. (checked).
Visual studio compiler result on 32 bit vs 64 bit will be same.