1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165
|
\chapter{Trilinos}
\label{app:trilinos}
In order to solve PDEs with complex coefficients, escript needs to be compiled with \texttt{Trilinos} support.
This requires that your version of Trilinos has certain features enabled.
Since some precompiled distributions of \texttt{Trilinos} are not built with these features, you may
need to compile \texttt{Trilinos} yourself as well.
While we can't provide support for building \texttt{Trilinos}, we provide here two configuration files which seem to work for
Debian 10 ``buster'. One of these cmake script builds \texttt{Trilinos} with MPI support and one builds \texttt{Trilinos} without MPI support.
\section{Debian ``buster'' configuration}
\subsection{Required packages}
The following packages should be installed to attempt this build:
\begin{itemize}
\item[] cmake
\item[] g++
\item[] libsuitesparse-dev
\item[] libmumps-dev
\item[] libboost-dev
\item[] libscotchparmetis-dev
\item[] libmetis-dev
\item[] libcppunit-dev
\end{itemize}
\subsection{Example configuration file (without MPI)}
\begin{verbatim}
#!/bin/bash
# Set this to the root of your Trilinos source directory.
TRILINOS_PATH=../trilinos_source
rm -f CMakeCache.txt
EXTRA_ARGS=$@
cmake \
-D CMAKE_C_COMPILER=`which gcc` \
-D CMAKE_CXX_COMPILER=`which g++` \
-D CMAKE_Fortran_COMPILER=`which gfortran` \
-D PYTHON_EXECUTABLE=/usr/bin/python3 \
-D CMAKE_INSTALL_PREFIX=/usr/local/ \
-D Trilinos_ENABLE_CXX11=ON \
-D CMAKE_C_FLAGS=' -w -fopenmp' \
-D CMAKE_CXX_FLAGS=' -w -fopenmp'\
-D Trilinos_ENABLE_Fortran=ON \
-D BUILD_SHARED_LIBS=ON \
-D TPL_ENABLE_BLAS=ON \
-D TPL_ENABLE_Boost=ON \
-D TPL_ENABLE_Cholmod=ON \
-D TPL_ENABLE_LAPACK=ON \
-D TPL_ENABLE_METIS=ON \
-D TPL_ENABLE_SuperLU=OFF \
-D TPL_ENABLE_UMFPACK=ON \
-D TPL_BLAS_INCLUDE_DIRS=/usr/include/suitesparse \
-D TPL_Cholmod_INCLUDE_DIRS=/usr/include/suitesparse \
-D TPL_Cholmod_LIBRARIES='libcholmod.so;libamd.so;libcolamd.so' \
-D TPL_UMFPACK_INCLUDE_DIRS=/usr/include/suitesparse \
-D TPL_Boost_INCLUDE_DIRS=/usr/local/boost/include \
-D TPL_Boost_LIBRARY_DIRS=lib \
-D Trilinos_ENABLE_Amesos=ON \
-D Trilinos_ENABLE_Amesos2=ON \
-D Trilinos_ENABLE_AztecOO=ON \
-D Trilinos_ENABLE_Belos=ON \
-D Trilinos_ENABLE_Ifpack=ON \
-D Trilinos_ENABLE_Ifpack2=ON \
-D Trilinos_ENABLE_Kokkos=ON \
-D Trilinos_ENABLE_Komplex=ON \
-D Trilinos_ENABLE_ML=ON \
-D Trilinos_ENABLE_MueLu=ON \
-D Trilinos_ENABLE_Teuchos=ON \
-D Trilinos_ENABLE_Tpetra=ON \
-D Trilinos_ENABLE_ALL_OPTIONAL_PACKAGES=ON \
-D Kokkos_ENABLE_AGGRESSIVE_VECTORIZATION=ON \
-D Tpetra_INST_COMPLEX_DOUBLE=ON \
-D Trilinos_ENABLE_COMPLEX_DOUBLE=ON \
-D Teuchos_ENABLE_COMPLEX=ON \
-D Tpetra_INST_INT_INT=ON \
-D Tpetra_ENABLE_DEPRECATED_CODE=ON \
-D Trilinos_ENABLE_OpenMP=ON \
-D Trilinos_ENABLE_MPI=OFF \
-D Trilinos_ENABLE_EXPLICIT_INSTANTIATION=ON \
-D Kokkos_ENABLE_COMPILER_WARNINGS=ON \
-D Amesos2_ENABLE_Basker=ON \
-D Tpetra_INST_SERIAL:BOOL=ON \
-D Trilinos_ENABLE_TESTS=OFF \
$EXTRA_ARGS \
$TRILINOS_PATH
\end{verbatim}
\subsection{Example configuration file (with MPI)}
\begin{verbatim}
#!/bin/bash
# Set this to the root of your Trilinos source directory.
TRILINOS_PATH=../trilinos_source
#
# You can invoke this shell script with additional command-line
# arguments. They will be passed directly to CMake.
#
EXTRA_ARGS=$@
rm -f CMakeCache.txt
cmake \
-D MPI_C_COMPILER=`which mpicc` \
-D MPI_CXX_COMPILER=`which mpic++` \
-D MPI_Fortran_COMPILER=`which mpif90` \
-D PYTHON_EXECUTABLE=/usr/bin/python3 \
-D CMAKE_INSTALL_PREFIX=/usr/local/ \
-D Trilinos_ENABLE_CXX11=ON \
-D CMAKE_C_FLAGS=' -w -fopenmp' \
-D CMAKE_CXX_FLAGS=' -w -fopenmp'\
-D Trilinos_ENABLE_Fortran=ON \
-D BUILD_SHARED_LIBS=ON \
-D TPL_ENABLE_BLAS=ON \
-D TPL_ENABLE_Boost=ON \
-D TPL_ENABLE_Cholmod=ON \
-D TPL_ENABLE_LAPACK=ON \
-D TPL_ENABLE_METIS=ON \
-D TPL_ENABLE_SuperLU=OFF \
-D TPL_ENABLE_UMFPACK=ON \
-D TPL_ENABLE_PARMETIS=ON \
-D TPL_ENABLE_SCALAPACK=ON \
-D TPL_ENABLE_MUMPS=OFF \
-D TPL_BLAS_INCLUDE_DIRS=/usr/include/suitesparse \
-D TPL_Cholmod_INCLUDE_DIRS=/usr/include/suitesparse \
-D TPL_Cholmod_LIBRARIES='libcholmod.so;libamd.so;libcolamd.so' \
-D TPL_UMFPACK_INCLUDE_DIRS=/usr/include/suitesparse \
-D TPL_Boost_INCLUDE_DIRS=/usr/local/boost/include \
-D TPL_Boost_LIBRARY_DIRS=lib \
-D TPL_MUMPS_INCLUDE_DIRS='/usr/include/mumps-seq-shared/' \
-D Trilinos_ENABLE_Amesos=ON \
-D Trilinos_ENABLE_Amesos2=ON \
-D Trilinos_ENABLE_AztecOO=ON \
-D Trilinos_ENABLE_Belos=ON \
-D Trilinos_ENABLE_Ifpack=ON \
-D Trilinos_ENABLE_Ifpack2=ON \
-D Trilinos_ENABLE_Kokkos=ON \
-D Trilinos_ENABLE_Komplex=ON \
-D Trilinos_ENABLE_ML=ON \
-D Trilinos_ENABLE_MueLu=ON \
-D Trilinos_ENABLE_Teuchos=ON \
-D Trilinos_ENABLE_Tpetra=ON \
-D Trilinos_ENABLE_ALL_OPTIONAL_PACKAGES=ON \
-D KOKKOS_ENABLE_AGGRESSIVE_VECTORIZATION=ON \
-D Tpetra_INST_COMPLEX_DOUBLE=ON \
-D Teuchos_ENABLE_COMPLEX=ON \
-D Tpetra_INST_INT_INT=ON \
-D Tpetra_ENABLE_DEPRECATED_CODE=ON \
-D Trilinos_ENABLE_OpenMP=ON \
-D Trilinos_ENABLE_MPI=ON \
-D Trilinos_ENABLE_EXPLICIT_INSTANTIATION=ON \
-D KOKKOS_ENABLE_COMPILER_WARNINGS=ON \
-D Amesos2_ENABLE_Basker=ON \
-D Tpetra_INST_SERIAL:BOOL=ON \
-D Trilinos_ENABLE_TESTS=OFF \
$EXTRA_ARGS \
$TRILINOS_PATH
\end{verbatim}
|