summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSeth R. Johnson <johnsonsr@ornl.gov>2021-07-16 14:36:06 -0400
committerGitHub <noreply@github.com>2021-07-16 11:36:06 -0700
commit624c72afae6b46826eea4119ca096ef263e93067 (patch)
treecdc692ebb6601425690325fd1e3729ef6c753d4c
parentc56f2a935db03e7041bd88783149caffd0366adc (diff)
downloadspack-624c72afae6b46826eea4119ca096ef263e93067.tar.gz
spack-624c72afae6b46826eea4119ca096ef263e93067.tar.bz2
spack-624c72afae6b46826eea4119ca096ef263e93067.tar.xz
spack-624c72afae6b46826eea4119ca096ef263e93067.zip
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>
-rw-r--r--share/spack/gitlab/cloud_pipelines/stacks/e4s-on-power/spack.yaml2
-rw-r--r--share/spack/gitlab/cloud_pipelines/stacks/e4s/spack.yaml2
-rw-r--r--var/spack/repos/builtin/packages/camellia/package.py2
-rw-r--r--var/spack/repos/builtin/packages/datatransferkit/package.py5
-rw-r--r--var/spack/repos/builtin/packages/dealii/package.py11
-rw-r--r--var/spack/repos/builtin/packages/fortrilinos/package.py2
-rw-r--r--var/spack/repos/builtin/packages/nalu-wind/package.py18
-rw-r--r--var/spack/repos/builtin/packages/nalu/package.py2
-rw-r--r--var/spack/repos/builtin/packages/omega-h/package.py2
-rw-r--r--var/spack/repos/builtin/packages/percept/package.py2
-rw-r--r--var/spack/repos/builtin/packages/phist/package.py2
-rw-r--r--var/spack/repos/builtin/packages/quinoa/package.py2
-rw-r--r--var/spack/repos/builtin/packages/trilinos/package.py248
-rw-r--r--var/spack/repos/builtin/packages/xsdk/package.py12
-rw-r--r--var/spack/repos/builtin/packages/xyce/package.py15
15 files changed, 139 insertions, 188 deletions
diff --git a/share/spack/gitlab/cloud_pipelines/stacks/e4s-on-power/spack.yaml b/share/spack/gitlab/cloud_pipelines/stacks/e4s-on-power/spack.yaml
index fc0c5ef68e..a131d8402e 100644
--- a/share/spack/gitlab/cloud_pipelines/stacks/e4s-on-power/spack.yaml
+++ b/share/spack/gitlab/cloud_pipelines/stacks/e4s-on-power/spack.yaml
@@ -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
diff --git a/share/spack/gitlab/cloud_pipelines/stacks/e4s/spack.yaml b/share/spack/gitlab/cloud_pipelines/stacks/e4s/spack.yaml
index 790bb341bb..470f72259a 100644
--- a/share/spack/gitlab/cloud_pipelines/stacks/e4s/spack.yaml
+++ b/share/spack/gitlab/cloud_pipelines/stacks/e4s/spack.yaml
@@ -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
diff --git a/var/spack/repos/builtin/packages/camellia/package.py b/var/spack/repos/builtin/packages/camellia/package.py
index 857fe5ec69..654c3a8dfb 100644
--- a/var/spack/repos/builtin/packages/camellia/package.py
+++ b/var/spack/repos/builtin/packages/camellia/package.py
@@ -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
diff --git a/var/spack/repos/builtin/packages/datatransferkit/package.py b/var/spack/repos/builtin/packages/datatransferkit/package.py
index 8cc72a2da5..42698cc172 100644
--- a/var/spack/repos/builtin/packages/datatransferkit/package.py
+++ b/var/spack/repos/builtin/packages/datatransferkit/package.py
@@ -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')
diff --git a/var/spack/repos/builtin/packages/dealii/package.py b/var/spack/repos/builtin/packages/dealii/package.py
index 644fd32eda..7c34fc1d1a 100644
--- a/var/spack/repos/builtin/packages/dealii/package.py
+++ b/var/spack/repos/builtin/packages/dealii/package.py
@@ -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.
diff --git a/var/spack/repos/builtin/packages/fortrilinos/package.py b/var/spack/repos/builtin/packages/fortrilinos/package.py
index bd0da8b8e2..3e13fe156e 100644
--- a/var/spack/repos/builtin/packages/fortrilinos/package.py
+++ b/var/spack/repos/builtin/packages/fortrilinos/package.py
@@ -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')
diff --git a/var/spack/repos/builtin/packages/nalu-wind/package.py b/var/spack/repos/builtin/packages/nalu-wind/package.py
index d845a6ea62..203d69b830 100644
--- a/var/spack/repos/builtin/packages/nalu-wind/package.py
+++ b/var/spack/repos/builtin/packages/nalu-wind/package.py
@@ -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')
diff --git a/var/spack/repos/builtin/packages/nalu/package.py b/var/spack/repos/builtin/packages/nalu/package.py
index 44c8357d49..acda4934e6 100644
--- a/var/spack/repos/builtin/packages/nalu/package.py
+++ b/var/spack/repos/builtin/packages/nalu/package.py
@@ -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')
diff --git a/var/spack/repos/builtin/packages/omega-h/package.py b/var/spack/repos/builtin/packages/omega-h/package.py
index b5a01bfad5..9fb8185edf 100644
--- a/var/spack/repos/builtin/packages/omega-h/package.py
+++ b/var/spack/repos/builtin/packages/omega-h/package.py
@@ -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
diff --git a/var/spack/repos/builtin/packages/percept/package.py b/var/spack/repos/builtin/packages/percept/package.py
index a33c2f3667..99e204a7d2 100644
--- a/var/spack/repos/builtin/packages/percept/package.py
+++ b/var/spack/repos/builtin/packages/percept/package.py
@@ -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
diff --git a/var/spack/repos/builtin/packages/phist/package.py b/var/spack/repos/builtin/packages/phist/package.py
index 9d1a40e529..1883a3ec57 100644
--- a/var/spack/repos/builtin/packages/phist/package.py
+++ b/var/spack/repos/builtin/packages/phist/package.py
@@ -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')
diff --git a/var/spack/repos/builtin/packages/quinoa/package.py b/var/spack/repos/builtin/packages/quinoa/package.py
index 8b3996181d..aabda89fac 100644
--- a/var/spack/repos/builtin/packages/quinoa/package.py
+++ b/var/spack/repos/builtin/packages/quinoa/package.py
@@ -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")
diff --git a/var/spack/repos/builtin/packages/trilinos/package.py b/var/spack/repos/builtin/packages/trilinos/package.py
index 42b8011e23..85dafa076f 100644
--- a/var/spack/repos/builtin/packages/trilinos/package.py
+++ b/var/spack/repos/builtin/packages/trilinos/package.py
@@ -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')
+ # 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='~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('+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('+intrepid2', when='~shards')
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')
- conflicts('+teko', when='~amesos')
- conflicts('+teko', when='~anasazi')
- conflicts('+teko', when='~aztec')
- conflicts('+teko', when='~epetraext')
- conflicts('+teko', when='~ifpack')
- conflicts('+teko', when='~ml')
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 @@ class Trilinos(CMakePackage, CudaPackage):
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 @@ class Trilinos(CMakePackage, CudaPackage):
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 @@ class Trilinos(CMakePackage, CudaPackage):
# ################## 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 @@ class Trilinos(CMakePackage, CudaPackage):
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',
- 'epetraextexperimental'),
- define_prefix_enable('EpetraExt_BUILD_GRAPH_REORDERINGS',
- 'epetraextgraphreorderings'),
- define_prefix_enable('Amesos2_ENABLE_Basker', 'amesos2basker'),
+ define_from_variant('EpetraExt_BUILD_BTF', 'epetraextbtf'),
+ define_from_variant('EpetraExt_BUILD_EXPERIMENTAL',
+ 'epetraextexperimental'),
+ define_from_variant('EpetraExt_BUILD_GRAPH_REORDERINGS',
+ 'epetraextgraphreorderings'),
+ 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 @@ class Trilinos(CMakePackage, CudaPackage):
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 @@ class Trilinos(CMakePackage, CudaPackage):
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 @@ class Trilinos(CMakePackage, CudaPackage):
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 @@ class Trilinos(CMakePackage, CudaPackage):
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 @@ class Trilinos(CMakePackage, CudaPackage):
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 @@ class Trilinos(CMakePackage, CudaPackage):
'-L%s/ -lgfortran' % (libgfortran),
))
- float_s = '+float' in spec
- complex_s = '+complex' in spec
- if '+teuchos' in spec:
- 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(
+ 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),
+ ])
+
if '+explicit_template_instantiation' in spec and '+tpetra' in spec:
options.extend([
define('Tpetra_INST_DOUBLE', True),
diff --git a/var/spack/repos/builtin/packages/xsdk/package.py b/var/spack/repos/builtin/packages/xsdk/package.py
index c8f25ad5c9..2c9cde37d0 100644
--- a/var/spack/repos/builtin/packages/xsdk/package.py
+++ b/var/spack/repos/builtin/packages/xsdk/package.py
@@ -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')
diff --git a/var/spack/repos/builtin/packages/xyce/package.py b/var/spack/repos/builtin/packages/xyce/package.py
index 1851d115ff..494d8780f3 100644
--- a/var/spack/repos/builtin/packages/xyce/package.py
+++ b/var/spack/repos/builtin/packages/xyce/package.py
@@ -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