Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Compile Issues with Boost Includes on IBM POWER8 with XL 13.1.3 Compiler #127

Closed
nmhamster opened this issue Feb 4, 2016 · 3 comments
Closed
Assignees
Labels
Framework tasks Framework tasks (used internally by Framework team)

Comments

@nmhamster
Copy link
Contributor

Build errors seen in Trilinos VOTD when compiling using IBM XL 13.1.3 compiler. Recording for logging purposes, discussion on-going with IBM team for approach to fix this.

/home/projects/power8/boost/1.59.0/openmpi/1.10.1/ibm/13.1.3/cuda/7.5.7/include/boost/type_traits/type_with_alignment.hpp:111:11: error:
     pasting formed 'BOOST_PP_LIST_IS_CONS_(', an invalid preprocessing token
/home/projects/power8/boost/1.59.0/openmpi/1.10.1/ibm/13.1.3/cuda/7.5.7/include/boost/type_traits/type_with_alignment.hpp:64:30: note: expanded from macro 'BOOST_TT_ALIGNMENT_TYPES'
                            BOOST_TT_ALIGNMENT_STRUCT_TYPES)
                            ^
/home/projects/power8/boost/1.59.0/openmpi/1.10.1/ibm/13.1.3/cuda/7.5.7/include/boost/type_traits/type_with_alignment.hpp:58:9: note:
     expanded from macro 'BOOST_TT_ALIGNMENT_STRUCT_TYPES'
       BOOST_PP_LIST_TRANSFORM(BOOST_TT_HAS_ONE_T,             \
       ^
/home/projects/power8/boost/1.59.0/openmpi/1.10.1/ibm/13.1.3/cuda/7.5.7/include/boost/preprocessor/list/transform.hpp:25:79: note:
     expanded from macro 'BOOST_PP_LIST_TRANSFORM'
#    define BOOST_PP_LIST_TRANSFORM(op, data, list) BOOST_PP_TUPLE_ELEM(3,
2, BOOST_PP_LIST_FOLD_RIGHT(BOOST_...
@nmhamster
Copy link
Contributor Author

nmhamster commented Feb 4, 2016

Response from IBM compiler team: please add -qnoxlcompatmacros to CFLAGS/CXXFLAGS for compile.

@nmhamster nmhamster added the Framework tasks Framework tasks (used internally by Framework team) label Feb 6, 2016
@nmhamster nmhamster added the stage: in progress Work on the issue has started label Feb 26, 2016
@nmhamster
Copy link
Contributor Author

For Boost compile need to use the --toolset=xlcpp option. The older vacpp option does not work on the POWER8LE systems.

@nmhamster nmhamster added this to the Clean up configure and build of Trilinos on ATDM machines milestone Mar 2, 2016
@nmhamster nmhamster self-assigned this Mar 2, 2016
@nmhamster
Copy link
Contributor Author

Confirmed that IBM XL 13.1.3 only build on RHEL7.2 test system successfully builds TPLs needed for NALU.

Configure Script:

module load openmpi/1.10.2/ibm/xl/13.1.3/cuda/7.5.7
module load netcdf/4.3.3.1/openmpi/1.10.2/ibm/xl/13.1.3/cuda/7.5.7
module load hdf5/1.8.16/openmpi/1.10.2/ibm/xl/13.1.3/cuda/7.5.7
module load pnetcdf/1.6.1/openmpi/1.10.2/ibm/xl/13.1.3/cuda/7.5.7
module load devtools/latest
module load cmake
module load parmetis/4.0.3/openmpi/1.10.2/ibm/xl/13.1.3/cuda/7.5.7
module load metis/5.1.0/ibm/xl/13.1.3
module load openblas/0.2.15/ibm/xl/13.1.3
module load zlib/1.2.8
module load superlu-dist/openmpi/1.10.2/ibm/xl/13.1.3/cuda/7.5.7
module load superlu/4.3.0/ibm/xl/13.1.3

TRILINOS_HOME=${HOME}/git/trilinos-github-repo
INSTALL_DIR=${HOME}/trilinos/20160118-sparc/xl/13.1.3

MPI_HOME=${MPI_ROOT}

HDF5_DIR=${HDF5_ROOT}
NETCDF_DIR=${NETCDF_ROOT}
BOOST_DIR=${BOOST_ROOT}
SUPERLUDIST_DIR=${SUPERLUDIST_ROOT}

echo "Build Configuration:"
echo "HDF5_DIR        = ${HDF5_DIR}"
echo "NETCDF_DIR      = ${NETCDF_DIR}"
echo "BOOST_DIR       = ${BOOST_DIR}"
echo "SUPERLUDIST_DIR = ${SUPERLUDIST_DIR}"
echo ""

FORTRAN_COMPILE_FLAGS="-O3 -g -qsmp=omp -qsimd=auto -L${XLF_ROOT}/lib -L${XLC_ROOT}/lib -lxlf90"
COMPILE_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"
BUILD_OPENMP=ON
BUILD_PTHREADS=OFF

rm CMakeCache.txt
rm -fr CMakeFiles

cmake \
-D Trilinos_ENABLE_EXPLICIT_INSTANTIATION:BOOL=ON \
-D Trilinos_ENABLE_INSTALL_CMAKE_CONFIG_FILES:BOOL=ON \
-D Trilinos_ENABLE_EXAMPLES:BOOL=OFF \
-D Trilinos_ENABLE_TESTS:BOOL=OFF \
-D Trilinos_ENABLE_ALL_PACKAGES:BOOL=OFF \
-D Trilinos_ENABLE_ALL_OPTIONAL_PACKAGES:BOOL=OFF \
-D Trilinos_ENABLE_SEACAS:BOOL=ON \
-D TPL_ENABLE_X11:BOOL=OFF \
-D TPL_ENABLE_Matio:BOOL=OFF \
-D Trilinos_ENABLE_SEACASIoss:BOOL=ON \
-D Trilinos_ENABLE_SEACASExodus:BOOL=ON \
-D Trilinos_ENABLE_Shards:BOOL=ON \
-D Trilinos_ENABLE_Pamgen:BOOL=ON \
-D Pamgen_ENABLE_TESTS:BOOL=OFF \
-D Pamgen_ENABLE_EXAMPLES:BOOL=ON \
-D Trilinos_ENABLE_Tpetra:BOOL=ON \
-D Trilinos_ENABLE_Epetra:BOOL=ON \
-D Trilinos_ENABLE_ML:BOOL=ON \
-D Trilinos_ENABLE_MueLu:BOOL=ON \
-D Trilinos_ENABLE_EpetraExt:BOOL=ON \
-D Trilinos_ENABLE_Teuchos:BOOL=ON \
-D Trilinos_ENABLE_AztecOO:BOOL=ON \
-D Trilinos_ENABLE_Belos:BOOL=ON \
-D Trilinos_ENABLE_Ifpack2:BOOL=ON \
-D Trilinos_ENABLE_Amesos2:BOOL=ON \
-D Trilinos_ENABLE_Zoltan2:BOOL=ON \
-D Trilinos_ENABLE_Ifpack:BOOL=ON \
-D Trilinos_ENABLE_Amesos:BOOL=ON \
-D Trilinos_ENABLE_Zoltan:BOOL=ON \
-D Trilinos_ENABLE_Gtest:BOOL=ON \
-D Trilinos_ENABLE_SEACASExodus:BOOL=ON \
-D Trilinos_ENABLE_SEACASEpu:BOOL=ON \
-D Trilinos_ENABLE_SEACASExodiff:BOOL=ON \
-D Trilinos_ENABLE_SEACASNemspread:BOOL=ON \
-D Trilinos_ENABLE_SEACASNemslice:BOOL=ON \
-D Trilinos_ENABLE_KokkosAlgorithms:BOOL=ON \
-D Trilinos_ENABLE_KokkosCore:BOOL=ON \
-D Trilinos_ENABLE_KokkosCompat:BOOL=ON \
-D Trilinos_ENABLE_KokkosLinAlg:BOOL=ON \
-D Trilinos_ENABLE_KokkosContainers:BOOL=ON \
-D Trilinos_ENABLE_KokkosAlgorithms:BOOL=ON \
-D Trilinos_ENABLE_KokkosMpiComm:BOOL=ON \
-D Trilinos_ENABLE_TriKota:BOOL=OFF \
-D Trilinos_ENABLE_PyTrilinos:BOOL=OFF \
-D Kokkos_ENABLE_Pthread:BOOL=OFF \
-D Kokkos_ENABLE_OpenMP:BOOL=ON \
-D Kokkos_ENABLE_HWLOC:BOOL=OFF \
-D Trilinos_ENABLE_Tpetra:BOOL=ON \
-D Tpetra_ENABLE_Kokkos_Refactor:BOOL=ON \
\
-D Netcdf_INCLUDE_DIRS:FILEPATH="${NETCDF_DIR}/include" \
-D Netcdf_LIBRARY_DIRS:FILEPATH="${NETCDF_DIR}/lib" \
-D TPL_Netcdf_LIBRARIES:STRING="${NETCDF_DIR}/lib/libnetcdf.a;${PNETCDF_ROOT}/lib/libpnetcdf.a;${HDF5_DIR}/lib/libhdf5_hl.a;${HDF5_DIR}/lib/libhdf5.a;${ZLIB_ROOT}/lib/libz.a;${XLF_ROOT}/lib/libxl.a;${XLF_ROOT}/lib/libxlopt.a" \
-D HDF5_INCLUDE_DIRS:FILEPATH="${HDF5_DIR}/include" \
-D HDF5_LIBRARY_DIRS:FILEPATH="${HDF5_DIR}/lib" \
-D TPL_ENABLE_Netcdf:BOOL=ON \
-D TPL_ENABLE_HDF5:BOOL=ON \
-D TPL_ENABLE_Zlib:BOOL=ON \
-D TPL_Zlib_LIBRARIES:FILEPATH="${ZLIB_ROOT}/lib/libz.a" \
\
-D Tpetra_INST_COMPLEX_FLOAT:BOOL=OFF \
-D Tpetra_INST_COMPLEX_DOUBLE:BOOL=OFF \
\
-D Teuchos_ENABLE_LONG_LONG_INT:BOOL=OFF \
-D CMAKE_C_COMPILER="mpicc" \
-D CMAKE_CXX_COMPILER="mpicxx" \
-D CMAKE_Fortran_COMPILER="xlf" \
-D CMAKE_CXX_FLAGS:STRING="$COMPILE_FLAGS" \
-D CMAKE_C_FLAGS:STRING="$COMPILE_FLAGS" \
-D CMAKE_Fortran_FLAGS:STRING="$FORTRAN_COMPILE_FLAGS" \
-D CMAKE_EXE_LINKER_FLAGS="$LINK_FLAGS" \
-D CMAKE_SKIP_RULE_DEPENDENCY=ON \
-D TPL_ENABLE_MPI:BOOL=ON \
-D MPI_BASE_DIR:PATH="$MPI_HOME" \
-D MPI_BIN_DIR:FILEPATH="$MPI_HOME/bin" \
-D MPI_EXEC_MAX_NUMPROCS:STRING=4 \
-D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX:PATH=${INSTALL_DIR} \
-D TPL_ENABLE_BLAS:BOOL=ON \
-D TPL_ENABLE_LAPACK:BOOL=ON \
-D Teuchos_ENABLE_COMPLEX:BOOL=OFF \
-D Teuchos_HAVE_TEUCHOS_LAPACKLARND:BOOL=OFF \
-D HAVE_TEUCHOS_LAPACKLARND:BOOL=OFF \
-D Teuchos_HAVE_CXX_PRAGMA_WEAK:BOOL=OFF \
-D Tpetra_INST_SERIAL:BOOL=ON \
-D BLAS_LIBRARY_DIRS:PATH=${BLAS_ROOT}/lib \
-D LAPACK_LIBRARY_DIRS:PATH=${LAPACK_ROOT}/lib \
-D BLAS_LIBRARY_NAMES:STRING="blas" \
-D LAPACK_LIBRARY_NAMES:STRING="lapack" \
-D TPL_ENABLE_SuperLU:BOOL=ON \
-D TPL_SuperLU_LIBRARIES="${SUPERLU_DIR}/lib/libsuperlu_4.3.a" \
-D SuperLU_INCLUDE_DIRS:PATH="${SUPERLU_DIR}/include" \
-D BoostLib_INCLUDE_DIRS:PATH="${BOOST_DIR}/include" \
-D BoostLib_LIBRARY_DIRS:PATH="${BOOST_DIR}/lib" \
${EXTRA-ARGS} \
${TRILINOS_HOME}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Framework tasks Framework tasks (used internally by Framework team)
Projects
None yet
Development

No branches or pull requests

2 participants