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

VS 2015.3 + IC 2017 Beta Upd1 => unable to obtain mapped memory (see pch_diag.txt)

Miket
Beginner
819 Views

Hello,

Am I alone, who started to receive "error : unable to obtain mapped memory (see pch_diag.txt)" after update to VS 2015 update 3 (I am using Intel 2017 Beta Update 1) ?

Yes, I am aware of a similar issue in the past (for example, https://software.intel.com/en-us/articles/unable-to-obtain-mapped-memory )

In my case adding an option

/Qoption,cpp,--pch_control=60000000

helped!

But this is extremely inconvenient, since at a different computer this option is causing the same error! Therefore I cannot move the project between computers easily.

Some information on the project: it uses std::, mkl, daal, omp, ipp  Therefore the pchi file is pretty large, > 168 Mb.

Best wishes,

    Michael

0 Kudos
7 Replies
Anoop_M_Intel
Employee
819 Views

Hi Miket,

I am checking on this with our compiler engineers. Do you face this issue only with Intel Compiler or u witness the same with Visual Studio Compiler too?

Thanks and Regards
Anoop

0 Kudos
Michael_R_Intel5
Employee
819 Views

As mentioned in the article linked above the compiler uses a default address of 0x30000000 in virtual memory.  While it is uncommon some systems are configured in such a way that this address is in use.  Here are some things to try:

1. Find an address that can be used on both your systems.  You can use -Qoption,cpp,--pch_control=2 on a PCH compile to get the pch_diag.txt file on the system that is working.

2. Add the -Qoption,cpp,--pch_control option to the icl.cfg file.  If you have different installations on your two systems this file will exist on both and can be different.

3. You may be able to investigate the VM layout on that machine and determine what is using this address.  If we knew what was different on the machine that fails we might be able to offer some type of workaround. 

Hope this is some help.

0 Kudos
Miket
Beginner
819 Views

Anoop Madhusoodhanan Prabha (Intel) wrote:

Hi Miket,

I am checking on this with our compiler engineers. Do you face this issue only with Intel Compiler or u witness the same with Visual Studio Compiler too?

Thanks and Regards
Anoop

Hi Anoop,

As I mentioned, this project uses Intel-specific headers: mkl, daal, ipp. Therefore I am afraid that VS compiler will not work in this case.

Regards,

    Michael

 

0 Kudos
Miket
Beginner
819 Views

Michael Rice (Intel) wrote:

3. You may be able to investigate the VM layout on that machine and determine what is using this address.  If we knew what was different on the machine that fails we might be able to offer some type of workaround. 

Dear Michael,

Thank you for the advice. What method to look at VM layout would you recommend (Windows 10 x64 and Windows 7 x64 systems)? I Googled for it, but without much success.

Best wishes,

     Michael

  

0 Kudos
Judith_W_Intel
Employee
819 Views

 

I think vmmap could be used.

 

First, create an mcpcom.arg file for the /Yc or /Yu compile that is failing by adding the /Q_keep option to the command line. You should see an mcpcom.arg file.

 

Then startup vmmap and use the “launch and trace a new process” tab, browse to mcpcom.exe and use @mcpcom.arg as argument.

 

When I do this I see a huge free space from 0x039C0000 to 0x7FFE0000.  So 0x30000000 works fine.  I hope on a machine that is failing you’d see something used around 0x30000000 and maybe it would give some information on what it is.

 

0 Kudos
Miket
Beginner
819 Views

Dear Judith,

Judith Ward (Intel) wrote:

I think vmmap could be used.

Thank you for the advice. For the problematic system I have the following:

Clipboard01.jpg

Definitely something is using VM at 0x36FE0000.

I have LabVIEW 2016 installed at this computer. Probably some of its servers, etc. took this memory?

Best wishes,

   Michael

0 Kudos
Judith_W_Intel
Employee
819 Views

 

Yes that looks like right. It looks like it's using only 64K of virtual memory.

Can you use the pch control option to use the space after it -- for example /Qoption,cpp,--pch_control=40000000?

Also can you tell what the application is that is using 0x60000000 on the other machine and see if 0x40000000 is available?

0 Kudos
Reply