zfp: several package improvements (#21244)
- add variants for build targets, language bindings, backends - ensure selected variants are compatible with zfp version - point to GitHub (not LLNL) tar balls - add dependencies - update link to homepage - add maintainers Co-authored-by: Massimiliano Culpo <massimiliano.culpo@gmail.com>
This commit is contained in:
parent
47c85059fb
commit
0f82fa5151
1 changed files with 69 additions and 34 deletions
|
@ -6,28 +6,48 @@
|
||||||
from spack import *
|
from spack import *
|
||||||
|
|
||||||
|
|
||||||
class Zfp(CMakePackage):
|
class Zfp(CMakePackage, CudaPackage):
|
||||||
"""zfp is an open source C/C++ library for high-fidelity, high-throughput
|
"""zfp is a compressed number format for multidimensional floating-point
|
||||||
lossy compression of floating-point and integer multi-dimensional
|
and integer arrays.
|
||||||
|
|
||||||
|
zfp provides compressed-array classes that support high throughput
|
||||||
|
read and write random access to individual array elements. zfp also
|
||||||
|
supports serial and parallel (OpenMP and CUDA) compression of whole
|
||||||
arrays.
|
arrays.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
homepage = 'http://computing.llnl.gov/projects/floating-point-compression'
|
# Package info
|
||||||
url = 'http://computing.llnl.gov/projects/floating-point-compression/download/zfp-0.5.2.tar.gz'
|
homepage = 'https://zfp.llnl.gov'
|
||||||
git = "https://github.com/LLNL/zfp.git"
|
url = 'https://github.com/LLNL/zfp/releases/download/0.5.5/zfp-0.5.5.tar.gz'
|
||||||
|
git = 'https://github.com/LLNL/zfp.git'
|
||||||
|
maintainers = ['lindstro', 'GarrettDMorrison']
|
||||||
|
|
||||||
|
# Versions
|
||||||
version('develop', branch='develop')
|
version('develop', branch='develop')
|
||||||
version('0.5.5', sha256='fdf7b948bab1f4e5dccfe2c2048fd98c24e417ad8fb8a51ed3463d04147393c5')
|
version('0.5.5', sha256='fdf7b948bab1f4e5dccfe2c2048fd98c24e417ad8fb8a51ed3463d04147393c5')
|
||||||
version('0.5.4', sha256='768a05ed9bf10e54ac306f90b81dd17b0e7b13782f01823d7da4394fd2da8adb')
|
version('0.5.4', sha256='746e17aaa401c67dcffd273d6e6f95c76adfbbd5cf523dcad56d09e9d3b71196')
|
||||||
version('0.5.2', sha256='89e718edb966422b5898b5c37b1b0a781d4effacb511520558469e3ff7f65d7c')
|
version('0.5.3', sha256='a5d2f8e5b47a7c92e2a5775b82cbfb3a76c87d0ac83d25abb4ac10ea75a2856e')
|
||||||
version('0.5.1', sha256='867c04cf965f1c70d9725b396c6e1b5d29db55b0d69b8e87a995aaebd221b830')
|
version('0.5.2', sha256='9c738ec525cc76b4bb80b2b3f7c9f07507eeda3a341470e5942cda97efbe9a4f', url='https://github.com/LLNL/zfp/archive/0.5.2/zfp-0.5.2.tar.gz')
|
||||||
|
version('0.5.1', sha256='f255dd1708c9ae4dc6a56dd2614e8b47a10d833c87fd349cbd47545a19c2b779', url='https://github.com/LLNL/zfp/archive/0.5.1/zfp-0.5.1.tar.gz')
|
||||||
|
|
||||||
variant('bsws',
|
# Build targets
|
||||||
default='64',
|
# TODO: variant('utilities', default=True, description='Build utilities')
|
||||||
values=('8', '16', '32', '64'),
|
variant('shared', default=True, description='Build shared libraries')
|
||||||
multi=False,
|
|
||||||
description='Bit stream word size: use smaller for finer '
|
# Language bindings
|
||||||
'rate granularity. Use 8 for H5Z-ZFP filter.')
|
variant('c', default=False, description='Enable C bindings')
|
||||||
|
variant('python', default=False, description='Enable Python bindings')
|
||||||
|
variant('fortran', default=False, description='Enable Fortran bindings')
|
||||||
|
|
||||||
|
# Execution policies
|
||||||
|
variant('openmp', default=False, description='Enable OpenMP execution')
|
||||||
|
variant('cuda', default=False, description='Enable CUDA execution')
|
||||||
|
|
||||||
|
# Advanced options
|
||||||
|
variant('bsws', default='64', values=('8', '16', '32', '64'), multi=False,
|
||||||
|
description='Bit stream word size: '
|
||||||
|
'use smaller for finer rate granularity. '
|
||||||
|
'Use 8 for H5Z-ZFP filter.')
|
||||||
variant('strided', default=False,
|
variant('strided', default=False,
|
||||||
description='Enable strided access for progressive zfp streams')
|
description='Enable strided access for progressive zfp streams')
|
||||||
variant('aligned', default=False,
|
variant('aligned', default=False,
|
||||||
|
@ -38,32 +58,47 @@ class Zfp(CMakePackage):
|
||||||
description='Use a faster but more collision prone hash function')
|
description='Use a faster but more collision prone hash function')
|
||||||
variant('profile', default=False,
|
variant('profile', default=False,
|
||||||
description='Count cache misses')
|
description='Count cache misses')
|
||||||
variant('shared', default=True,
|
|
||||||
description='Build shared versions of the library')
|
|
||||||
|
|
||||||
|
# Conflicts
|
||||||
|
conflicts('+c', when='@:0.5.3',
|
||||||
|
msg='+c requires zfp 0.5.4 or later')
|
||||||
|
conflicts('+python', when='@:0.5.4',
|
||||||
|
msg='+python requires zfp 0.5.5 or later')
|
||||||
|
conflicts('+fortran', when='@:0.5.4',
|
||||||
|
msg='+fortran requires zfp 0.5.5 or later')
|
||||||
|
conflicts('+openmp', when='@:0.5.2',
|
||||||
|
msg='+openmp requires zfp 0.5.3 or later')
|
||||||
|
conflicts('+cuda', when='@:0.5.3',
|
||||||
|
msg='+cuda requires zfp 0.5.4 or later')
|
||||||
|
conflicts('+fasthash', when='@:0.5.1',
|
||||||
|
msg='+fasthash requires zfp 0.5.2 or later')
|
||||||
|
conflicts('+profile', when='@:0.5.1',
|
||||||
|
msg='+profile requires zfp 0.5.2 or later')
|
||||||
|
|
||||||
|
# Dependencies
|
||||||
depends_on('cmake@3.4.0:', type='build')
|
depends_on('cmake@3.4.0:', type='build')
|
||||||
|
depends_on('cuda@7:', type=('build', 'test', 'run'), when='+cuda')
|
||||||
|
depends_on('py-numpy', type=('build', 'test', 'run'), when='+python')
|
||||||
|
depends_on('py-cython', type='build', when='+python')
|
||||||
|
|
||||||
def cmake_args(self):
|
def cmake_args(self):
|
||||||
spec = self.spec
|
spec = self.spec
|
||||||
|
|
||||||
|
# CMake options
|
||||||
args = [
|
args = [
|
||||||
'-DZFP_BIT_STREAM_WORD_SIZE:STRING={0}'.format(
|
# TODO: self.define_from_variant('BUILD_UTILITIES', 'utilities'),
|
||||||
spec.variants['bsws'].value),
|
self.define('BUILD_TESTING', self.run_tests),
|
||||||
'-DZFP_WITH_BIT_STREAM_STRIDED:BOOL={0}'.format(
|
self.define_from_variant('BUILD_SHARED_LIBS', 'shared'),
|
||||||
'ON' if '+strided' in spec else 'OFF'),
|
self.define_from_variant('BUILD_CFP', 'c'),
|
||||||
'-DZFP_WITH_ALIGNED_ALLOC:BOOL={0}'.format(
|
self.define_from_variant('BUILD_ZFPY', 'python'),
|
||||||
'ON' if '+aligned' in spec else 'OFF'),
|
self.define_from_variant('BUILD_ZFORP', 'fortran'),
|
||||||
'-DZFP_WITH_CACHE_TWOWAY:BOOL={0}'.format(
|
self.define('ZFP_BIT_STREAM_WORD_SIZE',
|
||||||
'ON' if '+twoway' in spec else 'OFF'),
|
spec.variants['bsws'].value),
|
||||||
'-DBUILD_SHARED_LIBS:BOOL={0}'.format(
|
self.define_from_variant('ZFP_WITH_BIT_STREAM_STRIDED', 'strided'),
|
||||||
'ON' if '+shared' in spec else 'OFF'),
|
self.define_from_variant('ZFP_WITH_ALIGNED_ALLOC', 'aligned'),
|
||||||
'-DBUILD_TESTING:BOOL={0}'.format(
|
self.define_from_variant('ZFP_WITH_CACHE_TWOWAY', 'twoway'),
|
||||||
'ON' if self.run_tests else 'OFF')
|
self.define_from_variant('ZFP_WITH_CACHE_FAST_HASH', 'fasthash'),
|
||||||
|
self.define_from_variant('ZFP_WITH_CACHE_PROFILE', 'profile')
|
||||||
]
|
]
|
||||||
if spec.version >= Version('0.5.2'):
|
|
||||||
args.append('-DZFP_WITH_CACHE_FAST_HASH:BOOL={0}'.format(
|
|
||||||
'ON' if '+fasthash' in spec else 'OFF'))
|
|
||||||
args.append('-DZFP_WITH_CACHE_PROFILE:BOOL={0}'.format(
|
|
||||||
'ON' if '+profile' in spec else 'OFF'))
|
|
||||||
|
|
||||||
return args
|
return args
|
||||||
|
|
Loading…
Reference in a new issue