Intel C++ Compiler Support for Ubuntu 13.10

Intel C++ Compiler Support for Ubuntu 13.10

imagem de Jason M.

Ubuntu 13.10 was released about a week ago (Oct. 17th). It comes by default with gcc-4.8 which is causing several problems for me while using the most recent version of the Intel C++ compiler (icc (ICC) 14.0.0 20130728). Specifically, the Intel compiler is having a hard time finding standard header files such as c++config.h. I believe this is because Ubuntu 13.10 is not supported for this version of the Intel compiler.

Does anyone know when Ubuntu 13.10 will be supported? In the past how long does it take before new releases are supported?

12 posts / 0 new
Último post
Para obter mais informações sobre otimizações de compiladores, consulte Aviso sobre otimizações.
imagem de Tim Prince

Perhaps you could post a simple test case to illustrate your point, including what you get from g++ -v as well as icpc -#.

That's not a standard header in the usual sense of one which is defined by language standards, but it's a feature of g++ since long ago, and there's no excuse for Ubuntu changing it since versions which are tested with icpc.

A new update of icc should be along in a few days.

If Ubuntu hasn't thrown in another twist on their non-standard file-system organization for the 64-bit linux (you didn't say whether you are discussing 64-bit), it's hard to believe it wouldn't be covered by what is already supported.   You should be able to get some evidence on whether your g++ is revealing its install paths to icpc by

g++ --print-search-dirs

If the g++ specific include files aren't present in an include path parallel to the /lib/ paths shown by the command, it looks more like a bug in the gcc installation which icpc couldn't be expected to deal with.

imagem de Casey

I run Gentoo (Wholly unsupported, not just a too-new version) with GCC 4.8 and ICC/icpc/ifort 14.0 with no problems. As Tim says, you'll need to post some details in order to receive help. 

imagem de Jason M.

I am running a fresh install of Xubuntu 13.10 64-bit on a Thinkpad W530. This simple program illustrates the trouble I'm having:

#include <iostream>
int main()
{
    std::cout << "Hello, world!" << std::endl;
    return 0;
}

I am compiling with

icc main.cpp

The error text is:

In file included from main.cpp(1):
/usr/include/c++/4.8/iostream(38): catastrophic error: cannot open source file "bits/c++config.h"
  #include <bits/c++config.h>
                             ^
compilation aborted for main.cpp (code 4)

Running g++ -v gives:

Using built-in specs.
COLLECT_GCC=g++
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/4.8/lto-wrapper
Target: x86_64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Ubuntu/Linaro 4.8.1-10ubuntu8' --with-bugurl=file:///usr/share/doc/gcc-4.8/README.Bugs --enable-languages=c,c++,java,go,d,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-4.8 --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.8 --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --enable-gnu-unique-object --enable-plugin --with-system-zlib --disable-browser-plugin --enable-java-awt=gtk --enable-gtk-cairo --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-4.8-amd64/jre --enable-java-home --with-jvm-root-dir=/usr/lib/jvm/java-1.5.0-gcj-4.8-amd64 --with-jvm-jar-dir=/usr/lib/jvm-exports/java-1.5.0-gcj-4.8-amd64 --with-arch-directory=amd64 --with-ecj-jar=/usr/share/java/eclipse-ecj.jar --enable-objc-gc --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --with-tune=generic --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu
Thread model: posix
gcc version 4.8.1 (Ubuntu/Linaro 4.8.1-10ubuntu8) 

I could not get icpc -# to work. The output of icpc -v is:

icpc version 14.0.0 (gcc version 4.8.0 compatibility)

The output of g++ --print-search-dirs is:

