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

function cannot be referenced -- it is a deleted function

4f0drlp7eyj3
Beginner
4,101 Views

I am attempting to build a third-party application, https://github.com/idaholab/moose, using the instructions at http://www.mooseframework.org/getting-started/.

To adapt to our Intel Parallel Studio Cluster ed., the configure command in the main build script of this application (scripts/update_and_rebuild_libmesh.sh) was modified with these lines:

               --with-thread-model=tbb \
               --with-tbb=/nopt/intel/17.0.5/tbb \
               CC=mpiicc CXX=mpiicpc FC=mpiifort F77=mpif77 \
               CFLAGS="-axCORE-AVX2,AVX" \
               CXXFLAGS="-axCORE-AVX2,AVX" \
               FCFLAGS="-axCORE-AVX2,AVX" F77FLAGS="-axCORE-AVX2,AVX" \
               LDFLAGS="-Wl,-rpath-link,/nopt/intel/psxe2017u2/compilers_and_libraries_2017.5.239/linux/compiler/lib/intel64" \
               PETSC_DIR=$HOME/petsc-3.8 PETSC_ARCH=impi-intel \

 

I load the Intel environment on top of an Anaconda version 5 build environment, but the same thing happens on top of a standalone GCC 7.2 installation.

The build proceeds fine until:

...
  CXX      src/systems/libmesh_dbg_la-fem_context.lo
/nopt/nrel/apps/anaconda/5.0.1-cos7/bin/../x86_64-conda_cos6-linux-gnu/include/c++/7.2.0/ext/new_allocator.h(136): error: function "std::pair<_T1, _T2>::pair(const std::pair<_T1, _T2> &) [with _T1=const libMesh::FEType, _T2=std::unique_ptr<libMesh::FEAbstract, std::default_delete<libMesh::FEAbstract>>]" (declared at line 292 of "/nopt/nrel/apps/anaconda/5.0.1-cos7/bin/../x86_64-conda_cos6-linux-gnu/include/c++/7.2.0/bits/stl_pair.h") cannot be referenced -- it is a deleted function

 

I have tried adding to CFLAGS and CXXFLAGS "-no-gcc-include-dir -use-intel-optimized-headers", but the identical error is generated.

The developers claim that their tests with the same Intel compilers pass fine.

Questions,

1. Is there an obvious workaround that uses the same commands?
2. Is there a way to substitute Intel headers and avoid the GCC headers, in case there is an inconsistency?

Linux login4 3.10.0-693.5.2.el7.x86_64 #1 SMP Fri Oct 20 20:32:50 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux

 

Thanks,

Chris

 

0 Kudos
1 Solution
JenniferJ
Moderator
4,101 Views
0 Kudos
3 Replies
JenniferJ
Moderator
4,102 Views

17.0 compiler does not support gcc7.2. 

try an older gcc like gcc 6.2

see release-notes: https://software.intel.com/en-us/articles/intel-c-compiler-170-for-linux-release-notes-for-intel-parallel-studio-xe-2017#sysreq ;

Jennifer 

0 Kudos
Viet_H_Intel
Moderator
4,101 Views

 

Hi Chris,

Seems like you have a newer GCC version (7.2) which isn't supported in ICC 17.0.5. Do you have an older GCC version installed? If so, you can try  -gcc-name=<name>: name and location of gcc if not where expected.

Thanks,

Viet

0 Kudos
4f0drlp7eyj3
Beginner
4,101 Views

Thanks Jennifer and Viet, using GCC 6.2 appears to have gotten past this issue. (Sorry I can't flag both your replies as Best, they're both very helpful!)

Just so I know, does Intel distribute a full set of headers in their compiler suites? Or are there some that must be supplied by GCC? From the description of the -no-gcc-include-dir option, it sounded like GCC could be bypassed, but I'm not sure if some standard C++ headers would still be missing.

Thanks again!  - Chris

0 Kudos
Reply