diff options
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 |