install: /usr/lib/gcc/x86_64-linux-gnu/4.8/
programs: =/usr/lib/gcc/x86_64-linux-gnu/4.8/:/usr/lib/gcc/x86_64-linux-gnu/4.8/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/4.8/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../x86_64-linux-gnu/bin/x86_64-linux-gnu/4.8/:/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../x86_64-linux-gnu/bin/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../x86_64-linux-gnu/bin/
libraries: =/opt/intel/composer_xe_2013_sp1.0.080/compiler/lib/intel64/x86_64-linux-gnu/4.8/:/opt/intel/composer_xe_2013_sp1.0.080/compiler/lib/intel64/x86_64-linux-gnu/:/opt/intel/composer_xe_2013_sp1.0.080/compiler/lib/intel64/../lib/:/opt/intel/composer_xe_2013.4.183/compiler/lib/intel64/x86_64-linux-gnu/4.8/:/opt/intel/composer_xe_2013.4.183/compiler/lib/intel64/x86_64-linux-gnu/:/opt/intel/composer_xe_2013.4.183/compiler/lib/intel64/../lib/:/opt/intel/composer_xe_2013.4.183/compiler/lib/intel64/x86_64-linux-gnu/4.8/:/opt/intel/composer_xe_2013.4.183/compiler/lib/intel64/x86_64-linux-gnu/:/opt/intel/composer_xe_2013.4.183/compiler/lib/intel64/../lib/:/opt/intel/composer_xe_2013.4.183/mkl/lib/intel64/x86_64-linux-gnu/4.8/:/opt/intel/composer_xe_2013.4.183/mkl/lib/intel64/x86_64-linux-gnu/:/opt/intel/composer_xe_2013.4.183/mkl/lib/intel64/../lib/:/usr/lib/gcc/x86_64-linux-gnu/4.8/:/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../x86_64-linux-gnu/lib/x86_64-linux-gnu/4.8/:/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../x86_64-linux-gnu/lib/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../x86_64-linux-gnu/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/4.8/:/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../lib/:/lib/x86_64-linux-gnu/4.8/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/4.8/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/opt/intel/composer_xe_2013_sp1.0.080/compiler/lib/intel64/:/opt/intel/composer_xe_2013.4.183/compiler/lib/intel64/:/opt/intel/composer_xe_2013.4.183/compiler/lib/intel64/:/opt/intel/composer_xe_2013.4.183/mkl/lib/intel64/:/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../x86_64-linux-gnu/lib/:/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../:/lib/:/usr/lib/

From the example program above, it looks like icc is looking for the file in /usr/include/c++/4.8/. The file is actually in /usr/include/x86_64-linux-gnu/c++/4.8. If I use:

setenv __INTEL_POST_CFLAGS "-I/usr/include/x86_64-linux-gnu/c++/4.8"

It solves most problems but I am still having lots of problems compiling code using the Boost libraries which otherwise compile fine with g++.

imagem de Casey

Quote:

Jason M. wrote:

I could not get icpc -# to work.

Put the "-#" in a normal compile command e.g. "icpc -# code.cc".

imagem de Jason M.

The output of "icpc -# main.cpp" is:

