trilinos: simplify some variants (#24820)
* trilinos: rename basker variant The Basker solver is part of amesos2 but is clearer without the extra scoping. * trilinos: automatically enable teuchos and remove variant Basically everything in trilinos needs teuchos * trilinos: group top-level dependencies * trilinos: update dependencies, removing unused - GLM, X11 are unused (x11 lacks dependency specs too) - Python variant is more like a TPL so rearrange that - Gtest internal package shouldn't be compiled or exported - Add MPI4PY requirement for pytrilinos * trilinos: remove package meta-options - XSDK settings and "all opt packages" are not used anywhere - all optional packages are dangerous * trilinos: Use hwloc iff kokkos See #19119, also the HWLOC tpl name was misspelled so this was being ignored before. * Flake * Fix trilinos +netcdf~mpi * trilinos: default to disabling external dependencies * Remove teuchos from downstream dependencies * fixup! trilinos: Use hwloc iff kokkos * Add netcdf requirements to packages with ^trilinos+exodus * trilinos: disable exodus by default * fixup! Add netcdf requirements to packages with ^trilinos+exodus * trilinos: only enable hwloc when @13: +kokkos * xyce: propagate trilinos dependencies more simply * dtk: fix missing boost dependency * trilinos: remove explicit metis dependency * trilinos: require metis/parmetis for zoltan Disable zoltan by default to minimize default dependencies * trilinos: mark mesquite disabled and fix kokkos arch * xsdk: fix trilinos to also list zoltan [with zoltan2] * ci: remove nonexistent variant from trilinos * trilinos: add missing boost dependency Co-authored-by: Satish Balay <balay@mcs.anl.gov>
This commit is contained in:
parent
c56f2a935d
commit
624c72afae
15 changed files with 140 additions and 189 deletions
|
@ -283,7 +283,7 @@ spack:
|
|||
# - sz
|
||||
# - tasmanian
|
||||
# - tau
|
||||
#- trilinos@13.0.1 +amesos +amesos2 +anasazi +aztec +belos +epetra +epetraext +ifpack +ifpack2 +intrepid +intrepid2 +isorropia +kokkos +ml +minitensor +muelu +nox +piro +phalanx +rol +rythmos +sacado +stk +shards +shylu +stokhos +stratimikos +teko +tempus +teuchos +tpetra +trilinoscouplings +zoltan +zoltan2 +superlu-dist gotype=long
|
||||
#- trilinos@13.0.1 +amesos +amesos2 +anasazi +aztec +belos +epetra +epetraext +ifpack +ifpack2 +intrepid +intrepid2 +isorropia +kokkos +ml +minitensor +muelu +nox +piro +phalanx +rol +rythmos +sacado +stk +shards +shylu +stokhos +stratimikos +teko +tempus +tpetra +trilinoscouplings +zoltan +zoltan2 +boost +superlu-dist gotype=long
|
||||
# - turbine
|
||||
# - umap
|
||||
# - unifyfs@0.9.1
|
||||
|
|
|
@ -284,7 +284,7 @@ spack:
|
|||
- sz
|
||||
- tasmanian
|
||||
- tau
|
||||
- trilinos@13.0.1 +amesos +amesos2 +anasazi +aztec +belos +epetra +epetraext +ifpack +ifpack2 +intrepid +intrepid2 +isorropia +kokkos +ml +minitensor +muelu +nox +piro +phalanx +rol +rythmos +sacado +stk +shards +shylu +stokhos +stratimikos +teko +tempus +teuchos +tpetra +trilinoscouplings +zoltan +zoltan2 +superlu-dist gotype=long
|
||||
- trilinos@13.0.1 +amesos +amesos2 +anasazi +aztec +belos +epetra +epetraext +ifpack +ifpack2 +intrepid +intrepid2 +isorropia +kokkos +ml +minitensor +muelu +nox +piro +phalanx +rol +rythmos +sacado +stk +shards +shylu +stokhos +stratimikos +teko +tempus +tpetra +trilinoscouplings +zoltan +zoltan2 +boost +superlu-dist gotype=long
|
||||
- turbine
|
||||
- umap
|
||||
- unifyfs@0.9.1
|
||||
|
|
|
@ -20,7 +20,7 @@ class Camellia(CMakePackage):
|
|||
|
||||
variant('moab', default=True, description='Compile with MOAB to include support for reading standard mesh formats')
|
||||
|
||||
depends_on('trilinos+amesos+amesos2+belos+epetra+epetraext+exodus+ifpack+ifpack2+intrepid+intrepid2+kokkos+ml+muelu+sacado+shards+teuchos+tpetra+zoltan+mumps+superlu-dist+hdf5+zlib+pnetcdf@master,12.12.1:')
|
||||
depends_on('trilinos+amesos+amesos2+belos+epetra+epetraext+exodus+ifpack+ifpack2+intrepid+intrepid2+kokkos+ml+muelu+sacado+shards+tpetra+zoltan+mumps+superlu-dist+hdf5+zlib+mpi+netcdf+pnetcdf@master,12.12.1:')
|
||||
depends_on('moab@:4', when='+moab')
|
||||
|
||||
# Cameilla needs hdf5 but the description "hdf5@:1.8" is
|
||||
|
|
|
@ -27,9 +27,10 @@ class Datatransferkit(CMakePackage):
|
|||
description='enable the build of shared lib')
|
||||
|
||||
depends_on('arborx@1.0:', when='+external-arborx')
|
||||
depends_on('boost')
|
||||
depends_on('cmake', type='build')
|
||||
depends_on('trilinos+intrepid2+shards~dtk', when='+serial')
|
||||
depends_on('trilinos+intrepid2+shards+openmp~dtk', when='+openmp')
|
||||
depends_on('trilinos+intrepid2+shards~dtk')
|
||||
depends_on('trilinos+openmp', when='+openmp')
|
||||
depends_on('trilinos+stratimikos+belos', when='@master')
|
||||
depends_on('trilinos@13:13.99', when='@3.1-rc2')
|
||||
|
||||
|
|
|
@ -210,16 +210,11 @@ class Dealii(CMakePackage, CudaPackage):
|
|||
depends_on('symengine@0.6:', when='@9.2:+symengine')
|
||||
depends_on('tbb', when='+threads')
|
||||
# do not require +rol to make concretization of xsdk possible
|
||||
depends_on('trilinos+amesos+aztec+epetra+ifpack+ml+muelu+sacado+teuchos',
|
||||
when='+trilinos+mpi~int64~cuda')
|
||||
depends_on('trilinos+amesos+aztec+epetra+ifpack+ml+muelu+sacado+teuchos~hypre',
|
||||
when='+trilinos+mpi+int64~cuda')
|
||||
depends_on('trilinos+amesos+aztec+epetra+ifpack+ml+muelu+sacado', when='+trilinos')
|
||||
depends_on('trilinos~hypre', when='+trilinos+int64')
|
||||
# TODO: temporary disable Tpetra when using CUDA due to
|
||||
# namespace "Kokkos::Impl" has no member "cuda_abort"
|
||||
depends_on('trilinos@master+amesos+aztec+epetra+ifpack+ml+muelu+rol+sacado+teuchos~amesos2~ifpack2~intrepid2~kokkos~tpetra~zoltan2',
|
||||
when='+trilinos+mpi~int64+cuda')
|
||||
depends_on('trilinos@master+amesos+aztec+epetra+ifpack+ml+muelu+rol+sacado+teuchos~hypre~amesos2~ifpack2~intrepid2~kokkos~tpetra~zoltan2',
|
||||
when='+trilinos+mpi+int64+cuda')
|
||||
depends_on('trilinos@master+rol~amesos2~ifpack2~intrepid2~kokkos~tpetra~zoltan2', when='+trilinos+cuda')
|
||||
|
||||
# Explicitly provide a destructor in BlockVector,
|
||||
# otherwise deal.II may fail to build with Intel compilers.
|
||||
|
|
|
@ -55,7 +55,7 @@ class Fortrilinos(CMakePackage):
|
|||
depends_on('trilinos@12.17.1', when='@2.0.dev1')
|
||||
|
||||
# Baseline trilinos dependencies
|
||||
depends_on('trilinos+teuchos gotype=long_long')
|
||||
depends_on('trilinos gotype=long_long')
|
||||
# Full trilinos dependencies
|
||||
depends_on('trilinos+amesos2+anasazi+belos+kokkos+ifpack2+muelu+nox+tpetra'
|
||||
'+stratimikos', when='+hl')
|
||||
|
|
|
@ -52,19 +52,21 @@ class NaluWind(CMakePackage, CudaPackage):
|
|||
|
||||
depends_on('mpi')
|
||||
depends_on('yaml-cpp@0.5.3:')
|
||||
depends_on('trilinos@master,develop ~cuda~wrapper+exodus+tpetra+muelu+belos+ifpack2+amesos2+zoltan+stk+boost~superlu-dist~superlu+hdf5+zlib+pnetcdf+shards~hypre cxxstd=14', when='~cuda')
|
||||
# Cannot build Trilinos as a shared library with STK on Darwin
|
||||
# https://github.com/trilinos/Trilinos/issues/2994
|
||||
depends_on('trilinos@master,develop ~cuda~wrapper+exodus+tpetra+muelu+belos+ifpack2+amesos2+zoltan+stk+boost~superlu-dist~superlu+hdf5+zlib+pnetcdf+shards~hypre~shared cxxstd=14', when=(sys.platform == 'darwin'))
|
||||
depends_on('openfast@master,develop +cxx', when='+openfast')
|
||||
depends_on('tioga@master,develop', when='+tioga')
|
||||
depends_on('hypre@develop,2.18.2: +int64+mpi~superlu-dist', when='+hypre')
|
||||
depends_on('kokkos-nvcc-wrapper', type='build', when='+cuda')
|
||||
depends_on('trilinos@master,develop +exodus+tpetra+muelu+belos+ifpack2+amesos2+zoltan+stk+boost~superlu-dist~superlu+hdf5+zlib+pnetcdf+shards~hypre cxxstd=14')
|
||||
# Cannot build Trilinos as a shared library with STK on Darwin
|
||||
# https://github.com/trilinos/Trilinos/issues/2994
|
||||
depends_on('trilinos~shared', when=(sys.platform == 'darwin'))
|
||||
# Propagate cuda options to trilinos and hypre
|
||||
depends_on('trilinos~cuda~wrapper', when='~cuda')
|
||||
depends_on('trilinos+cuda+wrapper+cuda_rdc', when='+cuda')
|
||||
depends_on('hypre@develop +cuda', when='+cuda')
|
||||
for _arch in CudaPackage.cuda_arch_values:
|
||||
depends_on('trilinos@master,develop ~shared+exodus+tpetra+muelu+belos+ifpack2+amesos2+zoltan+stk+boost~superlu-dist~superlu+hdf5+zlib+pnetcdf+shards~hypre+cuda+cuda_rdc+wrapper cxxstd=14 cuda_arch={0}'.format(_arch),
|
||||
when='+cuda cuda_arch={0}'.format(_arch))
|
||||
depends_on('hypre@develop +mpi+cuda+int64~superlu-dist cuda_arch={0}'.format(_arch),
|
||||
when='+hypre+cuda cuda_arch={0}'.format(_arch))
|
||||
depends_on('trilinos cuda_arch=' + _arch, when='+cuda cuda_arch=' + _arch)
|
||||
depends_on('hypre cuda_arch=' + _arch, when='+hypre+cuda cuda_arch=' + _arch)
|
||||
depends_on('trilinos-catalyst-ioss-adapter', when='+catalyst')
|
||||
depends_on('fftw+mpi', when='+fftw')
|
||||
depends_on('boost cxxstd=14', when='+boost')
|
||||
|
|
|
@ -35,7 +35,7 @@ class Nalu(CMakePackage):
|
|||
# Cannot build Trilinos as a shared library with STK on Darwin
|
||||
# which is why we have a 'shared' variant for Nalu
|
||||
# https://github.com/trilinos/Trilinos/issues/2994
|
||||
depends_on('trilinos+exodus+tpetra+muelu+belos+ifpack2+amesos2+zoltan+stk+boost~superlu-dist+superlu+hdf5+zlib+pnetcdf+shards~hypre@master,develop', when='+shared')
|
||||
depends_on('trilinos+mpi+netcdf+exodus+tpetra+muelu+belos+ifpack2+amesos2+zoltan+stk+boost~superlu-dist+superlu+hdf5+zlib+pnetcdf+shards~hypre@master,develop', when='+shared')
|
||||
depends_on('trilinos~shared+exodus+tpetra+muelu+belos+ifpack2+amesos2+zoltan+stk+boost~superlu-dist+superlu+hdf5+zlib+pnetcdf+shards~hypre@master,develop', when='~shared')
|
||||
# Optional dependencies
|
||||
depends_on('tioga', when='+tioga+shared')
|
||||
|
|
|
@ -41,7 +41,7 @@ class OmegaH(CMakePackage):
|
|||
|
||||
depends_on('gmsh', when='+examples', type='build')
|
||||
depends_on('mpi', when='+mpi')
|
||||
depends_on('trilinos +kokkos +teuchos', when='+trilinos')
|
||||
depends_on('trilinos +kokkos', when='+trilinos')
|
||||
depends_on('zlib', when='+zlib')
|
||||
|
||||
# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86610
|
||||
|
|
|
@ -25,7 +25,7 @@ class Percept(CMakePackage):
|
|||
depends_on('opennurbs@percept')
|
||||
depends_on('boost+graph+mpi')
|
||||
depends_on('yaml-cpp+pic~shared@0.5.3:')
|
||||
depends_on('trilinos~shared+exodus+tpetra+epetra+epetraext+muelu+belos+ifpack2+amesos2+zoltan+stk+boost~superlu-dist+superlu+hdf5+zlib+pnetcdf+aztec+sacado~openmp+shards+intrepid+cgns@master,12.14.1:')
|
||||
depends_on('trilinos~shared+exodus+netcdf+mpi+tpetra+epetra+epetraext+muelu+belos+ifpack2+amesos2+zoltan+stk+boost~superlu-dist+superlu+hdf5+zlib+pnetcdf+aztec+sacado~openmp+shards+intrepid+cgns@master,12.14.1:')
|
||||
|
||||
def cmake_args(self):
|
||||
spec = self.spec
|
||||
|
|
|
@ -124,7 +124,7 @@ class Phist(CMakePackage):
|
|||
depends_on('eigen', when='kernel_lib=eigen')
|
||||
depends_on('ghost', when='kernel_lib=ghost')
|
||||
|
||||
depends_on('trilinos+anasazi+belos+teuchos', when='+trilinos')
|
||||
depends_on('trilinos+anasazi+belos', when='+trilinos')
|
||||
depends_on('parmetis+int64', when='+parmetis+int64')
|
||||
depends_on('parmetis~int64', when='+parmetis~int64')
|
||||
|
||||
|
|
|
@ -21,7 +21,7 @@ class Quinoa(CMakePackage):
|
|||
|
||||
depends_on('hdf5+mpi')
|
||||
depends_on("charmpp backend=mpi")
|
||||
depends_on("trilinos+exodus")
|
||||
depends_on("trilinos+exodus+mpi+netcdf")
|
||||
depends_on("boost")
|
||||
depends_on("hypre~internal-superlu")
|
||||
depends_on("random123")
|
||||
|
|
|
@ -60,8 +60,6 @@ class Trilinos(CMakePackage, CudaPackage):
|
|||
# Other
|
||||
# not everyone has py-numpy activated, keep it disabled by default to avoid
|
||||
# configure errors
|
||||
variant('python', default=False,
|
||||
description='Build python wrappers')
|
||||
|
||||
# Build options
|
||||
variant('complex', default=False,
|
||||
|
@ -76,50 +74,42 @@ class Trilinos(CMakePackage, CudaPackage):
|
|||
description='global ordinal type for Tpetra')
|
||||
variant('fortran', default=True,
|
||||
description='Compile with Fortran support')
|
||||
variant('python', default=False,
|
||||
description='Build PyTrilinos wrappers')
|
||||
variant('wrapper', default=False,
|
||||
description="Use nvcc-wrapper for CUDA build")
|
||||
variant('cuda_rdc', default=False,
|
||||
description='turn on RDC for CUDA build')
|
||||
variant('cxxstd', default='11', values=['11', '14', '17'], multi=False)
|
||||
variant('hwloc', default=False,
|
||||
description='Enable hwloc')
|
||||
variant('openmp', default=False,
|
||||
description='Enable OpenMP')
|
||||
variant('shared', default=True,
|
||||
description='Enables the build of shared libraries')
|
||||
variant('debug', default=False,
|
||||
description='Enable runtime safety and debug checks')
|
||||
variant('xsdkflags', default=False,
|
||||
description='Compile using the default xSDK configuration')
|
||||
|
||||
# TPLs (alphabet order)
|
||||
variant('boost', default=True,
|
||||
variant('boost', default=False,
|
||||
description='Compile with Boost')
|
||||
variant('cgns', default=False,
|
||||
description='Enable CGNS')
|
||||
variant('adios2', default=False,
|
||||
description='Enable ADIOS2')
|
||||
variant('glm', default=True,
|
||||
description='Compile with GLM')
|
||||
variant('gtest', default=False,
|
||||
description='Compile with Gtest')
|
||||
variant('hdf5', default=True,
|
||||
variant('hdf5', default=False,
|
||||
description='Compile with HDF5')
|
||||
variant('hypre', default=True,
|
||||
variant('hypre', default=False,
|
||||
description='Compile with Hypre preconditioner')
|
||||
variant('matio', default=True,
|
||||
variant('matio', default=False,
|
||||
description='Compile with Matio')
|
||||
variant('metis', default=True,
|
||||
description='Compile with METIS and ParMETIS')
|
||||
variant('mpi', default=True,
|
||||
description='Compile with MPI parallelism')
|
||||
variant('mumps', default=True,
|
||||
variant('mumps', default=False,
|
||||
description='Compile with support for MUMPS solvers')
|
||||
variant('netcdf', default=True,
|
||||
variant('netcdf', default=False,
|
||||
description='Compile with netcdf')
|
||||
variant('pnetcdf', default=False,
|
||||
description='Compile with parallel-netcdf')
|
||||
variant('suite-sparse', default=True,
|
||||
variant('suite-sparse', default=False,
|
||||
description='Compile with SuiteSparse solvers')
|
||||
variant('superlu-dist', default=False,
|
||||
description='Compile with SuperluDist solvers')
|
||||
|
@ -127,14 +117,10 @@ class Trilinos(CMakePackage, CudaPackage):
|
|||
description='Compile with SuperLU solvers')
|
||||
variant('strumpack', default=False,
|
||||
description='Compile with STRUMPACK solvers')
|
||||
variant('x11', default=False,
|
||||
description='Compile with X11')
|
||||
variant('zlib', default=False,
|
||||
description='Compile with zlib')
|
||||
|
||||
# Package options (alphabet order)
|
||||
variant('alloptpkgs', default=False,
|
||||
description='Compile with all optional packages')
|
||||
variant('amesos', default=True,
|
||||
description='Compile with Amesos')
|
||||
variant('amesos2', default=True,
|
||||
|
@ -154,7 +140,8 @@ class Trilinos(CMakePackage, CudaPackage):
|
|||
description='Compile with Epetra')
|
||||
variant('epetraext', default=True,
|
||||
description='Compile with EpetraExt')
|
||||
variant('exodus', default=True,
|
||||
# Disable Exodus by default as it requires netcdf
|
||||
variant('exodus', default=False,
|
||||
description='Compile with Exodus from SEACAS')
|
||||
variant('ifpack', default=True,
|
||||
description='Compile with Ifpack')
|
||||
|
@ -200,20 +187,18 @@ class Trilinos(CMakePackage, CudaPackage):
|
|||
description='Compile with Teko')
|
||||
variant('tempus', default=False,
|
||||
description='Compile with Tempus')
|
||||
variant('teuchos', default=True,
|
||||
description='Compile with Teuchos')
|
||||
variant('tpetra', default=True,
|
||||
description='Compile with Tpetra')
|
||||
variant('trilinoscouplings', default=False,
|
||||
description='Compile with TrilinosCouplings')
|
||||
variant('zoltan', default=True,
|
||||
variant('zoltan', default=False,
|
||||
description='Compile with Zoltan')
|
||||
variant('zoltan2', default=True,
|
||||
variant('zoltan2', default=False,
|
||||
description='Compile with Zoltan2')
|
||||
|
||||
# Internal package options (alphabetical order)
|
||||
variant('amesos2basker', default=False,
|
||||
description='Compile with Basker in Amesos2')
|
||||
variant('basker', default=False,
|
||||
description='Compile with the Basker solver in Amesos2')
|
||||
variant('epetraextbtf', default=False,
|
||||
description='Compile with BTF in EpetraExt')
|
||||
variant('epetraextexperimental', default=False,
|
||||
|
@ -223,11 +208,11 @@ class Trilinos(CMakePackage, CudaPackage):
|
|||
|
||||
# External package options
|
||||
variant('dtk', default=False,
|
||||
description='Enable DataTransferKit')
|
||||
description='Enable DataTransferKit (deprecated)')
|
||||
variant('scorec', default=False,
|
||||
description='Enable SCOREC')
|
||||
variant('mesquite', default=False,
|
||||
description='Enable Mesquite')
|
||||
description='Enable Mesquite (deprecated)')
|
||||
|
||||
resource(name='dtk',
|
||||
git='https://github.com/ornl-cees/DataTransferKit.git',
|
||||
|
@ -267,71 +252,58 @@ class Trilinos(CMakePackage, CudaPackage):
|
|||
placement='packages/mesquite',
|
||||
when='+mesquite @develop')
|
||||
|
||||
conflicts('+amesos2', when='~teuchos')
|
||||
conflicts('+amesos2', when='~tpetra')
|
||||
conflicts('+amesos', when='~epetra')
|
||||
conflicts('+amesos', when='~teuchos')
|
||||
conflicts('+anasazi', when='~teuchos')
|
||||
conflicts('+aztec', when='~epetra')
|
||||
conflicts('+belos', when='~teuchos')
|
||||
conflicts('+epetraext', when='~epetra')
|
||||
conflicts('+epetraext', when='~teuchos')
|
||||
conflicts('+exodus', when='~netcdf')
|
||||
conflicts('+ifpack2', when='~belos')
|
||||
conflicts('+ifpack2', when='~teuchos')
|
||||
conflicts('+ifpack2', when='~tpetra')
|
||||
conflicts('+ifpack', when='~epetra')
|
||||
conflicts('+ifpack', when='~teuchos')
|
||||
conflicts('+intrepid2', when='~kokkos')
|
||||
conflicts('+intrepid2', when='~shards')
|
||||
conflicts('+intrepid2', when='~teuchos')
|
||||
conflicts('+intrepid', when='~sacado')
|
||||
conflicts('+intrepid', when='~shards')
|
||||
conflicts('+intrepid', when='~teuchos')
|
||||
conflicts('+isorropia', when='~epetra')
|
||||
conflicts('+isorropia', when='~epetraext')
|
||||
conflicts('+isorropia', when='~teuchos')
|
||||
conflicts('+isorropia', when='~zoltan')
|
||||
conflicts('+muelu', when='~teuchos')
|
||||
conflicts('+nox', when='~teuchos')
|
||||
conflicts('+phalanx', when='~kokkos')
|
||||
conflicts('+phalanx', when='~sacado')
|
||||
conflicts('+phalanx', when='~teuchos')
|
||||
conflicts('+piro', when='~teuchos')
|
||||
conflicts('+rol', when='~teuchos')
|
||||
conflicts('+rythmos', when='~teuchos')
|
||||
# Epetra packages
|
||||
with when('~epetra'):
|
||||
conflicts('+amesos')
|
||||
conflicts('+aztec')
|
||||
conflicts('+epetraext')
|
||||
conflicts('+ifpack')
|
||||
conflicts('+isorropia')
|
||||
with when('~epetraext'):
|
||||
conflicts('+isorropia')
|
||||
conflicts('+teko')
|
||||
conflicts('+epetraextbtf')
|
||||
conflicts('+epetraextexperimental')
|
||||
conflicts('+epetraextgraphreorderings')
|
||||
conflicts('+teko', when='~amesos')
|
||||
conflicts('+teko', when='~anasazi')
|
||||
conflicts('+teko', when='~aztec')
|
||||
conflicts('+teko', when='~epetraext')
|
||||
conflicts('+teko', when='~ifpack')
|
||||
conflicts('+teko', when='~ml')
|
||||
|
||||
# Tpetra packages
|
||||
with when('~kokkos'):
|
||||
conflicts('+cuda')
|
||||
conflicts('+tpetra')
|
||||
conflicts('+intrepid2')
|
||||
conflicts('+phalanx')
|
||||
with when('~tpetra'):
|
||||
conflicts('+amesos2')
|
||||
conflicts('+dtk')
|
||||
conflicts('+ifpack2')
|
||||
conflicts('+teko')
|
||||
conflicts('+zoltan2')
|
||||
|
||||
conflicts('+basker', when='~amesos2')
|
||||
conflicts('+exodus', when='~netcdf')
|
||||
conflicts('+ifpack2', when='~belos')
|
||||
conflicts('+intrepid', when='~sacado')
|
||||
conflicts('+intrepid', when='~shards')
|
||||
conflicts('+intrepid2', when='~shards')
|
||||
conflicts('+isorropia', when='~zoltan')
|
||||
conflicts('+phalanx', when='~sacado')
|
||||
conflicts('+teko', when='~stratimikos')
|
||||
conflicts('+teko', when='~teuchos')
|
||||
conflicts('+teko', when='~tpetra')
|
||||
conflicts('+teko', when='@:12 gotype=long')
|
||||
conflicts('+tempus', when='~nox')
|
||||
conflicts('+tempus', when='~teuchos')
|
||||
conflicts('+tpetra', when='~kokkos')
|
||||
conflicts('+tpetra', when='~teuchos')
|
||||
conflicts('+zoltan2', when='~teuchos')
|
||||
conflicts('+zoltan2', when='~tpetra')
|
||||
conflicts('+zoltan2', when='~zoltan')
|
||||
|
||||
conflicts('+epetraextbtf', when='~epetraext')
|
||||
conflicts('+epetraextexperimental', when='~epetraext')
|
||||
conflicts('+epetraextgraphreorderings', when='~epetraext')
|
||||
conflicts('+amesos2basker', when='~amesos2')
|
||||
|
||||
# Only allow DTK with Trilinos 12.14 and develop
|
||||
conflicts('+dtk', when='~boost')
|
||||
conflicts('+dtk', when='~intrepid2')
|
||||
conflicts('+dtk', when='~kokkos')
|
||||
conflicts('+dtk', when='~teuchos')
|
||||
conflicts('+dtk', when='~tpetra')
|
||||
# Only allow DTK with Trilinos 12.14 and develop
|
||||
conflicts('+dtk', when='@0:12.12.99,master')
|
||||
|
||||
# Only allow Mesquite with Trilinos 12.12 and up, and develop
|
||||
conflicts('+mesquite', when='@0:12.10.99,master')
|
||||
conflicts('+mesquite', when='@0:12.10.99,master,develop')
|
||||
# Can only use one type of SuperLU
|
||||
conflicts('+superlu-dist', when='+superlu')
|
||||
# For Trilinos v11 we need to force SuperLUDist=OFF, since only the
|
||||
|
@ -346,7 +318,6 @@ class Trilinos(CMakePackage, CudaPackage):
|
|||
# https://trilinos.org/pipermail/trilinos-users/2015-March/004802.html
|
||||
conflicts('+superlu-dist', when='+complex+amesos2')
|
||||
conflicts('+strumpack', when='@:13.0.99')
|
||||
conflicts('+strumpack', when='~metis')
|
||||
# PnetCDF was only added after v12.10.1
|
||||
conflicts('+pnetcdf', when='@0:12.10.1')
|
||||
# https://github.com/trilinos/Trilinos/issues/2994
|
||||
|
@ -366,8 +337,7 @@ class Trilinos(CMakePackage, CudaPackage):
|
|||
conflicts('cxxstd=14', when='+wrapper ^cuda@6.5.14:8.0.61')
|
||||
conflicts('cxxstd=17', when='+wrapper ^cuda@6.5.14:10.2.89')
|
||||
|
||||
# SCOREC requires parmetis, shards, stk, and zoltan
|
||||
conflicts('+scorec', when='~metis')
|
||||
# SCOREC requires shards, stk, and zoltan
|
||||
conflicts('+scorec', when='~mpi')
|
||||
conflicts('+scorec', when='~shards')
|
||||
conflicts('+scorec', when='~stk')
|
||||
|
@ -385,26 +355,27 @@ class Trilinos(CMakePackage, CudaPackage):
|
|||
|
||||
# ###################### Dependencies ##########################
|
||||
|
||||
# Everything should be compiled position independent (-fpic)
|
||||
depends_on('blas')
|
||||
depends_on('lapack')
|
||||
depends_on('boost', when='+boost')
|
||||
depends_on('glm', when='+glm')
|
||||
depends_on('hdf5+hl', when='+hdf5')
|
||||
depends_on('matio', when='+matio')
|
||||
depends_on('metis@5:', when='+metis')
|
||||
depends_on('suite-sparse', when='+suite-sparse')
|
||||
depends_on('zlib', when="+zlib")
|
||||
|
||||
# MPI related dependencies
|
||||
depends_on('mpi', when='+mpi')
|
||||
depends_on('hdf5+mpi', when="+hdf5+mpi")
|
||||
depends_on('netcdf-c', when="+netcdf")
|
||||
depends_on('netcdf-c+mpi', when="+netcdf~pnetcdf+mpi")
|
||||
depends_on('netcdf-c+mpi+parallel-netcdf', when="+netcdf+pnetcdf@master,12.12.1:")
|
||||
depends_on('parallel-netcdf', when="+netcdf+pnetcdf@master,12.12.1:")
|
||||
depends_on('parmetis', when='+metis+mpi')
|
||||
depends_on('metis', when='+zoltan')
|
||||
depends_on('parmetis', when='+mpi +zoltan')
|
||||
depends_on('parmetis', when='+scorec')
|
||||
depends_on('cgns', when='+cgns')
|
||||
depends_on('adios2', when='+adios2')
|
||||
depends_on('boost', when='+minitensor')
|
||||
# Trilinos' Tribits config system is limited which makes it very tricky to
|
||||
# link Amesos with static MUMPS, see
|
||||
# https://trilinos.org/docs/dev/packages/amesos2/doc/html/classAmesos2_1_1MUMPS.html
|
||||
|
@ -430,11 +401,12 @@ class Trilinos(CMakePackage, CudaPackage):
|
|||
depends_on('hypre@xsdk-0.2.0~internal-superlu', when='@xsdk-0.2.0+hypre')
|
||||
depends_on('hypre@develop~internal-superlu', when='@develop+hypre')
|
||||
depends_on('python', when='+python')
|
||||
depends_on('py-mpi4py', when='+mpi +python', type=('build', 'run'))
|
||||
depends_on('py-numpy', when='+python', type=('build', 'run'))
|
||||
depends_on('swig', when='+python')
|
||||
depends_on('kokkos-nvcc-wrapper', when='+wrapper')
|
||||
depends_on('hwloc', when='+hwloc')
|
||||
depends_on('hwloc +cuda', when='+hwloc+cuda')
|
||||
depends_on('hwloc', when='@13: +kokkos')
|
||||
depends_on('hwloc+cuda', when='@13: +kokkos+cuda')
|
||||
|
||||
# Dependencies/conflicts when MPI is disabled
|
||||
depends_on('hdf5~mpi', when='+hdf5~mpi')
|
||||
|
@ -493,24 +465,17 @@ def setup_build_environment(self, env):
|
|||
def cmake_args(self):
|
||||
spec = self.spec
|
||||
define = CMakePackage.define
|
||||
define_from_variant = self.define_from_variant
|
||||
|
||||
def define_trilinos_enable(cmake_var, spec_var=None):
|
||||
if spec_var is None:
|
||||
spec_var = cmake_var.lower()
|
||||
return self.define_from_variant(
|
||||
'Trilinos_ENABLE_' + cmake_var, spec_var)
|
||||
return define_from_variant('Trilinos_ENABLE_' + cmake_var, spec_var)
|
||||
|
||||
def define_tpl_enable(cmake_var, spec_var=None):
|
||||
if spec_var is None:
|
||||
spec_var = cmake_var.lower()
|
||||
return self.define_from_variant('TPL_ENABLE_' + cmake_var,
|
||||
spec_var)
|
||||
|
||||
def define_prefix_enable(prefix, cmake_var, spec_var=None):
|
||||
if spec_var is None:
|
||||
spec_var = cmake_var.lower()
|
||||
return self.define_from_variant(
|
||||
'%s' % prefix, spec_var)
|
||||
return define_from_variant('TPL_ENABLE_' + cmake_var, spec_var)
|
||||
|
||||
cxx_flags = []
|
||||
options = []
|
||||
|
@ -522,15 +487,14 @@ def define_prefix_enable(prefix, cmake_var, spec_var=None):
|
|||
define('Trilinos_ENABLE_TESTS', False),
|
||||
define('Trilinos_ENABLE_EXAMPLES', False),
|
||||
define('Trilinos_ENABLE_CXX11', True),
|
||||
self.define_from_variant('BUILD_SHARED_LIBS', 'shared'),
|
||||
define_from_variant("CMAKE_CXX_STANDARD", "cxxstd"),
|
||||
define_from_variant('BUILD_SHARED_LIBS', 'shared'),
|
||||
define_trilinos_enable('DEBUG', 'debug'),
|
||||
# The following can cause problems on systems that don't have
|
||||
# static libraries available for things like dl and pthreads
|
||||
# for example when trying to build static libs
|
||||
# define('TPL_FIND_SHARED_LIBS', (
|
||||
# 'ON' if '+shared' in spec else 'OFF'))
|
||||
# define('Trilinos_LINK_SEARCH_START_STATIC', (
|
||||
# 'OFF' if '+shared' in spec else 'ON'))
|
||||
# define_from_variant('TPL_FIND_SHARED_LIBS', 'shared')
|
||||
# define('Trilinos_LINK_SEARCH_START_STATIC', '+shared' not in spec)
|
||||
])
|
||||
|
||||
# MPI settings
|
||||
|
@ -549,7 +513,6 @@ def define_prefix_enable(prefix, cmake_var, spec_var=None):
|
|||
# ################## Trilinos Packages #####################
|
||||
|
||||
options.extend([
|
||||
define_trilinos_enable('ALL_OPTIONAL_PACKAGES', 'alloptpkgs'),
|
||||
define_trilinos_enable('Amesos'),
|
||||
define_trilinos_enable('Amesos2'),
|
||||
define_trilinos_enable('Anasazi'),
|
||||
|
@ -582,22 +545,18 @@ def define_prefix_enable(prefix, cmake_var, spec_var=None):
|
|||
define_trilinos_enable('Stratimikos'),
|
||||
define_trilinos_enable('Teko'),
|
||||
define_trilinos_enable('Tempus'),
|
||||
define_trilinos_enable('Teuchos'),
|
||||
define_trilinos_enable('Tpetra'),
|
||||
define_trilinos_enable('TrilinosCouplings'),
|
||||
define_trilinos_enable('Zoltan'),
|
||||
define_trilinos_enable('Zoltan2'),
|
||||
define_prefix_enable('EpetraExt_BUILD_BTF', 'epetraextbtf'),
|
||||
define_prefix_enable('EpetraExt_BUILD_EXPERIMENTAL',
|
||||
define_from_variant('EpetraExt_BUILD_BTF', 'epetraextbtf'),
|
||||
define_from_variant('EpetraExt_BUILD_EXPERIMENTAL',
|
||||
'epetraextexperimental'),
|
||||
define_prefix_enable('EpetraExt_BUILD_GRAPH_REORDERINGS',
|
||||
define_from_variant('EpetraExt_BUILD_GRAPH_REORDERINGS',
|
||||
'epetraextgraphreorderings'),
|
||||
define_prefix_enable('Amesos2_ENABLE_Basker', 'amesos2basker'),
|
||||
define_from_variant('Amesos2_ENABLE_Basker', 'basker'),
|
||||
])
|
||||
|
||||
options.append(self.define_from_variant('USE_XSDK_DEFAULTS',
|
||||
'xsdkflags'))
|
||||
|
||||
if '+dtk' in spec:
|
||||
options.extend([
|
||||
define('Trilinos_EXTRA_REPOSITORIES', 'DataTransferKit'),
|
||||
|
@ -656,15 +615,9 @@ def define_prefix_enable(prefix, cmake_var, spec_var=None):
|
|||
define('TPL_ENABLE_LAPACK', True),
|
||||
define('LAPACK_LIBRARY_NAMES', lapack.names),
|
||||
define('LAPACK_LIBRARY_DIRS', lapack.directories),
|
||||
define_tpl_enable('GLM'),
|
||||
define_tpl_enable('Matio'),
|
||||
define_tpl_enable('X11'),
|
||||
define_trilinos_enable('Gtest', 'gtest'),
|
||||
])
|
||||
|
||||
if '+hwloc' in spec:
|
||||
options.append(define_tpl_enable('hwloc'))
|
||||
|
||||
options.append(define_tpl_enable('Netcdf'))
|
||||
if '+netcdf' in spec:
|
||||
options.append(define('NetCDF_ROOT', spec['netcdf-c'].prefix))
|
||||
|
@ -715,14 +668,22 @@ def define_prefix_enable(prefix, cmake_var, spec_var=None):
|
|||
define('TPL_ENABLE_UMFPACK', False),
|
||||
])
|
||||
|
||||
options.append(define_tpl_enable('METIS'))
|
||||
options.append(define_tpl_enable('ParMETIS', 'metis'))
|
||||
if '+metis' in spec:
|
||||
# METIS and ParMETIS mostly depend on transitive dependencies
|
||||
# STRUMPACK and SuperLU-dist, so don't provide a separate variant for
|
||||
# them.
|
||||
have_metis = 'metis' in spec
|
||||
options.append(define('TPL_ENABLE_METIS', have_metis))
|
||||
if have_metis:
|
||||
options.extend([
|
||||
define('METIS_LIBRARY_DIRS', spec['metis'].prefix.lib),
|
||||
define('METIS_LIBRARY_NAMES', 'metis'),
|
||||
define('TPL_METIS_INCLUDE_DIRS', spec['metis'].prefix.include),
|
||||
define('TPL_ENABLE_ParMETIS', True),
|
||||
])
|
||||
|
||||
have_parmetis = 'parmetis' in spec
|
||||
options.append(define('TPL_ENABLE_ParMETIS', have_parmetis))
|
||||
if have_parmetis:
|
||||
options.extend([
|
||||
define('ParMETIS_LIBRARY_DIRS', [
|
||||
spec['parmetis'].prefix.lib, spec['metis'].prefix.lib
|
||||
]),
|
||||
|
@ -777,7 +738,6 @@ def define_prefix_enable(prefix, cmake_var, spec_var=None):
|
|||
options.append(define_tpl_enable('STRUMPACK'))
|
||||
if '+strumpack' in spec:
|
||||
options.extend([
|
||||
define('TPL_ENABLE_STRUMPACK', True),
|
||||
define('Amesos2_ENABLE_STRUMPACK', True),
|
||||
define('STRUMPACK_LIBRARY_DIRS',
|
||||
spec['strumpack'].libs.directories[0]),
|
||||
|
@ -808,12 +768,13 @@ def define_prefix_enable(prefix, cmake_var, spec_var=None):
|
|||
define('CGNS_LIBRARY_DIRS', spec['cgns'].prefix.lib),
|
||||
])
|
||||
|
||||
options.append(self.define_from_variant('TPL_ENABLE_ADIOS2', 'adios2'))
|
||||
options.append(define_from_variant('TPL_ENABLE_ADIOS2', 'adios2'))
|
||||
|
||||
options.append(define(
|
||||
"Kokkos_ARCH_" +
|
||||
Kokkos.spack_micro_arch_map[spec.target.name].upper(),
|
||||
True))
|
||||
if '@13: +kokkos' in spec:
|
||||
options.append(define('TPL_ENABLE_HWLOC', True))
|
||||
kkmarch = Kokkos.spack_micro_arch_map.get(spec.target.name, None)
|
||||
if kkmarch:
|
||||
options.append(define("Kokkos_ARCH_" + kkmarch.upper(), True))
|
||||
|
||||
# ################# Miscellaneous Stuff ######################
|
||||
# CUDA
|
||||
|
@ -835,10 +796,6 @@ def define_prefix_enable(prefix, cmake_var, spec_var=None):
|
|||
if '+wrapper' in spec:
|
||||
cxx_flags.extend(['--expt-extended-lambda'])
|
||||
|
||||
# Set the C++ standard to use
|
||||
options.append(self.define_from_variant(
|
||||
"CMAKE_CXX_STANDARD", "cxxstd"))
|
||||
|
||||
# OpenMP
|
||||
options.append(define_trilinos_enable('OpenMP'))
|
||||
if '+openmp' in spec:
|
||||
|
@ -861,21 +818,20 @@ def define_prefix_enable(prefix, cmake_var, spec_var=None):
|
|||
'-L%s/ -lgfortran' % (libgfortran),
|
||||
))
|
||||
|
||||
float_s = '+float' in spec
|
||||
complex_s = '+complex' in spec
|
||||
if '+teuchos' in spec:
|
||||
# Explicit Template Instantiation (ETI) in Tpetra
|
||||
# NOTE: Trilinos will soon move to fixed std::uint64_t for GO and
|
||||
# std::int32_t or std::int64_t for local.
|
||||
options.append(define_from_variant(
|
||||
'Trilinos_ENABLE_EXPLICIT_INSTANTIATION',
|
||||
'explicit_template_instantiation'))
|
||||
|
||||
complex_s = spec.variants['complex'].value
|
||||
float_s = spec.variants['float'].value
|
||||
options.extend([
|
||||
define('Teuchos_ENABLE_COMPLEX', complex_s),
|
||||
define('Teuchos_ENABLE_FLOAT', float_s),
|
||||
])
|
||||
|
||||
# Explicit Template Instantiation (ETI) in Tpetra
|
||||
# NOTE: Trilinos will soon move to fixed std::uint64_t for GO and
|
||||
# std::int32_t or std::int64_t for local.
|
||||
options.append(self.define_from_variant(
|
||||
'Trilinos_ENABLE_EXPLICIT_INSTANTIATION',
|
||||
'explicit_template_instantiation'))
|
||||
|
||||
if '+explicit_template_instantiation' in spec and '+tpetra' in spec:
|
||||
options.extend([
|
||||
define('Tpetra_INST_DOUBLE', True),
|
||||
|
|
|
@ -64,17 +64,17 @@ class Xsdk(BundlePackage):
|
|||
depends_on('superlu-dist@5.2.2', when='@0.3.0')
|
||||
depends_on('superlu-dist@xsdk-0.2.0', when='@xsdk-0.2.0')
|
||||
|
||||
depends_on('trilinos@develop+hypre+superlu-dist+metis+hdf5~mumps+boost~suite-sparse+tpetra+nox+ifpack2+zoltan2+amesos2~exodus~dtk+intrepid2+shards+stratimikos gotype=int cxxstd=14',
|
||||
depends_on('trilinos@develop+hypre+superlu-dist+hdf5~mumps+boost~suite-sparse+tpetra+nox+ifpack2+zoltan+zoltan2+amesos2~exodus~dtk+intrepid2+shards+stratimikos gotype=int cxxstd=14',
|
||||
when='@develop +trilinos')
|
||||
depends_on('trilinos@13.0.1+hypre+superlu-dist+metis+hdf5~mumps+boost~suite-sparse+tpetra+nox+ifpack2+zoltan2+amesos2~exodus~dtk+intrepid2+shards gotype=int',
|
||||
depends_on('trilinos@13.0.1+hypre+superlu-dist+hdf5~mumps+boost~suite-sparse+tpetra+nox+ifpack2+zoltan+zoltan2+amesos2~exodus~dtk+intrepid2+shards gotype=int',
|
||||
when='@0.6.0 +trilinos')
|
||||
depends_on('trilinos@12.18.1+hypre+superlu-dist+metis+hdf5~mumps+boost~suite-sparse+tpetra+nox+ifpack2+zoltan2+amesos2~exodus+dtk+intrepid2+shards',
|
||||
depends_on('trilinos@12.18.1+hypre+superlu-dist+hdf5~mumps+boost~suite-sparse+tpetra+nox+ifpack2+zoltan+zoltan2+amesos2~exodus+dtk+intrepid2+shards',
|
||||
when='@0.5.0 +trilinos')
|
||||
depends_on('trilinos@12.14.1+hypre+superlu-dist+metis+hdf5~mumps+boost~suite-sparse+tpetra+nox+ifpack2+zoltan2+amesos2~exodus+dtk+intrepid2+shards',
|
||||
depends_on('trilinos@12.14.1+hypre+superlu-dist+hdf5~mumps+boost~suite-sparse+tpetra+nox+ifpack2+zoltan+zoltan2+amesos2~exodus+dtk+intrepid2+shards',
|
||||
when='@0.4.0 +trilinos')
|
||||
depends_on('trilinos@12.12.1+hypre+superlu-dist+metis+hdf5~mumps+boost~suite-sparse~tpetra~ifpack2~zoltan2~amesos2~exodus',
|
||||
depends_on('trilinos@12.12.1+hypre+superlu-dist+hdf5~mumps+boost~suite-sparse~tpetra~ifpack2~zoltan~zoltan2~amesos2~exodus',
|
||||
when='@0.3.0 +trilinos')
|
||||
depends_on('trilinos@xsdk-0.2.0+hypre+superlu-dist+metis+hdf5~mumps+boost~suite-sparse~tpetra~ifpack2~zoltan2~amesos2~exodus',
|
||||
depends_on('trilinos@xsdk-0.2.0+hypre+superlu-dist+hdf5~mumps+boost~suite-sparse~tpetra~ifpack2~zoltan~zoltan2~amesos2~exodus',
|
||||
when='@xsdk-0.2.0 +trilinos')
|
||||
|
||||
depends_on('datatransferkit@master', when='@develop +trilinos +datatransferkit')
|
||||
|
|
|
@ -44,19 +44,16 @@ class Xyce(CMakePackage):
|
|||
|
||||
# Xyce is built against an older version of Trilinos unlikely to be
|
||||
# used for any other purpose.
|
||||
depends_on('trilinos@12.12.1 +amesos+amesos2+anasazi+aztec+belos+complex+epetra+epetraext+explicit_template_instantiation+fortran+hdf5+ifpack+isorropia+kokkos+nox+sacado+suite-sparse+teuchos+trilinoscouplings+zoltan+stokhos+amesos2basker+epetraextbtf+epetraextexperimental+epetraextgraphreorderings gotype=all')
|
||||
depends_on('trilinos@12.12.1 +amesos+amesos2+anasazi+aztec+basker+belos+complex+epetra+epetraext+explicit_template_instantiation+fortran+hdf5+ifpack+isorropia+kokkos+nox+sacado+suite-sparse+trilinoscouplings+zoltan+stokhos+epetraextbtf+epetraextexperimental+epetraextgraphreorderings gotype=all')
|
||||
|
||||
# MPI options must be consistent with Trilinos
|
||||
depends_on('trilinos~mpi', when='~mpi')
|
||||
depends_on('trilinos+mpi', when='+mpi')
|
||||
# Propagate variants to trilinos:
|
||||
for _variant in ('mpi',):
|
||||
depends_on('trilinos~' + _variant, when='~' + _variant)
|
||||
depends_on('trilinos+' + _variant, when='+' + _variant)
|
||||
|
||||
# The default settings for various Trilinos variants would require the
|
||||
# installation of many more packages than are needed for Xyce.
|
||||
# The default variants in Trilinos have been set for several
|
||||
# applications, namely xSDK, deal.ii, and DTK. Future changes to the
|
||||
# Trilinos recipe will disable all packages by default. At that
|
||||
# point, these ~variants can be removed from the following recipes.
|
||||
depends_on('trilinos~adios2~alloptpkgs~boost~cgns~chaco~cuda~cuda_rdc~debug~dtk~exodus~float~glm~gtest~hwloc~hypre~ifpack2~intrepid~intrepid2~ipo~matio~mesquite~metis~minitensor~ml~muelu~mumps~netcdf~openmp~phalanx~piro~pnetcdf~python~rol~rythmos~shards~shared~shylu~stk~stratimikos~strumpack~superlu~superlu-dist~teko~tempus~wrapper~x11~xsdkflags~zlib~zoltan2')
|
||||
depends_on('trilinos~float~ifpack2~ml~muelu~zoltan2')
|
||||
|
||||
def cmake_args(self):
|
||||
spec = self.spec
|
||||
|
|
Loading…
Reference in a new issue