Trilinos: enable x11 when +exodus (#25033)
* trilinos: rearrange dependencies * trilinos: refactor tpl enables and add libx11 for +exodus Fixes #25028
This commit is contained in:
parent
68dbca64e7
commit
8735d0a281
@ -252,6 +252,8 @@ class Trilinos(CMakePackage, CudaPackage):
|
|||||||
placement='packages/mesquite',
|
placement='packages/mesquite',
|
||||||
when='+mesquite @develop')
|
when='+mesquite @develop')
|
||||||
|
|
||||||
|
# ###################### Conflicts ##########################
|
||||||
|
|
||||||
# Epetra packages
|
# Epetra packages
|
||||||
with when('~epetra'):
|
with when('~epetra'):
|
||||||
conflicts('+amesos')
|
conflicts('+amesos')
|
||||||
@ -297,12 +299,12 @@ class Trilinos(CMakePackage, CudaPackage):
|
|||||||
conflicts('+tempus', when='~nox')
|
conflicts('+tempus', when='~nox')
|
||||||
conflicts('+zoltan2', when='~zoltan')
|
conflicts('+zoltan2', when='~zoltan')
|
||||||
|
|
||||||
# Only allow DTK with Trilinos 12.14 and develop
|
# Only allow DTK with Trilinos 12
|
||||||
conflicts('+dtk', when='~boost')
|
conflicts('+dtk', when='~boost')
|
||||||
conflicts('+dtk', when='~intrepid2')
|
conflicts('+dtk', when='~intrepid2')
|
||||||
conflicts('+dtk', when='@0:12.12.99,master')
|
conflicts('+dtk', when='@0:12.12.99,develop,master')
|
||||||
|
|
||||||
# Only allow Mesquite with Trilinos 12.12 and up, and develop
|
# Only allow Mesquite with older Trilinos 12.12 up to 13
|
||||||
conflicts('+mesquite', when='@0:12.10.99,master,develop')
|
conflicts('+mesquite', when='@0:12.10.99,master,develop')
|
||||||
# Can only use one type of SuperLU
|
# Can only use one type of SuperLU
|
||||||
conflicts('+superlu-dist', when='+superlu')
|
conflicts('+superlu-dist', when='+superlu')
|
||||||
@ -325,10 +327,10 @@ class Trilinos(CMakePackage, CudaPackage):
|
|||||||
'+shared', when='+stk platform=darwin',
|
'+shared', when='+stk platform=darwin',
|
||||||
msg='Cannot build Trilinos with STK as a shared library on Darwin.'
|
msg='Cannot build Trilinos with STK as a shared library on Darwin.'
|
||||||
)
|
)
|
||||||
# ADIOS2 was only added after v12.14.1
|
|
||||||
conflicts('+adios2', when='@:12.14.1')
|
conflicts('+adios2', when='@:12.14.1')
|
||||||
conflicts('+adios2', when='@xsdk-0.2.0')
|
conflicts('+adios2', when='@xsdk-0.2.0')
|
||||||
conflicts('+pnetcdf', when='~netcdf')
|
conflicts('+pnetcdf', when='~netcdf')
|
||||||
|
conflicts('+pnetcdf', when='~mpi')
|
||||||
conflicts('+cuda_rdc', when='~cuda')
|
conflicts('+cuda_rdc', when='~cuda')
|
||||||
conflicts('+wrapper', when='~cuda')
|
conflicts('+wrapper', when='~cuda')
|
||||||
conflicts('+wrapper', when='%clang')
|
conflicts('+wrapper', when='%clang')
|
||||||
@ -358,26 +360,23 @@ class Trilinos(CMakePackage, CudaPackage):
|
|||||||
|
|
||||||
# ###################### Dependencies ##########################
|
# ###################### Dependencies ##########################
|
||||||
|
|
||||||
|
# Explicit dependency variants
|
||||||
|
depends_on('adios2', when='+adios2')
|
||||||
depends_on('blas')
|
depends_on('blas')
|
||||||
depends_on('lapack')
|
|
||||||
depends_on('boost', when='+boost')
|
depends_on('boost', when='+boost')
|
||||||
|
depends_on('cgns', when='+cgns')
|
||||||
depends_on('hdf5+hl', when='+hdf5')
|
depends_on('hdf5+hl', when='+hdf5')
|
||||||
|
depends_on('hdf5~mpi', when='+hdf5~mpi')
|
||||||
|
depends_on('hdf5+mpi', when="+hdf5+mpi")
|
||||||
|
depends_on('lapack')
|
||||||
depends_on('matio', when='+matio')
|
depends_on('matio', when='+matio')
|
||||||
|
depends_on('mpi', when='+mpi')
|
||||||
|
depends_on('netcdf-c+mpi+parallel-netcdf', when="+netcdf+pnetcdf@master,12.12.1:")
|
||||||
|
depends_on('netcdf-c+mpi', when="+netcdf~pnetcdf+mpi")
|
||||||
|
depends_on('netcdf-c', when="+netcdf")
|
||||||
depends_on('suite-sparse', when='+suite-sparse')
|
depends_on('suite-sparse', when='+suite-sparse')
|
||||||
depends_on('zlib', when="+zlib")
|
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('metis', when='+zoltan')
|
|
||||||
depends_on('parmetis', when='+mpi +zoltan')
|
|
||||||
depends_on('parmetis', when='+scorec')
|
|
||||||
depends_on('cgns', when='+cgns')
|
|
||||||
depends_on('adios2', when='+adios2')
|
|
||||||
# Trilinos' Tribits config system is limited which makes it very tricky to
|
# Trilinos' Tribits config system is limited which makes it very tricky to
|
||||||
# link Amesos with static MUMPS, see
|
# link Amesos with static MUMPS, see
|
||||||
# https://trilinos.org/docs/dev/packages/amesos2/doc/html/classAmesos2_1_1MUMPS.html
|
# https://trilinos.org/docs/dev/packages/amesos2/doc/html/classAmesos2_1_1MUMPS.html
|
||||||
@ -410,9 +409,13 @@ class Trilinos(CMakePackage, CudaPackage):
|
|||||||
depends_on('hwloc', when='@13: +kokkos')
|
depends_on('hwloc', when='@13: +kokkos')
|
||||||
depends_on('hwloc+cuda', when='@13: +kokkos+cuda')
|
depends_on('hwloc+cuda', when='@13: +kokkos+cuda')
|
||||||
|
|
||||||
# Dependencies/conflicts when MPI is disabled
|
# Variant requirements from packages
|
||||||
depends_on('hdf5~mpi', when='+hdf5~mpi')
|
depends_on('metis', when='+zoltan')
|
||||||
conflicts('+pnetcdf', when='~mpi')
|
depends_on('libx11', when='+exodus')
|
||||||
|
depends_on('parmetis', when='+mpi +zoltan')
|
||||||
|
depends_on('parmetis', when='+scorec')
|
||||||
|
|
||||||
|
# ###################### Patches ##########################
|
||||||
|
|
||||||
patch('umfpack_from_suitesparse.patch', when='@11.14.1:12.8.1')
|
patch('umfpack_from_suitesparse.patch', when='@11.14.1:12.8.1')
|
||||||
patch('xlf_seacas.patch', when='@12.10.1:12.12.1 %xl')
|
patch('xlf_seacas.patch', when='@12.10.1:12.12.1 %xl')
|
||||||
@ -425,20 +428,20 @@ class Trilinos(CMakePackage, CudaPackage):
|
|||||||
patch('cray_secas_12_12_1.patch', when='@12.12.1%cce')
|
patch('cray_secas_12_12_1.patch', when='@12.12.1%cce')
|
||||||
patch('cray_secas.patch', when='@12.14.1:%cce')
|
patch('cray_secas.patch', when='@12.14.1:%cce')
|
||||||
|
|
||||||
|
# workaround an NVCC bug with c++14 (https://github.com/trilinos/Trilinos/issues/6954)
|
||||||
|
# avoid calling deprecated functions with CUDA-11
|
||||||
|
patch('fix_cxx14_cuda11.patch', when='@13.0.0:13.0.1 cxxstd=14 ^cuda@11:')
|
||||||
|
# Allow building with +teko gotype=long
|
||||||
|
patch('https://github.com/trilinos/Trilinos/commit/b17f20a0b91e0b9fc5b1b0af3c8a34e2a4874f3f.patch',
|
||||||
|
sha256='dee6c55fe38eb7f6367e1896d6bc7483f6f9ab8fa252503050cc0c68c6340610',
|
||||||
|
when='@13.0.0:13.0.1 +teko gotype=long')
|
||||||
|
|
||||||
def flag_handler(self, name, flags):
|
def flag_handler(self, name, flags):
|
||||||
if self.spec.satisfies('%cce'):
|
if self.spec.satisfies('%cce'):
|
||||||
if name == 'ldflags':
|
if name == 'ldflags':
|
||||||
flags.append('-fuse-ld=gold')
|
flags.append('-fuse-ld=gold')
|
||||||
return (None, None, flags)
|
return (None, None, flags)
|
||||||
|
|
||||||
# workaround an NVCC bug with c++14 (https://github.com/trilinos/Trilinos/issues/6954)
|
|
||||||
# avoid calling deprecated functions with CUDA-11
|
|
||||||
patch('fix_cxx14_cuda11.patch', when='@13.0.0:13.0.1 cxxstd=14 ^cuda@11:')
|
|
||||||
|
|
||||||
patch('https://github.com/trilinos/Trilinos/commit/b17f20a0b91e0b9fc5b1b0af3c8a34e2a4874f3f.patch',
|
|
||||||
sha256='dee6c55fe38eb7f6367e1896d6bc7483f6f9ab8fa252503050cc0c68c6340610',
|
|
||||||
when='@13.0.0:13.0.1 +teko gotype=long')
|
|
||||||
|
|
||||||
def url_for_version(self, version):
|
def url_for_version(self, version):
|
||||||
url = "https://github.com/trilinos/Trilinos/archive/trilinos-release-{0}.tar.gz"
|
url = "https://github.com/trilinos/Trilinos/archive/trilinos-release-{0}.tar.gz"
|
||||||
return url.format(version.dashed)
|
return url.format(version.dashed)
|
||||||
@ -608,41 +611,35 @@ def define_tpl_enable(cmake_var, spec_var=None):
|
|||||||
|
|
||||||
# ######################### TPLs #############################
|
# ######################### TPLs #############################
|
||||||
|
|
||||||
blas = spec['blas'].libs
|
# Enable TPLs based on whether they're in our spec, not whether they're
|
||||||
lapack = spec['lapack'].libs
|
# variant names: packages/features should disable availability
|
||||||
|
for tpl_name, dep_name in [
|
||||||
|
('ADIOS2', 'adios2'),
|
||||||
|
('BLAS', 'blas'),
|
||||||
|
('Boost', 'boost'),
|
||||||
|
('CGNS', 'cgns'),
|
||||||
|
('HDF5', 'hdf5'),
|
||||||
|
('HYPRE', 'hypre'),
|
||||||
|
('HWLOC', 'hwloc'),
|
||||||
|
('LAPACK', 'lapack'),
|
||||||
|
('Matio', 'matio'),
|
||||||
|
('METIS', 'metis'),
|
||||||
|
('Netcdf', 'netcdf-c'),
|
||||||
|
('STRUMPACK', 'strumpack'),
|
||||||
|
('SuperLU', 'superlu'),
|
||||||
|
('X11', 'libx11'),
|
||||||
|
('Zlib', 'zlib'),
|
||||||
|
]:
|
||||||
|
have_dep = (dep_name in spec)
|
||||||
|
options.append(define('TPL_ENABLE_' + tpl_name, have_dep))
|
||||||
|
if not have_dep:
|
||||||
|
continue
|
||||||
|
depspec = spec[dep_name]
|
||||||
options.extend([
|
options.extend([
|
||||||
define('TPL_ENABLE_BLAS', True),
|
define('TPL_' + tpl_name + '_INCLUDE_DIRS', depspec.prefix.include),
|
||||||
define('BLAS_LIBRARY_NAMES', blas.names),
|
define(tpl_name + '_ROOT', depspec.prefix),
|
||||||
define('BLAS_LIBRARY_DIRS', blas.directories),
|
define(tpl_name + '_LIBRARY_NAMES', depspec.libs.names),
|
||||||
define('TPL_ENABLE_LAPACK', True),
|
define(tpl_name + '_LIBRARY_DIRS', depspec.libs.directories),
|
||||||
define('LAPACK_LIBRARY_NAMES', lapack.names),
|
|
||||||
define('LAPACK_LIBRARY_DIRS', lapack.directories),
|
|
||||||
define_tpl_enable('Matio'),
|
|
||||||
])
|
|
||||||
|
|
||||||
options.append(define_tpl_enable('Netcdf'))
|
|
||||||
if '+netcdf' in spec:
|
|
||||||
options.append(define('NetCDF_ROOT', spec['netcdf-c'].prefix))
|
|
||||||
|
|
||||||
options.append(define_tpl_enable('HYPRE'))
|
|
||||||
if '+hypre' in spec:
|
|
||||||
options.extend([
|
|
||||||
define('HYPRE_INCLUDE_DIRS', spec['hypre'].prefix.include),
|
|
||||||
define('HYPRE_LIBRARY_DIRS', spec['hypre'].prefix.lib),
|
|
||||||
])
|
|
||||||
|
|
||||||
options.append(define_tpl_enable('Boost'))
|
|
||||||
if '+boost' in spec:
|
|
||||||
options.extend([
|
|
||||||
define('Boost_INCLUDE_DIRS', spec['boost'].prefix.include),
|
|
||||||
define('Boost_LIBRARY_DIRS', spec['boost'].prefix.lib),
|
|
||||||
])
|
|
||||||
|
|
||||||
options.append(define_tpl_enable('HDF5'))
|
|
||||||
if '+hdf5' in spec:
|
|
||||||
options.extend([
|
|
||||||
define('HDF5_INCLUDE_DIRS', spec['hdf5'].prefix.include),
|
|
||||||
define('HDF5_LIBRARY_DIRS', spec['hdf5'].prefix.lib),
|
|
||||||
])
|
])
|
||||||
|
|
||||||
if '+suite-sparse' in spec:
|
if '+suite-sparse' in spec:
|
||||||
@ -730,22 +727,8 @@ def define_tpl_enable(cmake_var, spec_var=None):
|
|||||||
define('HAVE_SUPERLUDIST_LUSTRUCTINIT_2ARG', True),
|
define('HAVE_SUPERLUDIST_LUSTRUCTINIT_2ARG', True),
|
||||||
])
|
])
|
||||||
|
|
||||||
options.append(define_tpl_enable('SuperLU'))
|
|
||||||
if '+superlu' in spec:
|
|
||||||
options.extend([
|
|
||||||
define('SuperLU_LIBRARY_DIRS', spec['superlu'].prefix.lib),
|
|
||||||
define('SuperLU_INCLUDE_DIRS', spec['superlu'].prefix.include),
|
|
||||||
])
|
|
||||||
|
|
||||||
options.append(define_tpl_enable('STRUMPACK'))
|
|
||||||
if '+strumpack' in spec:
|
if '+strumpack' in spec:
|
||||||
options.extend([
|
options.append(define('Amesos2_ENABLE_STRUMPACK', True))
|
||||||
define('Amesos2_ENABLE_STRUMPACK', True),
|
|
||||||
define('STRUMPACK_LIBRARY_DIRS',
|
|
||||||
spec['strumpack'].libs.directories[0]),
|
|
||||||
define('STRUMPACK_INCLUDE_DIRS',
|
|
||||||
spec['strumpack'].headers.directories[0]),
|
|
||||||
])
|
|
||||||
|
|
||||||
options.append(define_tpl_enable('Pnetcdf'))
|
options.append(define_tpl_enable('Pnetcdf'))
|
||||||
if '+pnetcdf' in spec:
|
if '+pnetcdf' in spec:
|
||||||
@ -755,25 +738,7 @@ def define_tpl_enable(cmake_var, spec_var=None):
|
|||||||
define('PNetCDF_ROOT', spec['parallel-netcdf'].prefix),
|
define('PNetCDF_ROOT', spec['parallel-netcdf'].prefix),
|
||||||
])
|
])
|
||||||
|
|
||||||
options.append(define_tpl_enable('Zlib'))
|
|
||||||
if '+zlib' in spec:
|
|
||||||
options.extend([
|
|
||||||
define('TPL_ENABLE_Zlib', True),
|
|
||||||
define('Zlib_ROOT', spec['zlib'].prefix),
|
|
||||||
])
|
|
||||||
|
|
||||||
options.append(define_tpl_enable('CGNS'))
|
|
||||||
if '+cgns' in spec:
|
|
||||||
options.extend([
|
|
||||||
define('TPL_ENABLE_CGNS', True),
|
|
||||||
define('CGNS_INCLUDE_DIRS', spec['cgns'].prefix.include),
|
|
||||||
define('CGNS_LIBRARY_DIRS', spec['cgns'].prefix.lib),
|
|
||||||
])
|
|
||||||
|
|
||||||
options.append(define_from_variant('TPL_ENABLE_ADIOS2', 'adios2'))
|
|
||||||
|
|
||||||
if '@13: +kokkos' in spec:
|
if '@13: +kokkos' in spec:
|
||||||
options.append(define('TPL_ENABLE_HWLOC', True))
|
|
||||||
kkmarch = Kokkos.spack_micro_arch_map.get(spec.target.name, None)
|
kkmarch = Kokkos.spack_micro_arch_map.get(spec.target.name, None)
|
||||||
if kkmarch:
|
if kkmarch:
|
||||||
options.append(define("Kokkos_ARCH_" + kkmarch.upper(), True))
|
options.append(define("Kokkos_ARCH_" + kkmarch.upper(), True))
|
||||||
|
Loading…
Reference in New Issue
Block a user