From abd575f2733d28d5b87730abfdf273ac6667198b Mon Sep 17 00:00:00 2001 From: Brian Van Essen Date: Mon, 10 Dec 2018 15:12:43 -0800 Subject: Update LBANN generator and bug fix (#9906) * Added a package for the MDAnalysis toolkit. * Added Ninja as the generator for LBANN, Hydrogen, and Aluminum. Also fixed a bug in how the Conduit variant is included in LBANN. Added new versions for Hydrogen and LBANN. * Updated lbann package so that the CMAKE parameters are set when the variant is on and off. --- .../repos/builtin/packages/aluminum/package.py | 3 ++ .../repos/builtin/packages/hydrogen/package.py | 6 +++- var/spack/repos/builtin/packages/lbann/package.py | 32 ++++++++++++++-------- 3 files changed, 28 insertions(+), 13 deletions(-) diff --git a/var/spack/repos/builtin/packages/aluminum/package.py b/var/spack/repos/builtin/packages/aluminum/package.py index 9700988217..17a31a687c 100644 --- a/var/spack/repos/builtin/packages/aluminum/package.py +++ b/var/spack/repos/builtin/packages/aluminum/package.py @@ -34,6 +34,9 @@ class Aluminum(CMakePackage): depends_on('nccl', when='+nccl') depends_on('hwloc') + generator = 'Ninja' + depends_on('ninja', type='build') + def cmake_args(self): spec = self.spec args = [ diff --git a/var/spack/repos/builtin/packages/hydrogen/package.py b/var/spack/repos/builtin/packages/hydrogen/package.py index 9a65ea4fe3..058e15b492 100644 --- a/var/spack/repos/builtin/packages/hydrogen/package.py +++ b/var/spack/repos/builtin/packages/hydrogen/package.py @@ -13,10 +13,11 @@ class Hydrogen(CMakePackage): and optimization library. Based on the Elemental library.""" homepage = "http://libelemental.org" - url = "https://github.com/LLNL/Elemental/archive/0.99.tar.gz" + url = "https://github.com/LLNL/Elemental/archive/v1.0.1.tar.gz" git = "https://github.com/LLNL/Elemental.git" version('develop', branch='hydrogen') + version('1.0.1', sha256='27cf76e1ef1d58bd8f9b1e34081a14a682b7ff082fb5d1da56713e5e0040e528') version('1.0', sha256='d8a97de3133f2c6b6bb4b80d32b4a4cc25eb25e0df4f0cec0f8cb19bf34ece98') version('0.99', 'b678433ab1d498da47acf3dc5e056c23') @@ -93,6 +94,9 @@ class Hydrogen(CMakePackage): conflicts('@0:0.98', msg="Hydrogen did not exist before v0.99. " + "Did you mean to use Elemental instead?") + generator = 'Ninja' + depends_on('ninja', type='build') + @property def libs(self): shared = True if '+shared' in self.spec else False diff --git a/var/spack/repos/builtin/packages/lbann/package.py b/var/spack/repos/builtin/packages/lbann/package.py index 148b097051..5d989e36d2 100644 --- a/var/spack/repos/builtin/packages/lbann/package.py +++ b/var/spack/repos/builtin/packages/lbann/package.py @@ -18,6 +18,7 @@ class Lbann(CMakePackage): git = "https://github.com/LLNL/lbann.git" version('develop', branch='develop') + version('0.96', sha256='97af78e9d3c405e963361d0db96ee5425ee0766fa52b43c75b8a5670d48e4b4a') version('0.95', sha256='d310b986948b5ee2bedec36383a7fe79403721c8dc2663a280676b4e431f83c2') version('0.94', sha256='567e99b488ebe6294933c98a212281bffd5220fc13a0a5cd8441f9a3761ceccf') version('0.93', '1913a25a53d4025fa04c16f14afdaa55') @@ -34,8 +35,9 @@ class Lbann(CMakePackage): variant('build_type', default='Release', description='The build type to build', values=('Debug', 'Release')) - variant('al', default=True, description='Builds with support for Aluminum Library') + variant('al', default=False, description='Builds with support for Aluminum Library') variant('conduit', default=False, description='Builds with support for Conduit Library') + variant('vtune', default=False, description='Builds with support for Intel VTune') # It seems that there is a need for one statement per version bounds depends_on('hydrogen +openmp_blas +shared +int64', when='@:0.90,0.95: ~al') @@ -82,12 +84,15 @@ class Lbann(CMakePackage): '~pthreads_pf ~python ~qt ~stitching ~superres ~ts ~video' '~videostab ~videoio ~vtk', when='+opencv') - depends_on('protobuf@3.0.2:') + depends_on('protobuf@3.0.2: build_type=Release') depends_on('cnpy') depends_on('nccl', when='+gpu +nccl') depends_on('conduit@master +hdf5', when='+conduit') + generator = 'Ninja' + depends_on('ninja', type='build') + @property def common_config_args(self): spec = self.spec @@ -110,10 +115,16 @@ class Lbann(CMakePackage): args = self.common_config_args args.extend([ '-DLBANN_WITH_TOPO_AWARE:BOOL=%s' % ('+gpu +nccl' in spec), + '-DLBANN_WITH_ALUMINUM:BOOL=%s' % ('+al' in spec), + '-DLBANN_WITH_CONDUIT:BOOL=%s' % ('+conduit' in spec), + '-DLBANN_WITH_CUDA:BOOL=%s' % ('+gpu' in spec), + '-DLBANN_WITH_CUDNN:BOOL=%s' % ('+gpu' in spec), + '-DLBANN_WITH_NCCL:BOOL=%s' % ('+gpu +nccl' in spec), + '-DLBANN_WITH_SOFTMAX_CUDA:BOOL=%s' % ('+gpu' in spec), '-DLBANN_SEQUENTIAL_INITIALIZATION:BOOL=%s' % ('+seq_init' in spec), '-DLBANN_WITH_TBINF=OFF', - '-DLBANN_WITH_VTUNE=OFF', + '-DLBANN_WITH_VTUNE:BOOL=%s' % ('+vtune' in spec), '-DLBANN_DATATYPE={0}'.format(spec.variants['dtype'].value), '-DLBANN_VERBOSE=0']) @@ -126,14 +137,15 @@ class Lbann(CMakePackage): '-DElemental_DIR={0}/CMake/elemental'.format( spec['elemental'].prefix)]) + if '+vtune' in spec: + args.extend(['-DVTUNE_DIR={0}'.format(spec['vtune'].prefix)]) + if '+al' in spec: - args.extend(['-DLBANN_WITH_ALUMINUM:BOOL=%s' % ('+al' in spec), - '-DAluminum_DIR={0}'.format(spec['aluminum'].prefix)]) + args.extend(['-DAluminum_DIR={0}'.format(spec['aluminum'].prefix)]) if '+conduit' in spec: - args.extend(['-DLBANN_CONDUIT_DIR:BOOL=%s' % ('+conduit' in spec), - '-DLBANN_CONDUIT_DIR={0}'.format( - spec['conduit'].prefix)]) + args.extend(['-DLBANN_CONDUIT_DIR={0}'.format( + spec['conduit'].prefix)]) # Add support for OpenMP if (self.spec.satisfies('%clang')): @@ -153,19 +165,15 @@ class Lbann(CMakePackage): if '+gpu' in spec: args.extend([ - '-DLBANN_WITH_CUDA:BOOL=%s' % ('+gpu' in spec), - '-DLBANN_WITH_SOFTMAX_CUDA:BOOL=%s' % ('+gpu' in spec), '-DCUDA_TOOLKIT_ROOT_DIR={0}'.format( spec['cuda'].prefix)]) args.extend([ - '-DLBANN_WITH_CUDNN:BOOL=%s' % ('+gpu' in spec), '-DcuDNN_DIR={0}'.format( spec['cudnn'].prefix)]) args.extend(['-DCUB_DIR={0}'.format( spec['cub'].prefix)]) if '+nccl' in spec: args.extend([ - '-DLBANN_WITH_NCCL:BOOL=%s' % ('+gpu +nccl' in spec), '-DNCCL_DIR={0}'.format( spec['nccl'].prefix)]) -- cgit v1.2.3-60-g2f50