Software Archive
Read-only legacy content

Error #165 in C++ library header (stl_uninitialized.h(576)) while compiling for mic

Surya_Narayanan_N_
501 Views

Hello, 

      I am trying to comopile Galois benchmark for mic. I have no problem compiling it in GCC or ICC host compiler. When I try to compile it for mic I get the problem in C++ header file which you can find it below. And I find that the same stl_uninitialized.h is different in different compiler.

snataraj@phileas:~/Galois-2.1.8/build/mic$ make -j independentset
[100%] Built target galois
[100%] Building CXX object apps/independentset/CMakeFiles/independentset.dir/IndependentSet.cpp.o
/usr/linux-k1om-4.7/linux-k1om/../x86_64-k1om-linux/include/c++/4.7.0/bits/stl_uninitialized.h(576): error #165: too few arguments in function call
__alloc.construct(std::__addressof(*__cur));
^
compilation aborted for /home/snataraj/Galois-2.1.8/apps/independentset/IndependentSet.cpp (code 2)
make[3]: *** [apps/independentset/CMakeFiles/independentset.dir/IndependentSet.cpp.o] Error 2
make[2]: *** [apps/independentset/CMakeFiles/independentset.dir/all] Error 2
make[1]: *** [apps/independentset/CMakeFiles/independentset.dir/rule] Error 2
make: *** [independentset] Error 2

Your help will be highly appreciated. 

Thank you

0 Kudos
5 Replies
Ravi_N_Intel
Employee
501 Views

gcc changed the call in __uninitialized_default_n_a (and __uninitialized_default_a) from:
__alloc.construct(std::__addressof(*__cur));
to:
__traits::construct(__alloc, std::__addressof(*__cur));
between 4.7.0 and 4.7.3.

The issue has to do with whether construct() can expect a single argument or not.  See: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51626 for more information.

Could you to replace the stl_uninitialized.h in the target directory (the one off /usr/linux-k1om-4.7/) with a newer version?

0 Kudos
Surya_Narayanan_N_
501 Views

Ravi, Thank you for the prompt reply. Infact I was looking for the new version of linux-k1om-4.7 but I havn't found it till now. Could you please give me the link from where I can download the latest version?

0 Kudos
Ravi_N_Intel
Employee
501 Views

We have not released a newer verions of linux-k1om-4.7

Your current options
- Use the older gcc version on host
- copy over the host header file to/usr/linux-k1om-.47
- use #ifdef __MIC__ else   at the point of invocation of the constructor.

0 Kudos
Kevin_D_Intel
Employee
501 Views

I captured the details of the issue and reported it to the MPSS team requesting resolution in a future MPSS release that includes GCC 4.7.3 (or newer) which offers the header change needed.

I will update this thread as I learn more regarding a resolution. Thank you for making us aware of this issue.

0 Kudos
Henk-Jan_L_
Beginner
501 Views

Hi, 

I have the exact same problem which for my current project is a complete show stopper.

I've tried to replace the stl_uninitialized.h in the target /usr/linux-k1om-4.7/x86_64-k1om-linux/include/c++/4.7.0/bits/ with the file from version 4.9.2, but that resulted in several other compilation errors.

I’m using mpss 3.4.4 (on Ubuntu 14.04.2), I checked whether upgrading could solve the problem, but the latest mpss (currently 3.5.1) also sports g++ 4.7.0.

Question: when will the gcc compiler be upgraded, or what can I do to resolve this issue. 

Regards Henk-Jan.

0 Kudos
Reply