Performance and Large Program Considerations
IPO-related Performance Issues
- Using IPO on very large programs might trigger internal limits of other compiler optimization phases.
- Applications where the compiler does not have sufficient intermediate representation (IR) coverage to do whole program analysis might not perform as well as those where IR information is complete.
- Do not use the link phase of an IPO compilation using mock object files produced for your application by a different compiler. Intel® compilers cannot inspect mock object files generated by other compilers for optimization opportunities.
- Update make files to call the appropriate Intel linkers when using IPO from scripts. For Linux, replace all instances ofldwithxild; for Windows, replace all instances oflinkwithxilink.
IPO for Large Programs
- Use the[Q]ipoNcompiler option and pass an integer value in the place ofN.
[Q]ipoN to Create Multiple Object Files
dpcpp -ipo2 -c a.cpp b.cpp
dpcpp-cl /Qipo2 /c a.cpp b.cpp
Understanding Code Layout and Multi-Object IPO
- The first routine is placed in.text00001, the second is placed in.text00002, and so on.
- The first routine is placed in.text$00001, the second is placed in.text$00002, and so on.