Chai, LvArray, Umpire and py-scipy: update versions, variants, and or more (#23488)

* LvArray update.

* Style changes.

* Addressing PR comments.

* Bound scipy clang patch.

* Umpire an CHAI boolean fix.

* Changed lvarray python dependency types.
This commit is contained in:
Ben Corbett 2021-05-26 17:23:37 -07:00 committed by GitHub
parent b120b51605
commit 2b78b04dc5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 223 additions and 166 deletions

View File

@ -14,20 +14,23 @@ class Chai(CMakePackage, CudaPackage, ROCmPackage):
homepage = "https://github.com/LLNL/CHAI"
git = "https://github.com/LLNL/CHAI.git"
version('develop', branch='develop', submodules='True')
version('master', branch='main', submodules='True')
version('2.3.0', tag='v2.3.0', submodules='True')
version('2.1.1', tag='v2.1.1', submodules='True')
version('2.1.0', tag='v2.1.0', submodules='True')
version('2.0.0', tag='v2.0.0', submodules='True')
version('1.2.0', tag='v1.2.0', submodules='True')
version('1.1.0', tag='v1.1.0', submodules='True')
version('1.0', tag='v1.0', submodules='True')
version('develop', branch='develop', submodules=True)
version('master', branch='main', submodules=True)
version('2.3.0', tag='v2.3.0', submodules=True)
version('2.2.2', tag='v2.2.2', submodules=True)
version('2.2.1', tag='v2.2.1', submodules=True)
version('2.2.0', tag='v2.2.0', submodules=True)
version('2.1.1', tag='v2.1.1', submodules=True)
version('2.1.0', tag='v2.1.0', submodules=True)
version('2.0.0', tag='v2.0.0', submodules=True)
version('1.2.0', tag='v1.2.0', submodules=True)
version('1.1.0', tag='v1.1.0', submodules=True)
version('1.0', tag='v1.0', submodules=True)
variant('enable_pick', default=False, description='Enable pick method')
variant('shared', default=True, description='Build Shared Libs')
variant('raja', default=False, description='Build plugin for RAJA')
variant('benchmarks', default=True, description='Build benchmarks.')
variant('benchmarks', default=False, description='Build benchmarks.')
variant('examples', default=True, description='Build examples.')
# TODO: figure out gtest dependency and then set this default True
# and remove the +tests conflict below.
@ -104,4 +107,7 @@ def cmake_args(self):
options.append(self.define_from_variant('ENABLE_EXAMPLES', 'examples'))
options.append('-DENABLE_BENCHMARKS={0}'.format(
'ON' if '+benchmarks' in spec else 'OFF'))
return options

View File

@ -38,14 +38,18 @@ class Lvarray(CMakePackage, CudaPackage):
homepage = "https://github.com/GEOSX/lvarray"
git = "https://github.com/GEOSX/LvArray.git"
version('develop', branch='develop', submodules='True')
version('main', branch='main', submodules='True')
version('0.1.0', tag='v0.1.0', submodules='True')
maintainers = ['corbett5']
version('develop', branch='develop', submodules=False)
version('main', branch='main', submodules=False)
version('0.2.1', tag='v0.2.1', submodules=False)
version('0.1.0', tag='v0.1.0', submodules=True)
variant('shared', default=True, description='Build Shared Libs')
variant('umpire', default=False, description='Build Umpire support')
variant('chai', default=False, description='Build Chai support')
variant('caliper', default=False, description='Build Caliper support')
variant('pylvarray', default=False, description='Build Python support')
variant('tests', default=True, description='Build tests')
variant('benchmarks', default=False, description='Build benchmarks')
variant('examples', default=False, description='Build examples')
@ -53,20 +57,27 @@ class Lvarray(CMakePackage, CudaPackage):
variant('addr2line', default=True,
description='Build support for addr2line.')
depends_on('cmake@3.8:', type='build')
depends_on('cmake@3.9:', when='+cuda', type='build')
depends_on('blt', when='@0.2.0:', type='build')
depends_on('camp')
depends_on('camp+cuda', when='+cuda')
depends_on('raja')
depends_on('raja+cuda', when='+cuda')
# At the moment Umpire doesn't support shared when building with CUDA.
depends_on('umpire', when='+umpire')
depends_on('umpire+cuda', when='+umpire+cuda')
depends_on('umpire+cuda~shared', when='+umpire+cuda')
depends_on('chai+raja', when='+chai')
depends_on('chai+raja+cuda', when='+chai+cuda')
depends_on('caliper', when='+caliper')
depends_on('python +shared +pic', type=('build', 'link', 'run'), when='+pylvarray')
depends_on('py-numpy@1.19:', type=('build', 'link', 'run'), when='+pylvarray')
depends_on('py-scipy@1.5.2:', type=('build', 'run'), when='+pylvarray')
depends_on('doxygen@1.8.13:', when='+docs', type='build')
depends_on('py-sphinx@1.6.3:', when='+docs', type='build')
@ -112,16 +123,13 @@ def hostconfig(self, spec, prefix, py_site_pkgs_dir=None):
"""
This method creates a 'host-config' file that specifies
all of the options used to configure and build Umpire.
For more details about 'host-config' files see:
http://software.llnl.gov/conduit/building.html
Note:
The `py_site_pkgs_dir` arg exists to allow a package that
subclasses this package provide a specific site packages
dir when calling this function. `py_site_pkgs_dir` should
be an absolute path or `None`.
This is necessary because the spack `site_packages_dir`
var will not exist in the base class. For more details
on this issue see: https://github.com/spack/spack/issues/6261
@ -149,153 +157,180 @@ def hostconfig(self, spec, prefix, py_site_pkgs_dir=None):
cmake_exe = os.path.realpath(cmake_exe)
host_config_path = self._get_host_config_path(spec)
cfg = open(host_config_path, "w")
cfg.write("#{0}\n".format("#" * 80))
cfg.write("# Generated host-config - Edit at own risk!\n")
cfg.write("#{0}\n".format("#" * 80))
with open(host_config_path, "w") as cfg:
cfg.write("#{0}\n".format("#" * 80))
cfg.write("# Generated host-config - Edit at own risk!\n")
cfg.write("#{0}\n".format("#" * 80))
cfg.write("#{0}\n".format("-" * 80))
cfg.write("# SYS_TYPE: {0}\n".format(sys_type))
cfg.write("# Compiler Spec: {0}\n".format(spec.compiler))
cfg.write("# CMake executable path: %s\n" % cmake_exe)
cfg.write("#{0}\n\n".format("-" * 80))
#######################
# Compiler Settings
#######################
cfg.write("#{0}\n".format("-" * 80))
cfg.write("# Compilers\n")
cfg.write("#{0}\n\n".format("-" * 80))
cfg.write(cmake_cache_entry("CMAKE_C_COMPILER", c_compiler))
cfg.write(cmake_cache_entry("CMAKE_CXX_COMPILER", cpp_compiler))
# use global spack compiler flags
cflags = ' '.join(spec.compiler_flags['cflags'])
if cflags:
cfg.write(cmake_cache_entry("CMAKE_C_FLAGS", cflags))
cxxflags = ' '.join(spec.compiler_flags['cxxflags'])
if cxxflags:
cfg.write(cmake_cache_entry("CMAKE_CXX_FLAGS", cxxflags))
release_flags = "-O3 -DNDEBUG"
cfg.write(cmake_cache_string("CMAKE_CXX_FLAGS_RELEASE",
release_flags))
reldebinf_flags = "-O3 -g -DNDEBUG"
cfg.write(cmake_cache_string("CMAKE_CXX_FLAGS_RELWITHDEBINFO",
reldebinf_flags))
debug_flags = "-O0 -g"
cfg.write(cmake_cache_string("CMAKE_CXX_FLAGS_DEBUG", debug_flags))
if "+cuda" in spec:
cfg.write("#{0}\n".format("-" * 80))
cfg.write("# Cuda\n")
cfg.write("# SYS_TYPE: {0}\n".format(sys_type))
cfg.write("# Compiler Spec: {0}\n".format(spec.compiler))
cfg.write("# CMake executable path: %s\n" % cmake_exe)
cfg.write("#{0}\n\n".format("-" * 80))
cfg.write(cmake_cache_option("ENABLE_CUDA", True))
cfg.write(cmake_cache_entry("CMAKE_CUDA_STANDARD", 14))
if 'blt' in spec:
cfg.write(cmake_cache_entry('BLT_SOURCE_DIR', spec['blt'].prefix))
cudatoolkitdir = spec['cuda'].prefix
cfg.write(cmake_cache_entry("CUDA_TOOLKIT_ROOT_DIR",
cudatoolkitdir))
cudacompiler = "${CUDA_TOOLKIT_ROOT_DIR}/bin/nvcc"
cfg.write(cmake_cache_entry("CMAKE_CUDA_COMPILER", cudacompiler))
#######################
# Compiler Settings
#######################
cmake_cuda_flags = ('-restrict --expt-extended-lambda -Werror '
'cross-execution-space-call,reorder,'
'deprecated-declarations')
cfg.write("#{0}\n".format("-" * 80))
cfg.write("# Compilers\n")
cfg.write("#{0}\n\n".format("-" * 80))
cfg.write(cmake_cache_entry("CMAKE_C_COMPILER", c_compiler))
cfg.write(cmake_cache_entry("CMAKE_CXX_COMPILER", cpp_compiler))
archSpecifiers = ("-mtune", "-mcpu", "-march", "-qtune", "-qarch")
for archSpecifier in archSpecifiers:
for compilerArg in spec.compiler_flags['cxxflags']:
if compilerArg.startswith(archSpecifier):
cmake_cuda_flags += ' -Xcompiler ' + compilerArg
# use global spack compiler flags
cflags = ' '.join(spec.compiler_flags['cflags'])
cxxflags = ' '.join(spec.compiler_flags['cxxflags'])
if not spec.satisfies('cuda_arch=none'):
cuda_arch = spec.variants['cuda_arch'].value
cmake_cuda_flags += ' -arch sm_{0}'.format(cuda_arch[0])
if "%intel" in spec:
cflags += ' -qoverride-limits'
cxxflags += ' -qoverride-limits'
cfg.write(cmake_cache_string("CMAKE_CUDA_FLAGS", cmake_cuda_flags))
if cflags:
cfg.write(cmake_cache_entry("CMAKE_C_FLAGS", cflags))
cfg.write(cmake_cache_string("CMAKE_CUDA_FLAGS_RELEASE",
"-O3 -Xcompiler -O3 -DNDEBUG"))
cfg.write(cmake_cache_string("CMAKE_CUDA_FLAGS_RELWITHDEBINFO",
"-O3 -g -lineinfo -Xcompiler -O3"))
cfg.write(cmake_cache_string("CMAKE_CUDA_FLAGS_DEBUG",
"-O0 -Xcompiler -O0 -g -G"))
if cxxflags:
cfg.write(cmake_cache_entry("CMAKE_CXX_FLAGS", cxxflags))
else:
cfg.write(cmake_cache_option("ENABLE_CUDA", False))
release_flags = "-O3 -DNDEBUG"
cfg.write(cmake_cache_string("CMAKE_CXX_FLAGS_RELEASE",
release_flags))
reldebinf_flags = "-O3 -g -DNDEBUG"
cfg.write(cmake_cache_string("CMAKE_CXX_FLAGS_RELWITHDEBINFO",
reldebinf_flags))
debug_flags = "-O0 -g"
cfg.write(cmake_cache_string("CMAKE_CXX_FLAGS_DEBUG", debug_flags))
cfg.write("#{0}\n".format("-" * 80))
cfg.write("# RAJA\n")
cfg.write("#{0}\n\n".format("-" * 80))
if "%clang arch=linux-rhel7-ppc64le" in spec:
cfg.write(cmake_cache_entry("CMAKE_EXE_LINKER_FLAGS",
"-Wl,--no-toc-optimize"))
raja_dir = spec['raja'].prefix
cfg.write(cmake_cache_entry("RAJA_DIR", raja_dir))
if "+cuda" in spec:
cfg.write("#{0}\n".format("-" * 80))
cfg.write("# Cuda\n")
cfg.write("#{0}\n\n".format("-" * 80))
cfg.write("#{0}\n".format("-" * 80))
cfg.write("# Umpire\n")
cfg.write("#{0}\n\n".format("-" * 80))
cfg.write(cmake_cache_option("ENABLE_CUDA", True))
cfg.write(cmake_cache_entry("CMAKE_CUDA_STANDARD", 14))
if "+umpire" in spec:
cfg.write(cmake_cache_option("ENABLE_UMPIRE", True))
umpire_dir = spec['umpire'].prefix
cfg.write(cmake_cache_entry("UMPIRE_DIR", umpire_dir))
else:
cfg.write(cmake_cache_option("ENABLE_UMPIRE", False))
cudatoolkitdir = spec['cuda'].prefix
cfg.write(cmake_cache_entry("CUDA_TOOLKIT_ROOT_DIR",
cudatoolkitdir))
cudacompiler = "${CUDA_TOOLKIT_ROOT_DIR}/bin/nvcc"
cfg.write(cmake_cache_entry("CMAKE_CUDA_COMPILER", cudacompiler))
cfg.write("#{0}\n".format("-" * 80))
cfg.write("# CHAI\n")
cfg.write("#{0}\n\n".format("-" * 80))
cmake_cuda_flags = ('-restrict --expt-extended-lambda -Werror '
'cross-execution-space-call,reorder,'
'deprecated-declarations')
if "+chai" in spec:
cfg.write(cmake_cache_option("ENABLE_CHAI", True))
chai_dir = spec['chai'].prefix
cfg.write(cmake_cache_entry("CHAI_DIR", chai_dir))
else:
cfg.write(cmake_cache_option("ENABLE_CHAI", False))
archSpecifiers = ("-mtune", "-mcpu", "-march", "-qtune", "-qarch")
for archSpecifier in archSpecifiers:
for compilerArg in spec.compiler_flags['cxxflags']:
if compilerArg.startswith(archSpecifier):
cmake_cuda_flags += ' -Xcompiler ' + compilerArg
cfg.write("#{0}\n".format("-" * 80))
cfg.write("# Caliper\n")
cfg.write("#{0}\n\n".format("-" * 80))
if not spec.satisfies('cuda_arch=none'):
cuda_arch = spec.variants['cuda_arch'].value
cmake_cuda_flags += ' -arch sm_{0}'.format(cuda_arch[0])
cfg.write(cmake_cache_string("CMAKE_CUDA_FLAGS", cmake_cuda_flags))
cfg.write(cmake_cache_string("CMAKE_CUDA_FLAGS_RELEASE",
"-O3 -Xcompiler -O3 -DNDEBUG"))
cfg.write(cmake_cache_string("CMAKE_CUDA_FLAGS_RELWITHDEBINFO",
"-O3 -g -lineinfo -Xcompiler -O3"))
cfg.write(cmake_cache_string("CMAKE_CUDA_FLAGS_DEBUG",
"-O0 -Xcompiler -O0 -g -G"))
else:
cfg.write(cmake_cache_option("ENABLE_CUDA", False))
cfg.write("#{0}\n".format("-" * 80))
cfg.write("# CAMP\n")
cfg.write("#{0}\n\n".format("-" * 80))
cfg.write(cmake_cache_entry("CAMP_DIR", spec['camp'].prefix))
cfg.write("#{0}\n".format("-" * 80))
cfg.write("# RAJA\n")
cfg.write("#{0}\n\n".format("-" * 80))
cfg.write(cmake_cache_entry("RAJA_DIR", spec['raja'].prefix))
cfg.write("#{0}\n".format("-" * 80))
cfg.write("# Umpire\n")
cfg.write("#{0}\n\n".format("-" * 80))
if "+umpire" in spec:
cfg.write(cmake_cache_option("ENABLE_UMPIRE", True))
cfg.write(cmake_cache_entry("UMPIRE_DIR", spec['umpire'].prefix))
else:
cfg.write(cmake_cache_option("ENABLE_UMPIRE", False))
cfg.write("#{0}\n".format("-" * 80))
cfg.write("# CHAI\n")
cfg.write("#{0}\n\n".format("-" * 80))
if "+chai" in spec:
cfg.write(cmake_cache_option("ENABLE_CHAI", True))
cfg.write(cmake_cache_entry("CHAI_DIR", spec['chai'].prefix))
else:
cfg.write(cmake_cache_option("ENABLE_CHAI", False))
if "+caliper" in spec:
cfg.write("#{0}\n".format("-" * 80))
cfg.write("# Caliper\n")
cfg.write("#{0}\n\n".format("-" * 80))
cfg.write(cmake_cache_option("ENABLE_CALIPER", True))
caliper_dir = spec['caliper'].prefix
cfg.write(cmake_cache_entry("CALIPER_DIR", caliper_dir))
else:
cfg.write(cmake_cache_option("ENABLE_CALIPER", False))
if "+caliper" in spec:
cfg.write("#{0}\n".format("-" * 80))
cfg.write("# Caliper\n")
cfg.write("#{0}\n\n".format("-" * 80))
cfg.write("#{0}\n".format("-" * 80))
cfg.write("# Documentation\n")
cfg.write("#{0}\n\n".format("-" * 80))
if "+docs" in spec:
sphinx_dir = spec['py-sphinx'].prefix
cfg.write(cmake_cache_string('SPHINX_EXECUTABLE',
os.path.join(sphinx_dir,
'bin',
'sphinx-build')))
cfg.write(cmake_cache_option("ENABLE_CALIPER", True))
cfg.write(cmake_cache_entry("CALIPER_DIR", spec['caliper'].prefix))
else:
cfg.write(cmake_cache_option("ENABLE_CALIPER", False))
doxygen_dir = spec['doxygen'].prefix
cfg.write(cmake_cache_string('DOXYGEN_EXECUTABLE',
os.path.join(doxygen_dir,
'bin',
'doxygen')))
cfg.write('#{0}\n'.format('-' * 80))
cfg.write('# Python\n')
cfg.write('#{0}\n\n'.format('-' * 80))
if '+pylvarray' in spec:
cfg.write(cmake_cache_option('ENABLE_PYLVARRAY', True))
python_exe = os.path.join(spec['python'].prefix.bin, 'python3')
cfg.write(cmake_cache_entry('Python3_EXECUTABLE', python_exe))
else:
cfg.write(cmake_cache_option('ENABLE_PYLVARRAY', False))
cfg.write("#{0}\n".format("-" * 80))
cfg.write("# addr2line\n")
cfg.write("#{0}\n\n".format("-" * 80))
cfg.write(cmake_cache_option('ENABLE_ADDR2LINE', '+addr2line' in spec))
cfg.write("#{0}\n".format("-" * 80))
cfg.write("# Documentation\n")
cfg.write("#{0}\n\n".format("-" * 80))
if "+docs" in spec:
cfg.write(cmake_cache_option("ENABLE_DOCS", True))
sphinx_dir = spec['py-sphinx'].prefix
cfg.write(cmake_cache_string('SPHINX_EXECUTABLE',
os.path.join(sphinx_dir,
'bin',
'sphinx-build')))
cfg.write("#{0}\n".format("-" * 80))
cfg.write("# Other\n")
cfg.write("#{0}\n\n".format("-" * 80))
doxygen_dir = spec['doxygen'].prefix
cfg.write(cmake_cache_string('DOXYGEN_EXECUTABLE',
os.path.join(doxygen_dir,
'bin',
'doxygen')))
else:
cfg.write(cmake_cache_option("ENABLE_DOCS", False))
cfg.write("#{0}\n".format("-" * 80))
cfg.write("# addr2line\n")
cfg.write("#{0}\n\n".format("-" * 80))
cfg.write(cmake_cache_option('ENABLE_ADDR2LINE', '+addr2line' in spec))
cfg.write("#{0}\n".format("-" * 80))
cfg.write("# Other\n")
cfg.write("#{0}\n\n".format("-" * 80))
def cmake_args(self):
spec = self.spec

View File

@ -75,6 +75,8 @@ class PyScipy(PythonPackage):
patch('https://git.sagemath.org/sage.git/plain/build/pkgs/scipy/patches/extern_decls.patch?id=711fe05025795e44b84233e065d240859ccae5bd',
sha256='5433f60831cb554101520a8f8871ac5a32c95f7a971ccd68b69049535b106780', when='@1.2:1.5.3')
patch('scipy-clang.patch', when='@1.5.0:1.6.3 %clang')
def setup_build_environment(self, env):
# https://github.com/scipy/scipy/issues/9080
env.set('F90', spack_fc)

View File

@ -0,0 +1,13 @@
diff --git a/scipy/special/_faddeeva.cxx b/scipy/special/_faddeeva.cxx
index 9134516..159122c 100644
--- a/scipy/special/_faddeeva.cxx
+++ b/scipy/special/_faddeeva.cxx
@@ -130,7 +130,7 @@ double faddeeva_voigt_profile(double x, double sigma, double gamma)
if(sigma == 0){
if (gamma == 0){
- if (isnan(x))
+ if (std::isnan(x))
return x;
if (x == 0)
return NPY_INFINITY;

View File

@ -17,35 +17,36 @@ class Umpire(CMakePackage, CudaPackage, ROCmPackage):
maintainers = ['davidbeckingsale']
version('develop', branch='develop', submodules='True')
version('main', branch='main', submodules='True')
version('4.1.2', tag='v4.1.2', submodules='True')
version('4.1.1', tag='v4.1.1', submodules='True')
version('4.1.0', tag='v4.1.0', submodules='True')
version('4.0.1', tag='v4.0.1', submodules='True')
version('4.0.0', tag='v4.0.0', submodules='True')
version('3.0.0', tag='v3.0.0', submodules='True')
version('2.1.0', tag='v2.1.0', submodules='True')
version('2.0.0', tag='v2.0.0', submodules='True')
version('1.1.0', tag='v1.1.0', submodules='True')
version('1.0.1', tag='v1.0.1', submodules='True')
version('1.0.0', tag='v1.0.0', submodules='True')
version('0.3.5', tag='v0.3.5', submodules='True')
version('0.3.4', tag='v0.3.4', submodules='True')
version('0.3.3', tag='v0.3.3', submodules='True')
version('0.3.2', tag='v0.3.2', submodules='True')
version('0.3.1', tag='v0.3.1', submodules='True')
version('0.3.0', tag='v0.3.0', submodules='True')
version('0.2.4', tag='v0.2.4', submodules='True')
version('0.2.3', tag='v0.2.3', submodules='True')
version('0.2.2', tag='v0.2.2', submodules='True')
version('0.2.1', tag='v0.2.1', submodules='True')
version('0.2.0', tag='v0.2.0', submodules='True')
version('0.1.4', tag='v0.1.4', submodules='True')
version('0.1.3', tag='v0.1.3', submodules='True')
version('develop', branch='develop', submodules=True)
version('main', branch='main', submodules=True)
version('5.0.0', tag='v5.0.0', submodules=True)
version('4.1.2', tag='v4.1.2', submodules=True)
version('4.1.1', tag='v4.1.1', submodules=True)
version('4.1.0', tag='v4.1.0', submodules=True)
version('4.0.1', tag='v4.0.1', submodules=True)
version('4.0.0', tag='v4.0.0', submodules=True)
version('3.0.0', tag='v3.0.0', submodules=True)
version('2.1.0', tag='v2.1.0', submodules=True)
version('2.0.0', tag='v2.0.0', submodules=True)
version('1.1.0', tag='v1.1.0', submodules=True)
version('1.0.1', tag='v1.0.1', submodules=True)
version('1.0.0', tag='v1.0.0', submodules=True)
version('0.3.5', tag='v0.3.5', submodules=True)
version('0.3.4', tag='v0.3.4', submodules=True)
version('0.3.3', tag='v0.3.3', submodules=True)
version('0.3.2', tag='v0.3.2', submodules=True)
version('0.3.1', tag='v0.3.1', submodules=True)
version('0.3.0', tag='v0.3.0', submodules=True)
version('0.2.4', tag='v0.2.4', submodules=True)
version('0.2.3', tag='v0.2.3', submodules=True)
version('0.2.2', tag='v0.2.2', submodules=True)
version('0.2.1', tag='v0.2.1', submodules=True)
version('0.2.0', tag='v0.2.0', submodules=True)
version('0.1.4', tag='v0.1.4', submodules=True)
version('0.1.3', tag='v0.1.3', submodules=True)
patch('camp_target_umpire_3.0.0.patch', when='@3.0.0')
patch('cmake_version_check.patch', when='@4.1.0:main')
patch('cmake_version_check.patch', when='@4.1')
variant('fortran', default=False, description='Build C/Fortran API')
variant('c', default=True, description='Build C API')