Tips and techniques on using the Intel Compilers to maximize your application performance.
IPO
Using xilink with /Qipo and /Qparallel options may cause an Internal compiler error
Using xilink with "ipo" and "parallel" options simultaneously with the Intel® Compiler 11.0 initial release may cause an internal compiler error.
/Qvec-reportN doesn't work with /Qipo in the IDE
xilink.exe doesn't support /Qvec-report, so it's impossible to change the default vectorization messaging behavior (i.e. none) when using IPO in the Microsoft Visual Studio* IDE.
英特尔编译器优化系列:深入IPO优化
在上一篇文章《英特尔编译器优化系列:初识IPO优化》中,我们认识了IPO以及IPO的使用步骤。下面让我们进一步深入了解IPO。
使用IPO优化大型应用程序
我们知道,IPO在“编译”时将源代码转换成中间语言文件,然后在“链接”时将所有的中间语言文件合并为一个中间语言文件,然后对其进行分析与优化,优化后生成一个的二进制文件,然后传递给链接器进行链接。因此我们会发现“编译”这一步的速度是非常快的,“链接”的速度要比没有使用IPO时慢得多。这里给“编译”和“链接”打上引号,是特指IPO优化步骤中的两个阶段,请参考《英特尔编译器优化系列:初识IPO优化》内的“IPO示意图”。
使用IPO优化大型应用程序
我们知道,IPO在“编译”时将源代码转换成中间语言文件,然后在“链接”时将所有的中间语言文件合并为一个中间语言文件,然后对其进行分析与优化,优化后生成一个的二进制文件,然后传递给链接器进行链接。因此我们会发现“编译”这一步的速度是非常快的,“链接”的速度要比没有使用IPO时慢得多。这里给“编译”和“链接”打上引号,是特指IPO优化步骤中的两个阶段,请参考《英特尔编译器优化系列:初识IPO优化》内的“IPO示意图”。
英特尔编译器优化系列:初识IPO优化
认识IPO
IPO优化(全称Interprocedural Optimization)在很长一段时间内都是英特尔编译器的几大特色优化手段之一。在我刚接触英特尔编译器的时候,编译器版本号还是7.0,由于IPO易于使用而且优化效果出色,IPO就已经被英特尔编译器用户广泛使用了。
首先,我们来看一看IPO主要包含哪些优化:
IPO优化(全称Interprocedural Optimization)在很长一段时间内都是英特尔编译器的几大特色优化手段之一。在我刚接触英特尔编译器的时候,编译器版本号还是7.0,由于IPO易于使用而且优化效果出色,IPO就已经被英特尔编译器用户广泛使用了。
首先,我们来看一看IPO主要包含哪些优化:
- Inlining:将函数体插入到函数调用点,以减少函数调用带来的开销。但是并不是一见到函数调用就要inline,因为inline也是有一定开销的,inline后生成的代码变大了,过大的代码可能导致i-cache miss的问题。所以英特尔编译器会分析源代码,根据具体情况来决定是否要做inlining。Inlining的变种是Partial inlining,例如下面伪代码
void foo()
{
some work here...
if (...)
{
some other work here...
}
ipo: warning #11015: Warning unknown option -no_compact_unwind
ipo: warning #11015: Warning unknown option -no_compact_unwind
