IPO

/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.
  • Microsoft Windows* (XP, Vista, 7)
  • C/C++
  • Fortran
  • Compilatore C++ Intel®
  • Intel® Parallel Composer
  • IDE
  • Vectorizer
  • IPO
  • /Qvec-report
  • /Qipo
  • Ottimizzazione
  • 英特尔编译器优化系列:深入IPO优化

    在上一篇文章《英特尔编译器优化系列:初识IPO优化》中,我们认识了IPO以及IPO的使用步骤。下面让我们进一步深入了解IPO。

    使用IPO优化大型应用程序

    我们知道,IPO在“编译”时将源代码转换成中间语言文件,然后在“链接”时将所有的中间语言文件合并为一个中间语言文件,然后对其进行分析与优化,优化后生成一个的二进制文件,然后传递给链接器进行链接。因此我们会发现“编译”这一步的速度是非常快的,“链接”的速度要比没有使用IPO时慢得多。这里给“编译”和“链接”打上引号,是特指IPO优化步骤中的两个阶段,请参考《英特尔编译器优化系列:初识IPO优化》内的“IPO示意图”。

    英特尔编译器优化系列:初识IPO优化

    认识IPO

    IPO优化(全称Interprocedural Optimization)在很长一段时间内都是英特尔编译器的几大特色优化手段之一。在我刚接触英特尔编译器的时候,编译器版本号还是7.0,由于IPO易于使用而且优化效果出色,IPO就已经被英特尔编译器用户广泛使用了。

    首先,我们来看一看IPO主要包含哪些优化:

      • Inlining:将函数体插入到函数调用点,以减少函数调用带来的开销。但是并不是一见到函数调用就要inline,因为inline也是有一定开销的,inline后生成的代码变大了,过大的代码可能导致i-cache miss的问题。所以英特尔编译器会分析源代码,根据具体情况来决定是否要做inlining。Inlining的变种是Partial inlining,例如下面伪代码 



    Iscriversi a IPO