/opt/intel/composer_xe_2013_sp1.0.080/bin/intel64/mcpcom  
    -_g 
    -mP3OPT_inline_alloca 
    -D__HONOR_STD 
    -D__ICC=1400 
    -D__INTEL_COMPILER=1400 
    -D__INTEL_COMPILER_UPDATE=0 
    -D__PTRDIFF_TYPE__=long 
    "-D__SIZE_TYPE__=unsigned long" 
    -D__WCHAR_TYPE__=int 
    "-D__WINT_TYPE__=unsigned int" 
    "-D__INTMAX_TYPE__=long int" 
    "-D__UINTMAX_TYPE__=long unsigned int" 
    -D__LONG_MAX__=9223372036854775807L 
    -D__QMSPP_ 
    -D__OPTIMIZE__ 
    -D__NO_MATH_INLINES 
    -D__NO_STRING_INLINES 
    -D__GNUC_GNU_INLINE__ 
    -D__GNUG__=4 
    -D__GNUC__=4 
    -D__GNUC_MINOR__=8 
    -D__GNUC_PATCHLEVEL__=0 
    -D__LP64__ 
    -D_LP64 
    -D_GNU_SOURCE=1 
    -D__DEPRECATED=1 
    -D__GXX_WEAK__=1 
    -D__GXX_ABI_VERSION=1002 
    "-D__USER_LABEL_PREFIX__= " 
    -D__REGISTER_PREFIX__= 
    -D__INTEL_RTTI__ 
    -D__EXCEPTIONS=1 
    -D__unix__ 
    -D__unix 
    -D__linux__ 
    -D__linux 
    -D__gnu_linux__ 
    -B 
    -Dunix 
    -Dlinux 
    "-_Asystem(unix)" 
    -D__ELF__ 
    -D__x86_64 
    -D__x86_64__ 
    "-_Acpu(x86_64)" 
    "-_Amachine(x86_64)" 
    -D_MT 
    -D__INTEL_COMPILER_BUILD_DATE=20130728 
    -D__INTEL_OFFLOAD 
    -D__i686 
    -D__i686__ 
    -D__pentiumpro 
    -D__pentiumpro__ 
    -D__pentium4 
    -D__pentium4__ 
    -D__tune_pentium4__ 
    -D__SSE2__ 
    -D__SSE__ 
    -D__MMX__ 
    -_k 
    -_8 
    -_l 
    -_a 
    -_b 
    --gnu_version=480 
    -_W5 
    --gcc-extern-inline 
    -p 
    --bool 
    -tused 
    -x 
    --multibyte_chars 
    --sys_include 
    /opt/intel/composer_xe_2013.4.183/mkl/include 
    --sys_include 
    /opt/intel/composer_xe_2013_sp1.0.080/compiler/include/intel64 
    --sys_include 
    /opt/intel/composer_xe_2013_sp1.0.080/compiler/include 
    --sys_include 
    /usr/include/c++/4.8 
    --sys_include 
    /usr/include/c++/4.8/x86_64-linux-gnu 
    --sys_include 
    /usr/include/c++/4.8/backward 
    --sys_include 
    /usr/local/include 
    --sys_include 
    /usr/lib/gcc/x86_64-linux-gnu/4.8/include 
    --sys_include 
    /usr/lib/gcc/x86_64-linux-gnu/4.8/include-fixed 
    --sys_include 
    /usr/include 
    --sys_include 
    /usr/include/x86_64-linux-gnu 
    --array_section 
    --simd 
    --simd_func 
    --offload_mode=1 
    --offload_target_names=mic,MIC 
    --offload_unique_string=icpc686044915XmlGPt 
    --bool 
    -mP1OPT_version=14.0-intel64 
    -mGLOB_diag_file=/tmp/icpcqpb7Mj.diag 
    -mP1OPT_print_version=FALSE 
    -mCG_use_gas_got_workaround=F 
    -mP2OPT_align_option_used=TRUE 
    -mGLOB_gcc_version=480 
    -mGLOB_options_string=-# 
    -mGLOB_cxx_limited_range=FALSE 
    -mCG_extend_parms=FALSE 
    -mGLOB_compiler_bin_directory=/opt/intel/composer_xe_2013_sp1.0.080/bin/intel64 
    -mGLOB_as_output_backup_file_name=/tmp/icpcvS1dQ9as_.s 
    -mIPOPT_activate 
    -mIPOPT_lite 
    -mGLOB_em64t 
    -mGLOB_instruction_tuning=0x0 
    -mGLOB_product_id_code=0x22006d8f 
    -mCG_bnl_movbe=T 
    -mGLOB_extended_instructions=0x8 
    -mP3OPT_use_mspp_call_convention 
    -mPGOPTI_value_profile_use=T 
    -mP2OPT_il0_array_sections=TRUE 
    -mGLOB_offload_mode=1 
    -mP2OPT_offload_unique_var_string=icpc686044915XmlGPt 
    -mP2OPT_hlo_level=2 
    -mP2OPT_hlo 
    -mP2OPT_hpo_rtt_control=0 
    -mIPOPT_args_in_regs=0 
    -mP2OPT_disam_assume_nonstd_intent_in=FALSE 
    -mGLOB_imf_mapping_library=/opt/intel/composer_xe_2013_sp1.0.080/bin/intel64/libiml_attr.so 
    -mIPOPT_obj_output_file_name=/tmp/icpcqpb7Mj.o 
    -mIPOPT_whole_archive_fixup_file_name=/tmp/icpcwarchJkmnn7 
    -mGLOB_linker_version=2.23.52.20130913 
    -mGLOB_long_size_64 
    -mGLOB_routine_pointer_size_64 
    -mGLOB_driver_tempfile_name=/tmp/icpctempfileT61as2 
    -mP3OPT_asm_target=P3OPT_ASM_TARGET_GAS 
    -mGLOB_async_unwind_tables=TRUE 
    -mGLOB_obj_output_file=/tmp/icpcqpb7Mj.o 
    -mGLOB_source_dialect=GLOB_SOURCE_DIALECT_C_PLUS_PLUS 
    -mP1OPT_source_file_name=main.cpp 
    -mGLOB_eh_linux 
    main.cpp
