Provide draco-7_8_0. (#18947)

* Provide draco-7_8_0.

+ Also provide a patchfile for draco-7_6_0 to support CrayPE builds.
+ Version 7.8.0 has a new variant `+caliper`.
+ Sort dependencies alphabetically after grouping by required and optional.

* Remove patchfile that is no longer needed.

+ Newer versions of draco do not require this patch.
+ Older versions of draco are not supported for spectrum-mpi.

* Change new variant +caliper to default to False.
This commit is contained in:
Kelly (KT) Thompson 2020-10-10 20:02:00 -06:00 committed by GitHub
parent e8306e8f22
commit 933aacf7b6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 128 additions and 29 deletions

View File

@ -0,0 +1,107 @@
diff --git a/config/platform_checks.cmake b/config/platform_checks.cmake
index d2ab4da9..4d3c14c2 100644
--- a/config/platform_checks.cmake
+++ b/config/platform_checks.cmake
@@ -77,54 +77,54 @@ endif()
#------------------------------------------------------------------------------#
macro( query_craype )
- if( NOT DEFINED CRAY_PE )
-
- # Is this a Cray machine?
- message( STATUS "Looking to see if we are building in a Cray Environment...")
- if( DEFINED ENV{CRAYPE_VERSION} )
- set( CRAY_PE ON CACHE BOOL
- "Are we building in a Cray Programming Environment?")
-
- # We expect developers to use the Cray compiler wrappers (especially in
- # setupMPI.cmake). See also
- # https://cmake.org/cmake/help/latest/module/FindMPI.html
- if( NOT "$ENV{CXX}" MATCHES "$ENV{SPACK_ROOT}/lib/spack/env/" )
- # skip this check if building from within spack.
- if( NOT "$ENV{CXX}" MATCHES "CC$" OR
- NOT "$ENV{CC}" MATCHES "cc$" OR
- NOT "$ENV{FC}" MATCHES "ftn$" OR
- NOT "$ENV{CRAYPE_LINK_TYPE}" MATCHES "dynamic$" )
- message( FATAL_ERROR
- "The build system requires that the Cray compiler wrappers (CC, cc, ftn) be "
- " used when configuring this product on a Cray system (CRAY_PE=${CRAY_PE}). The"
- " development environment must also support dynamic linking. The build system "
- " thinks you are trying to use:\n"
- " CMAKE_CXX_COMPILER = ${CMAKE_CXX_COMPILER}\n"
- " CMAKE_C_COMPILER = ${CMAKE_C_COMPILER}\n"
- " CMAKE_Fortran_COMPILER = ${CMAKE_Fortran_COMPILER}\n"
- " CRAYPE_LINK_TYPE = $ENV{CRAYPE_LINK_TYPE}\n"
- "If you are working on a system that runs the Cray Programming Environment, try"
- " setting the following variables and rerunning cmake from a clean build"
- " directory:\n"
- " export CXX=`which CC`\n"
- " export CC=`which cc`\n"
- " export FC=`which ftn`\n"
- " export CRAYPE_LINK_TYPE=dynamic\n"
- "Otherwise please email this error message and other related information to"
- " draco@lanl.gov.\n" )
- endif()
- endif()
- message( STATUS
- "Looking to see if we are building in a Cray Environment..."
- "found version $ENV{CRAYPE_VERSION}.")
- else()
- set( CRAY_PE OFF CACHE BOOL
- "Are we building in a Cray Programming Environment?")
- message( STATUS
- "Looking to see if we are building in a Cray Environment...no.")
- endif()
-
- endif()
+ # if( NOT DEFINED CRAY_PE )
+
+ # # Is this a Cray machine?
+ # message( STATUS "Looking to see if we are building in a Cray Environment...")
+ # if( DEFINED ENV{CRAYPE_VERSION} )
+ # set( CRAY_PE ON CACHE BOOL
+ # "Are we building in a Cray Programming Environment?")
+
+ # # We expect developers to use the Cray compiler wrappers (especially in
+ # # setupMPI.cmake). See also
+ # # https://cmake.org/cmake/help/latest/module/FindMPI.html
+ # if( NOT "$ENV{CXX}" MATCHES "$ENV{SPACK_ROOT}/lib/spack/env/" )
+ # # skip this check if building from within spack.
+ # if( NOT "$ENV{CXX}" MATCHES "CC$" OR
+ # NOT "$ENV{CC}" MATCHES "cc$" OR
+ # NOT "$ENV{FC}" MATCHES "ftn$" OR
+ # NOT "$ENV{CRAYPE_LINK_TYPE}" MATCHES "dynamic$" )
+ # message( FATAL_ERROR
+ # "The build system requires that the Cray compiler wrappers (CC, cc, ftn) be "
+ # " used when configuring this product on a Cray system (CRAY_PE=${CRAY_PE}). The"
+ # " development environment must also support dynamic linking. The build system "
+ # " thinks you are trying to use:\n"
+ # " CMAKE_CXX_COMPILER = ${CMAKE_CXX_COMPILER}\n"
+ # " CMAKE_C_COMPILER = ${CMAKE_C_COMPILER}\n"
+ # " CMAKE_Fortran_COMPILER = ${CMAKE_Fortran_COMPILER}\n"
+ # " CRAYPE_LINK_TYPE = $ENV{CRAYPE_LINK_TYPE}\n"
+ # "If you are working on a system that runs the Cray Programming Environment, try"
+ # " setting the following variables and rerunning cmake from a clean build"
+ # " directory:\n"
+ # " export CXX=`which CC`\n"
+ # " export CC=`which cc`\n"
+ # " export FC=`which ftn`\n"
+ # " export CRAYPE_LINK_TYPE=dynamic\n"
+ # "Otherwise please email this error message and other related information to"
+ # " draco@lanl.gov.\n" )
+ # endif()
+ # endif()
+ # message( STATUS
+ # "Looking to see if we are building in a Cray Environment..."
+ # "found version $ENV{CRAYPE_VERSION}.")
+ # else()
+ # set( CRAY_PE OFF CACHE BOOL
+ # "Are we building in a Cray Programming Environment?")
+ # message( STATUS
+ # "Looking to see if we are building in a Cray Environment...no.")
+ # endif()
+
+ # endif()
endmacro()
##---------------------------------------------------------------------------##

View File

@ -18,6 +18,7 @@ class Draco(CMakePackage):
maintainers = ['KineticTheory'] maintainers = ['KineticTheory']
version('develop', branch='develop') version('develop', branch='develop')
version('7.8.0', sha256='f6de794457441f69025619be58810bca432f3e0dd773ea9b9a7977b1dc09530d')
version('7.7.0', sha256='eb7fffbcba48e16524f619d261192ead129f968c59f3581f3217b89590812ddf') version('7.7.0', sha256='eb7fffbcba48e16524f619d261192ead129f968c59f3581f3217b89590812ddf')
version('7.6.0', sha256='c2c6b329620d7bcb0f2fc14371f105dfb80a84e7c5adbb34620777034b15c7c9') version('7.6.0', sha256='c2c6b329620d7bcb0f2fc14371f105dfb80a84e7c5adbb34620777034b15c7c9')
version('7.5.0', sha256='0bb12b5f5ff60ba3087310c07da42e8d4f481ec4259daaa24ec240815a2e9dec') version('7.5.0', sha256='0bb12b5f5ff60ba3087310c07da42e8d4f481ec4259daaa24ec240815a2e9dec')
@ -34,6 +35,7 @@ class Draco(CMakePackage):
variant('build_type', default='Release', description='CMake build type', variant('build_type', default='Release', description='CMake build type',
values=('Debug', 'Release', 'RelWithDebInfo', 'MinSizeRel')) values=('Debug', 'Release', 'RelWithDebInfo', 'MinSizeRel'))
variant('caliper', default=False, description='Enable caliper timers support')
variant('cuda', default=False, description='Enable Cuda/GPU support') variant('cuda', default=False, description='Enable Cuda/GPU support')
variant('eospac', default=True, description='Enable EOSPAC support') variant('eospac', default=True, description='Enable EOSPAC support')
variant('lapack', default=True, description='Enable LAPACK wrapper') variant('lapack', default=True, description='Enable LAPACK wrapper')
@ -42,18 +44,20 @@ class Draco(CMakePackage):
variant('qt', default=False, description='Enable Qt support') variant('qt', default=False, description='Enable Qt support')
variant('superlu_dist', default=True, description='Enable SuperLU-DIST support') variant('superlu_dist', default=True, description='Enable SuperLU-DIST support')
depends_on('cmake@3.9:', when='@:6.99', type='build')
depends_on('cmake@3.11:', when='@7.0.0:7.1.99', type='build')
depends_on('cmake@3.14:', when='@7.2.0:7.6.99', type='build')
depends_on('cmake@3.17:', when='@7.7:', type='build')
depends_on('gsl') depends_on('gsl')
depends_on('mpi@3:', type=('build', 'link', 'run')) depends_on('mpi@3:', type=('build', 'link', 'run'))
depends_on('numdiff', type='build') depends_on('numdiff', type='build')
depends_on('python@2.7:', when='@:7.6.99', type=('build', 'run'))
depends_on('python@3.5:', when='@7.7.0:', type=('build', 'run', 'test'))
depends_on('random123@1.09', type='build') depends_on('random123@1.09', type='build')
depends_on('python@2.7:', when='@7.7.0:', type=('build', 'run'))
depends_on('python@3.5:', when='@:7.6.99', type=('build', 'run', 'test'))
depends_on('cmake@3.9:', when='@:6.99', type='build') # Optional dependencies
depends_on('cmake@3.11:', when='@7.0.0:7.1.99', type='build') depends_on('caliper', when='+caliper')
depends_on('cmake@3.14:', when='@7.2:7.6.99', type='build') depends_on('cuda@11.0:', when='+cuda')
depends_on('cmake@3.17:', when='@7.7:', type='build')
depends_on('cuda@10.1:', when='+cuda')
depends_on('eospac@6.3:', when='+eospac') depends_on('eospac@6.3:', when='+eospac')
depends_on('lapack', when='+lapack') depends_on('lapack', when='+lapack')
depends_on('libquo@1.3.1:', when='@7.4.0:+libquo') depends_on('libquo@1.3.1:', when='@7.4.0:+libquo')
@ -64,13 +68,14 @@ class Draco(CMakePackage):
depends_on('superlu-dist@:5.99', when='@:7.6.99+superlu_dist') depends_on('superlu-dist@:5.99', when='@:7.6.99+superlu_dist')
conflicts('+cuda', when='@:7.6.99') conflicts('+cuda', when='@:7.6.99')
conflicts('+caliper', when='@:7.7.99')
# Fix python discovery. # Fix python discovery.
patch('d710.patch', when='@7.1.0^python@3:') patch('d710.patch', when='@7.1.0^python@3:')
patch('d710-python2.patch', when='@7.1.0^python@2.7:2.99') patch('d710-python2.patch', when='@7.1.0^python@2.7:2.99')
patch('d730.patch', when='@7.3.0:7.3.99') patch('d730.patch', when='@7.3.0:7.3.99')
patch('d740.patch', when='@7.4.0:7.4.99') patch('d740.patch', when='@7.4.0:7.4.99')
patch('smpi.patch', when='@:7.6.99') patch('d760-cray.patch', when='@7.6.0')
patch('d770-nocuda.patch', when='@7.7.0') patch('d770-nocuda.patch', when='@7.7.0')
def url_for_version(self, version): def url_for_version(self, version):
@ -81,10 +86,9 @@ def cmake_args(self):
options = [] options = []
options.extend([ options.extend([
'-Wno-dev', '-Wno-dev',
'-DBUILD_TESTING={0}'.format('ON' if self.run_tests else 'OFF') '-DBUILD_TESTING={0}'.format('ON' if self.run_tests else 'OFF'),
'-DUSE_CUDA={0}'.format('ON' if '+cuda' in self.spec else 'OFF')
]) ])
if '~cuda' in self.spec:
options.extend(['-DUSE_CUDA=OFF'])
return options return options
def check(self): def check(self):

View File

@ -1,12 +0,0 @@
The LANL Darwin platform calls the IBM Spectrum modules "smpi".
diff -up config/setupMPI.cmake.smpi config/setupMPI.cmake
--- a/config/setupMPI.cmake.smpi 2020-05-28 11:54:17.851957957 -0600
+++ b/config/setupMPI.cmake 2020-05-28 11:55:35.018332601 -0600
@@ -46,6 +46,7 @@ function( setMPIflavorVer )
elseif( "${MPIEXEC_EXECUTABLE}" MATCHES "mvapich2")
set( MPI_FLAVOR "mvapich2" )
elseif( "${MPIEXEC_EXECUTABLE}" MATCHES "spectrum-mpi" OR
+ "${MPIEXEC_EXECUTABLE}" MATCHES "smpi" OR
"${MPIEXEC_EXECUTABLE}" MATCHES "jsrun" )
set( MPI_FLAVOR "spectrum")
endif()