Intel® C++ Compiler
Community support and assistance for creating C++ code that runs on platforms based on Intel® processors.
7956 Discussions

Out of memory issue with multi file ipo

Kaan_Gök
Beginner
373 Views
As the title says, I have a large CAD application (consisting of approx. 960 C++ files), and I can't make the multi file ipo to work without getting the out of memory message. (I also tried /Qipo200-400-600-800 until /Qipo1000 with no luck.).

Is there a way to exclude some files (preferably with a compiler pragma) from the multi file optimization phase? There are lots of not-so-critical files, which will benefit from general optimizations, but do not need multi file optimizations.

The compiler setting at compiler's property pages for each .cpp file does not work for this purpose. (I disabled multi file ipo for halfmy .cpp files and still get the out of memory error).

A pragma would be very useful here because I have lost of project configurations, and settings the option using project settings for lots of files with lots of configurations is not easy. Witha pragma, I only need to write something like
#pragma intel excludefrommultifileipo for the secondary files, and it will be done for all my configurations.
0 Kudos
3 Replies
Robert_C_Intel1
Employee
373 Views
Quoting - Kaan Gk
As the title says, I have a large CAD application (consisting of approx. 960 C++ files), and I can't make the multi file ipo to work without getting the out of memory message. (I also tried /Qipo200-400-600-800 until /Qipo1000 with no luck.).

Are you running with debug (/Zi) enabled?Disabling it can save on memory if you don't absolutely needthis feature.

Is there a way to exclude some files (preferably with a compiler pragma) from the multi file optimization phase? There are lots of not-so-critical files, which will benefit from general optimizations, but do not need multi file optimizations.

No, the only way to do this is to modify what goes into your command line.

The compiler setting at compiler's property pages for each .cpp file does not work for this purpose. (I disabled multi file ipo for halfmy .cpp files and still get the out of memory error).

Do you know whether the disabling is actually happening?

A pragma would be very useful here because I have lost of project configurations, and settings the option using project settings for lots of files with lots of configurations is not easy. Witha pragma, I only need to write something like
#pragma intel excludefrommultifileipo for the secondary files, and it will be done for all my configurations.

Please submit a Quad and we'll put it on the list of requested items.

-- Robert Cox, Intel Compilers & Languages, IPO/PGO Project Lead

0 Kudos
Kaan_Gök
Beginner
373 Views
I don't have debug info enabled. And it "looks like" disabling ipo for some files at the IDE does not work, I couldn't get rid of the memory issue this way. (I disabled it for half of the project to try).

I'll submit a ticket. For your info, I managed to compile the application by cropping some non essential .cpp files (about 10 files) from the project. It looks like it was just at the edge of the memory limit. It takes 1 hour and 3 minutes on a core i7 920 dough... Ability to exclude some files will help speeding up the linking phase, too.
0 Kudos
jimdempseyatthecove
Honored Contributor III
373 Views

Robert,

A related issue with IPO and ability to select which to include/exclude from IPO is the following.

I produce a commercial library so the source codes for the library are on my system. For testing I create test applications that will for regression purposes have and have not IPO enabled. These test applications link to my library. I want IPO to be enabled amongst the files of the test application but NOT with the files of the library (users will not have source file access to the library). And I need the source files to the library on the system such that I can debug potential problems with the library. My testing requirements is not exclusive of other programmers testing requirements (have copy of library to run regression testing on test application code developed to use the library).

Jim Dempsey
0 Kudos
Reply