ld  
    /usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/crt1.o 
    /usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/crti.o 
    /usr/lib/gcc/x86_64-linux-gnu/4.8/crtbegin.o 
    --eh-frame-hdr 
    --build-id 
    -dynamic-linker 
    /lib64/ld-linux-x86-64.so.2 
    -o 
    a.out 
    -L/opt/intel/composer_xe_2013_sp1.0.080/compiler/lib/intel64 
    -L/opt/intel/composer_xe_2013.4.183/compiler/lib/intel64 
    -L/opt/intel/composer_xe_2013.4.183/compiler/lib/intel64 
    -L/opt/intel/composer_xe_2013.4.183/mkl/lib/intel64 
    -L/opt/intel/composer_xe_2013_sp1.0.080/compiler/lib/intel64 
    -L/usr/lib/gcc/x86_64-linux-gnu/4.8/ 
    -L/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/ 
    -L/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../lib/ 
    -L/lib/x86_64-linux-gnu/ 
    -L/lib/../lib64 
    -L/lib/../lib/ 
    -L/usr/lib/x86_64-linux-gnu/ 
    -L/usr/lib/../lib/ 
    -L/opt/intel/composer_xe_2013_sp1.0.080/compiler/lib/intel64/ 
    -L/opt/intel/composer_xe_2013.4.183/compiler/lib/intel64/ 
    -L/opt/intel/composer_xe_2013.4.183/mkl/lib/intel64/ 
    -L/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../ 
    -L/lib64 
    -L/lib/ 
    -L/usr/lib 
    -L/usr/lib/i386-linux-gnu 
    /tmp/icpcqpb7Mj.o 
    -Bstatic 
    -limf 
    -lsvml 
    -lirng 
    -Bdynamic 
    -lm 
    -Bstatic 
    -lipgo 
    -ldecimal 
    --as-needed 
    -Bdynamic 
    -lcilkrts 
    --no-as-needed 
    -lstdc++ 
    -lgcc 
    -lgcc_s 
    -Bstatic 
    -lirc 
    -lsvml 
    -Bdynamic 
    -lc 
    -lgcc 
    -lgcc_s 
    -Bstatic 
    -lirc_s 
    -Bdynamic 
    -ldl 
    -lc 
    /usr/lib/gcc/x86_64-linux-gnu/4.8/crtend.o 
    /usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/crtn.o
rm /tmp/icpclibgccehasjr
rm /tmp/icpcgnudirsr06GNo
rm /tmp/icpcqpb7Mj.o
rm /tmp/icpcdummy4A1Rhh.c
rm /tmp/icpcdashv5SfEMe
rm /tmp/icpcgasb5J5ic
rm /tmp/icpcvS1dQ9as_.s
rm /tmp/icpcldashvom7wU4
rm /tmp/icpctempfileT61as2
rm /tmp/icpcargozJZZZ
rm /tmp/icpcgnudirsiEiaPI
rm /tmp/icpcgnudirsdNSynG
rm /tmp/icpcgnudirsNUFrWD
rm /tmp/icpcldashv9diRvB
rm /tmp/icpcgnudirsZFaM5y
rm /tmp/icpcldashvL7lbGw
rm /tmp/icpcgnudirs6Us4gu
rm /tmp/icpcgnudirshxNrSr
rm /tmp/icpcqpb7Mj.o

imagem de Andrew M.

I am running Ubuntu 13.10 and I believe I may be having the same issue; When following the instructions on http://software.intel.com/en-us/articles/numpyscipy-with-intel-mkl for compiling numpy/scipy with mkl, the proccess fails at: 

>> python setup.py config --compiler=intelem --fcompiler=intelem build_clib --compiler=intelem --fcompiler=intelem build_ext --compiler=intelem --fcompiler=intelem instal

building 'scipy.interpolate._interpolate' extension
compiling C++ sources
C compiler: icc -O3 -g -fPIC -fp-model strict -fomit-frame-pointer -openmp -xhost

