Tpetra / Power8 / OpenMP, multiple definitions
Created by: jjellio
On a power8 machine, Trilinos is failing to build with libtpetra.so having multiple definitions of some functions. Perhaps sizeof(INT) and sizeof(LONG LONG) are the same?
[ 73%] Linking CXX shared library libtpetra.so
/opt/ibm/xlC/13.1.3/bin/.orig/xlC: warning: 1501-218 file ../../tsqr/src/libkokkostsqr.so.12.9 contains an incorrect file suffix
/opt/ibm/xlC/13.1.3/bin/.orig/xlC: warning: 1501-218 file ../../kernels/src/libtpetrakernels.so.12.9 contains an incorrect file suffix
/opt/ibm/xlC/13.1.3/bin/.orig/xlC: warning: 1501-218 file ../../classic/LinAlg/libtpetraclassiclinalg.so.12.9 contains an incorrect file suffix
/opt/ibm/xlC/13.1.3/bin/.orig/xlC: warning: 1501-218 file ../../classic/NodeAPI/libtpetraclassicnodeapi.so.12.9 contains an incorrect file suffix
/opt/ibm/xlC/13.1.3/bin/.orig/xlC: warning: 1501-218 file ../../classic/src/libtpetraclassic.so.12.9 contains an incorrect file suffix
/opt/ibm/xlC/13.1.3/bin/.orig/xlC: warning: 1501-218 file ../../../epetra/src/libepetra.so.12.9 contains an incorrect file suffix
/opt/ibm/xlC/13.1.3/bin/.orig/xlC: warning: 1501-218 file ../../../teuchos/remainder/src/libteuchosremainder.so.12.9 contains an incorrect file suffix
/opt/ibm/xlC/13.1.3/bin/.orig/xlC: warning: 1501-218 file ../../../teuchos/numerics/src/libteuchosnumerics.so.12.9 contains an incorrect file suffix
/opt/ibm/xlC/13.1.3/bin/.orig/xlC: warning: 1501-218 file ../../../teuchos/kokkoscomm/src/libteuchoskokkoscomm.so.12.9 contains an incorrect file suffix
/opt/ibm/xlC/13.1.3/bin/.orig/xlC: warning: 1501-218 file ../../../teuchos/kokkoscompat/src/libteuchoskokkoscompat.so.12.9 contains an incorrect file suffix
/opt/ibm/xlC/13.1.3/bin/.orig/xlC: warning: 1501-218 file ../../../kokkos/algorithms/src/libkokkosalgorithms.so.12.9 contains an incorrect file suffix
/opt/ibm/xlC/13.1.3/bin/.orig/xlC: warning: 1501-218 file ../../../kokkos/containers/src/libkokkoscontainers.so.12.9 contains an incorrect file suffix
/opt/ibm/xlC/13.1.3/bin/.orig/xlC: warning: 1501-218 file ../../../teuchos/comm/src/libteuchoscomm.so.12.9 contains an incorrect file suffix
/opt/ibm/xlC/13.1.3/bin/.orig/xlC: warning: 1501-218 file ../../../teuchos/parameterlist/src/libteuchosparameterlist.so.12.9 contains an incorrect file suffix
/opt/ibm/xlC/13.1.3/bin/.orig/xlC: warning: 1501-218 file ../../../teuchos/core/src/libteuchoscore.so.12.9 contains an incorrect file suffix
/opt/ibm/xlC/13.1.3/bin/.orig/xlC: warning: 1501-218 file ../../../kokkos/core/src/libkokkoscore.so.12.9 contains an incorrect file suffix
CMakeFiles/tpetra.dir/Tpetra_Vector_INT_INT_LONG_LONG_OPENMP.cpp.o:(.data+0x3e0): multiple definition of `_ZNK6Kokkos4Impl11ParallelForINS_12Experimental4Impl16ViewValueFunctorINS_6OpenMPEiLb1EEENS_11RangePolicyIJS5_EEES5_E16execute_scheduleINS_6StaticEEENSt9enable_ifIXsr3std7is_sameIT_SB_EE5valueEvE4typeEv$$OL$$1RVL8FE'
CMakeFiles/tpetra.dir/Tpetra_Vector_INT_INT_INT_OPENMP.cpp.o:(.data+0x3e0): first defined here
CMakeFiles/tpetra.dir/Tpetra_Vector_INT_INT_LONG_LONG_OPENMP.cpp.o:(.data+0x3e4): multiple definition of `_ZNK6Kokkos4Impl14ParallelReduceIN10KokkosBlas4Impl15V_Nrm2w_FunctorINS_12Experimental4ViewIiJNS_11LayoutRightENS_6DeviceINS_6OpenMPENS_9HostSpaceEEENS_12MemoryTraitsILj1EEEEEENS6_IPKiJNS_10LayoutLeftESB_SD_EEEiEENS_11RangePolicyIJS9_iEEENS_11InvalidTypeES9_E16execute_scheduleINS_6StaticEEENSt9enable_ifIXsr3std7is_sameIT_SP_EE5valueEvE4typeEv$$OL$$2RVL9A5'
CMakeFiles/tpetra.dir/Tpetra_Vector_INT_INT_INT_OPENMP.cpp.o:(.data+0x3e4): first defined here
CMakeFiles/tpetra.dir/Tpetra_Vector_INT_INT_LONG_LONG_OPENMP.cpp.o:(.data+0x3e8): multiple definition of `_ZNK6Kokkos4Impl14ParallelReduceIN10KokkosBlas4Impl15V_Nrm2w_FunctorINS_12Experimental4ViewIiJNS_11LayoutRightENS_6DeviceINS_6OpenMPENS_9HostSpaceEEENS_12MemoryTraitsILj1EEEEEENS6_IPKiJNS_10LayoutLeftESB_SD_EEEmEENS_11RangePolicyIJS9_mEEENS_11InvalidTypeES9_E16execute_scheduleINS_6StaticEEENSt9enable_ifIXsr3std7is_sameIT_SP_EE5valueEvE4typeEv$$OL$$3RVLA3E'
CMakeFiles/tpetra.dir/Tpetra_Vector_INT_INT_INT_OPENMP.cpp.o:(.data+0x3e8): first defined here
CMakeFiles/tpetra.dir/Tpetra_Vector_DOUBLE_INT_LONG_LONG_OPENMP.cpp.o:(.data+0x3e0): multiple definition of `_ZNK6Kokkos4Impl11ParallelForINS_12Experimental4Impl16ViewValueFunctorINS_6OpenMPEdLb1EEENS_11RangePolicyIJS5_EEES5_E16execute_scheduleINS_6StaticEEENSt9enable_ifIXsr3std7is_sameIT_SB_EE5valueEvE4typeEv$$OL$$1RVL8FB'
CMakeFiles/tpetra.dir/Tpetra_Vector_DOUBLE_INT_INT_OPENMP.cpp.o:(.data+0x3e0): first defined here
CMakeFiles/tpetra.dir/Tpetra_Vector_DOUBLE_INT_LONG_LONG_OPENMP.cpp.o:(.data+0x3e4): multiple definition of `_ZNK6Kokkos4Impl14ParallelReduceIN10KokkosBlas4Impl15V_Nrm2w_FunctorINS_12Experimental4ViewIdJNS_11LayoutRightENS_6DeviceINS_6OpenMPENS_9HostSpaceEEENS_12MemoryTraitsILj1EEEEEENS6_IPKdJNS_10LayoutLeftESB_SD_EEEiEENS_11RangePolicyIJS9_iEEENS_11InvalidTypeES9_E16execute_scheduleINS_6StaticEEENSt9enable_ifIXsr3std7is_sameIT_SP_EE5valueEvE4typeEv$$OL$$2RVL9A2'
CMakeFiles/tpetra.dir/Tpetra_Vector_DOUBLE_INT_INT_OPENMP.cpp.o:(.data+0x3e4): first defined here
CMakeFiles/tpetra.dir/Tpetra_Vector_DOUBLE_INT_LONG_LONG_OPENMP.cpp.o:(.data+0x3e8): multiple definition of `_ZNK6Kokkos4Impl14ParallelReduceIN10KokkosBlas4Impl15V_Nrm2w_FunctorINS_12Experimental4ViewIdJNS_11LayoutRightENS_6DeviceINS_6OpenMPENS_9HostSpaceEEENS_12MemoryTraitsILj1EEEEEENS6_IPKdJNS_10LayoutLeftESB_SD_EEEmEENS_11RangePolicyIJS9_mEEENS_11InvalidTypeES9_E16execute_scheduleINS_6StaticEEENSt9enable_ifIXsr3std7is_sameIT_SP_EE5valueEvE4typeEv$$OL$$3RVLA3B'
CMakeFiles/tpetra.dir/Tpetra_Vector_DOUBLE_INT_INT_OPENMP.cpp.o:(.data+0x3e8): first defined here
CMakeFiles/tpetra.dir/Tpetra_Details_getDiagCopyWithoutOffsets_INT_INT_LONG_LONG_OPENMP.cpp.o:(.data+0xeb4): multiple definition of `_ZNK6Kokkos4Impl11ParallelForINS_12Experimental4Impl9ViewRemapINS2_4ViewIPPiJNS_10LayoutLeftENS_6OpenMPEvEEENS5_IS7_JS8_NS_6DeviceIS9_NS_9HostSpaceEEEEEES9_EENS_11RangePolicyIJS9_EEES9_E16execute_scheduleINS_6StaticEEENSt9enable_ifIXsr3std7is_sameIT_SK_EE5valueEvE4typeEv$$OL$$2RVL855'
CMakeFiles/tpetra.dir/Tpetra_Details_getDiagCopyWithoutOffsets_INT_INT_INT_OPENMP.cpp.o:(.data+0xeb4): first defined here
CMakeFiles/tpetra.dir/Tpetra_Details_getDiagCopyWithoutOffsets_INT_INT_LONG_LONG_OPENMP.cpp.o:(.data+0xeb8): multiple definition of `_ZNK6Kokkos4Impl11ParallelForINS_12Experimental4Impl9ViewRemapINS2_4ViewIPPiJNS_10LayoutLeftENS_6DeviceINS_6OpenMPENS_9HostSpaceEEEEEENS5_IS7_JS8_SA_vEEESA_EENS_11RangePolicyIJSA_EEESA_E16execute_scheduleINS_6StaticEEENSt9enable_ifIXsr3std7is_sameIT_SK_EE5valueEvE4typeEv$$OL$$3RVL898'
CMakeFiles/tpetra.dir/Tpetra_Details_getDiagCopyWithoutOffsets_INT_INT_INT_OPENMP.cpp.o:(.data+0xeb8): first defined here
CMakeFiles/tpetra.dir/Tpetra_Details_getDiagCopyWithoutOffsets_DOUBLE_INT_LONG_LONG_OPENMP.cpp.o:(.data+0xeb4): multiple definition of `_ZNK6Kokkos4Impl11ParallelForINS_12Experimental4Impl9ViewRemapINS2_4ViewIPPdJNS_10LayoutLeftENS_6OpenMPEvEEENS5_IS7_JS8_NS_6DeviceIS9_NS_9HostSpaceEEEEEES9_EENS_11RangePolicyIJS9_EEES9_E16execute_scheduleINS_6StaticEEENSt9enable_ifIXsr3std7is_sameIT_SK_EE5valueEvE4typeEv$$OL$$2RVL855'
CMakeFiles/tpetra.dir/Tpetra_Details_getDiagCopyWithoutOffsets_DOUBLE_INT_INT_OPENMP.cpp.o:(.data+0xeb4): first defined here
CMakeFiles/tpetra.dir/Tpetra_Details_getDiagCopyWithoutOffsets_DOUBLE_INT_LONG_LONG_OPENMP.cpp.o:(.data+0xeb8): multiple definition of `_ZNK6Kokkos4Impl11ParallelForINS_12Experimental4Impl9ViewRemapINS2_4ViewIPPdJNS_10LayoutLeftENS_6DeviceINS_6OpenMPENS_9HostSpaceEEEEEENS5_IS7_JS8_SA_vEEESA_EENS_11RangePolicyIJSA_EEESA_E16execute_scheduleINS_6StaticEEENSt9enable_ifIXsr3std7is_sameIT_SK_EE5valueEvE4typeEv$$OL$$3RVL898'
CMakeFiles/tpetra.dir/Tpetra_Details_getDiagCopyWithoutOffsets_DOUBLE_INT_INT_OPENMP.cpp.o:(.data+0xeb8): first defined here
make[2]: *** [packages/tpetra/core/src/libtpetra.so.12.9] Error 1
make[1]: *** [packages/tpetra/core/src/CMakeFiles/tpetra.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....
The build setup for this is
EXTRA_F_FLAGS="-O3 -g -qsmp=omp -qsimd=auto -L${XLF_ROOT}/lib -L${XLC_ROOT}/lib -lxlf90"
EXTRA_C_FLAGS="-O3 -g -qsmp=omp -mcpu=power8 -qsimd=auto -L${XLF_ROOT}/lib -L${XLC_ROOT}/lib -lxlf90 -qnoxlcompatmacros"
LINK_FLAGS="-O3 -g -qsmp=omp -qsimd=auto -L${XLF_ROOT}/lib -L${XLC_ROOT}/lib -lopen-pal -lxl -lxlopt -lxlf90 -lxlfmath -lm -libmc++ -lstdc++ -L${MPIHOME}/lib -lmpi"
cmake \
-D CMAKE_VERBOSE_MAKEFILE=FALSE \
-D CMAKE_INSTALL_PREFIX:PATH=${TRILINOS_INSTALL} \
-D CMAKE_BUILD_TYPE:STRING=Release \
-D BUILD_SHARED_LIBS=ON \
\
-D CMAKE_C_COMPILER="mpicc" \
-D CMAKE_CXX_COMPILER="mpicxx" \
-D CMAKE_Fortran_COMPILER="xlf" \
-D CMAKE_C_FLAGS="$EXTRA_C_FLAGS" \
-D CMAKE_CXX_FLAGS="$EXTRA_C_FLAGS" \
-D OpenMP_C_FLAGS="-qsmp=omp" \
-D OpenMP_CXX_FLAGS="-qsmp=omp" \
-D OpenMP_Fortran_FLAGS="-qsmp=omp" \
-D CMAKE_Fortran_FLAGS="$EXTRA_F_FLAGS" \
-D CMAKE_EXE_LINKER_FLAGS="$LINK_FLAGS" \
\
-D Trilinos_VERBOSE_CONFIGURE=OFF \
-D Trilinos_ENABLE_ALL_PACKAGES=OFF \
-D Trilinos_ENABLE_SECONDARY_TESTED_CODE=OFF \
\
-D Trilinos_ENABLE_TESTS=ON \
-D DART_TESTING_TIMEOUT:STRING="600" \
\
-D Trilinos_ENABLE_Belos=ON \
-D Belos_ENABLE_TEUCHOS_TIME_MONITOR:BOOL=ON \
-D Belos_Tpetra_Timers:BOOL=ON \
-D Belos_ENABLE_TSQR=ON \
-D Belos_ENABLE_TriUtils=ON \
\
-D Trilinos_ENABLE_EXPLICIT_INSTANTIATION=ON \
-D Tpetra_INST_FLOAT=OFF \
-D Tpetra_INST_DOUBLE=ON \
-D Tpetra_INST_COMPLEX_FLOAT=OFF \
-D Tpetra_INST_COMPLEX_DOUBLE=OFF \
-D Tpetra_INST_INT_INT=ON \
-D Tpetra_INST_INT_LONG=OFF \
-D Tpetra_INST_INT_UNSIGNED=OFF \
-D Tpetra_INST_INT_LONG_LONG=ON \
-D Teuchos_ENABLE_LONG_LONG_INT=ON \
-D Teuchos_ENABLE_COMPLEX=OFF \
-D Zoltan_ENABLE_ULLONG_IDS=ON \
\
-D Trilinos_ENABLE_OpenMP=ON \
-D TPL_ENABLE_Pthread=OFF \
\
-D Trilinos_ENABLE_Teuchos=ON \
-D Trilinos_ENABLE_Epetra=ON \
-D Trilinos_ENABLE_EpetraExt=ON \
-D Trilinos_ENABLE_AztecOO=ON \
-D Trilinos_ENABLE_Amesos=OFF \
-D Trilinos_ENABLE_Stratimikos=OFF \
-D Trilinos_ENABLE_Anasazi=ON \
-D Anasazi_ENABLE_TESTS=OFF \
-D Anasazi_ENABLE_RBGen=ON \
-D Trilinos_ENABLE_Ifpack=ON \
-D Trilinos_ENABLE_ML=ON \
-D Trilinos_ENABLE_Teko=OFF \
-D Trilinos_ENABLE_NOX=OFF \
-D Trilinos_ENABLE_Thyra=OFF \
-D Trilinos_ENABLE_Rythmos=OFF \
-D Trilinos_ENABLE_Sacado=ON \
-D Trilinos_ENABLE_Stokhos=OFF \
-D Trilinos_ENABLE_Panzer=OFF \
-D Trilinos_ENABLE_Tpetra=ON \
-D Tpetra_INST_SERIAL=OFF \
-D Tpetra_INST_OPENMP=ON \
-D Trilinos_ENABLE_Amesos2=OFF \
-D Amesos2_ENABLE_KLU2=OFF \
-D Trilinos_ENABLE_Ifpack2=ON \
-D Trilinos_ENABLE_MueLu=OFF \
-D Trilinos_ENABLE_Zoltan2=ON \
-D Trilinos_ENABLE_STKMesh=ON \
-D Trilinos_ENABLE_STKIO=ON \
-D Trilinos_ENABLE_STKTransfer=ON \
-D Trilinos_ENABLE_STKSearch=ON \
-D Trilinos_ENABLE_STKUtil=ON \
-D Trilinos_ENABLE_STKTopology=ON \
\
-D Trilinos_ENABLE_Kokkos=ON \
-D Trilinos_ENABLE_KokkosCore=ON \
-D Kokkos_ENABLE_Serial=OFF \
-D Kokkos_ENABLE_OpenMP=ON \
-D Kokkos_ENABLE_Pthread=OFF \
-D Kokkos_ENABLE_Cuda=OFF \
-D Kokkos_ENABLE_Cuda_UVM=OFF \
\
-D Trilinos_ENABLE_SEACAS=ON \
-D TPL_ENABLE_X11=OFF \
-D TPL_ENABLE_Matio=OFF \
\
-D Trilinos_ENABLE_Gtest=ON \
\
-D TPL_ENABLE_MPI=ON \
-D MPI_USE_COMPILER_WRAPPERS=ON \
-D MPI_BASE_DIR:PATH=${MPI_DIR} \
-D MPI_EXEC:PATH="mpirun" \
-D MPI_EXEC_MAX_NUMPROCS:STRING="4" \
-D MPI_EXEC_NUMPROCS_FLAG:STRING="--map-by;numa:PE=4" \
\
-D TPL_ENABLE_BLAS=ON \
-D BLAS_LIBRARY_DIRS:PATH="${BLAS_DIR}/lib" \
-D BLAS_LIBRARY_NAMES:STRING="blas" \
\
-D TPL_ENABLE_LAPACK=ON \
-D LAPACK_LIBRARY_DIRS:PATH="${LAPACK_DIR}/lib" \
-D LAPACK_LIBRARY_NAMES:STRING="lapack" \
\
-D TPL_ENABLE_Boost=ON \
-D Boost_INCLUDE_DIRS:PATH=${BOOST_DIR}/include \
\
-D TPL_ENABLE_BoostLib=ON \
-D BoostLib_INCLUDE_DIRS:PATH=${BOOST_DIR}/include \
-D BoostLib_LIBRARY_DIRS:PATH=${BOOST_DIR}/lib \
\
-D TPL_ENABLE_Netcdf=ON \
-D Netcdf_INCLUDE_DIRS:PATH="${NETCDF_DIR}/include;${HDF5_DIR}/include" \
-D Netcdf_LIBRARY_DIRS:PATH="${NETCDF_DIR}/lib;${PNETCDF_ROOT}/lib;${HDF5_DIR}/lib;${ZLIB_DIR}/lib;${XLF_ROOT}/lib" \
-D Netcdf_LIBRARY_NAMES:STRING="netcdf;pnetcdf;hdf5_hl;hdf5;z;xl;xlopt" \
\
-D TPL_ENABLE_METIS=ON \
-D METIS_INCLUDE_DIRS:PATH=${METIS_DIR}/include \
-D METIS_LIBRARY_DIRS:PATH=${METIS_DIR}/lib \
\
-D TPL_ENABLE_ParMETIS=ON \
-D ParMETIS_INCLUDE_DIRS:PATH=${PARMETIS_DIR}/include \
-D ParMETIS_LIBRARY_DIRS:PATH=${PARMETIS_DIR}/lib \
\
-D TPL_ENABLE_SuperLUDist=ON \
-D SuperLUDist_INCLUDE_DIRS:PATH=${SUPERLUDIST_DIR}/include \
-D SuperLUDist_LIBRARY_DIRS:PATH=${SUPERLUDIST_DIR}/lib \
-D SuperLUDist_LIBRARY_NAMES:STRING="superlu_dist_4.3" \
\
-D Trilinos_EXTRA_LINK_FLAGS:STRING="" \
\
${EXTRA_ARGS} \
${TRILINOS_HOME}
@mhoemmen @tpetra