compile options: '-Iscipy/interpolate/src -I/usr/local/lib/python2.7/dist-packages/numpy/core/include -I/usr/include/python2.7 -c'
icc: scipy/interpolate/src/_interpolate.cpp
In file included from scipy/interpolate/src/interpolate.h(3),
                 from scipy/interpolate/src/_interpolate.cpp(4):
/usr/include/c++/4.8/iostream(38): catastrophic error: cannot open source file "bits/c++config.h"
  #include <bits/c++config.h>
                             ^

compilation aborted for scipy/interpolate/src/_interpolate.cpp (code 4)
In file included from scipy/interpolate/src/interpolate.h(3),
                 from scipy/interpolate/src/_interpolate.cpp(4):
/usr/include/c++/4.8/iostream(38): catastrophic error: cannot open source file "bits/c++config.h"
  #include <bits/c++config.h>
                             ^

compilation aborted for scipy/interpolate/src/_interpolate.cpp (code 4)
error: Command "icc -O3 -g -fPIC -fp-model strict -fomit-frame-pointer -openmp -xhost -Iscipy/interpolate/src -I/usr/local/lib/python2.7/dist-packages/numpy/core/include -I/usr/include/python2.7 -c scipy/interpolate/src/_interpolate.cpp -o build/temp.linux-x86_64-2.7/scipy/interpolate/src/_interpolate.o" failed with exit status 4

imagem de Jason M.

I have updated to service pack 1 but am still having the same problems as before. These problems force me to use g++ instead of the Intel compiler. As a result of the known issues of using the combination of g++, openMP, and Intel MKL, I cannot use the MKL library either.

Is there anything I can do to fix the problem on my end? This (and similar) problem(s) has been reported several times through various websites:

http://stackoverflow.com/questions/20163288/icc-14-0-cannot-even-compile...

http://software.intel.com/en-us/forums/topic/485684

http://software.intel.com/en-us/forums/topic/475786

http://askubuntu.com/questions/363955/gcc-4-8-header-files

imagem de Tim Prince

Some of those posts make it look as if Ubuntu has changed somewhat from the past unusual scheme of supporting x86_64 which was inherited from Debian but is different from all other distros supported for icc.  In some cases, attempting to use icc (rather than icpc) as a replacement for g++ is asking for trouble.  In principle, icpc should choose the same paths for include files and libraries as the active g++ (according to g++ --print-search-dirs).  So it may be difficult to use a newer version of Ubuntu than those which are specifically designated as fully tested and supported in the icc release notes of your installed version, or even to run after upgrading the g++ from the one originally supplied with that Ubuntu.

Even on Red Hat, icpc will break if too recent a version of g++ is active, although normally it's possible to run with g++ 4.8.2 (the supported one for Red Hat is g++ 4.4.x, but icpc, since version 13.1, is claimed fully compatible with g++ 4.7).  Note that g++ libraries are usually incompatible across versions such as between 4.7 and 4.8, so there are all manner of ways to run into difficulties.

If you're running with threaded MKL, you must take care either to use libiomp5 throughout (it supports OpenMP function calls from gcc/gfortran) or to use libgomp with the gnu-compatible libraries supplied with MKL and not use any calls to libiomp5.  I suppose that's included in "known issues."  MKL doesn't support much in the way of calls from C++, except via extern "C," so it shouldn't get involved in these g++ header and library path issues.  I haven't used libiomp much lately with g++ since the libgomp became fairly good.

imagem de bernaske

Hi,

i use this testcase on openSUSE 12.2, 12.3 and 13.1 and on the new openSUSE Factory ( 13.2 ? ) as compiler i use them from

Parallel Studio 2013 XE SP 1

linux-n61jv:~ # icpc --version
icpc (ICC) 14.0.1 20131008
Copyright (C) 1985-2013 Intel Corporation.  All rights reserved.

no problems,  to compile , link and execute on all openSUSE Version.

best regards

Franz

 

 

imagem de Jason M.

Tim Prince,

Thank you for you detailed response. Unfortunately I have the same problem when using icpc rather than icc. I've noticed that g++ --print-search-dirs doesn't explicitly give information about the include directories, only the library paths.

Thanks for your help,
Jason

imagem de tp
Best Reply

I have posted a workaround in another thread.

http://software.intel.com/en-us/forums/topic/489013#comment-1778587

Faça login para deixar um comentário.