From a62e1a0451d81241e730d0e93dcb113d31041ebf Mon Sep 17 00:00:00 2001 From: Brian Van Essen Date: Tue, 23 Jan 2018 18:05:54 -0700 Subject: Lbann update (#6987) * Added new link line flag * Refactored some of the common components out of the different version's build commands. Also corrected the when commands to properly capture non-numeric names such as local. * Added support to the Elemental package for the Hydrogen branch. --- .../repos/builtin/packages/elemental/package.py | 37 +++++++++++++++++++++ var/spack/repos/builtin/packages/lbann/package.py | 38 ++++++++++++---------- 2 files changed, 57 insertions(+), 18 deletions(-) (limited to 'var') diff --git a/var/spack/repos/builtin/packages/elemental/package.py b/var/spack/repos/builtin/packages/elemental/package.py index 14e376628c..19ab7583ab 100644 --- a/var/spack/repos/builtin/packages/elemental/package.py +++ b/var/spack/repos/builtin/packages/elemental/package.py @@ -34,6 +34,8 @@ class Elemental(CMakePackage): homepage = "http://libelemental.org" url = "https://github.com/elemental/Elemental/archive/v0.87.6.tar.gz" + version('hydrogen-develop', git='https://github.com/LLNL/Elemental.git', branch='hydrogen') + version('develop', git='https://github.com/elemental/Elemental.git', branch='master') version('0.87.7', '6c1e7442021c59a36049e37ea69b8075') version('0.87.6', '9fd29783d45b0a0e27c0df85f548abe9') @@ -105,6 +107,7 @@ class Elemental(CMakePackage): 'libEl', root=self.prefix, shared=shared, recurse=True ) + @when('@0.87.6:') def cmake_args(self): spec = self.spec @@ -170,3 +173,37 @@ class Elemental(CMakePackage): '-DPYTHON_SITE_PACKAGES:STRING={0}'.format(site_packages_dir)]) return args + + @when('@:0.87.6') + def cmake_args(self): + spec = self.spec + + if '@:0.87.7' in spec and '%intel@:17.0.2' in spec: + raise UnsupportedCompilerError( + "Elemental {0} has a known bug with compiler: {1} {2}".format( + spec.version, spec.compiler.name, spec.compiler.version)) + + args = [ + '-DCMAKE_INSTALL_MESSAGE:STRING=LAZY', + '-DCMAKE_C_COMPILER=%s' % spec['mpi'].mpicc, + '-DCMAKE_CXX_COMPILER=%s' % spec['mpi'].mpicxx, + '-DCMAKE_Fortran_COMPILER=%s' % spec['mpi'].mpifc, + '-DBUILD_SHARED_LIBS:BOOL=%s' % ('+shared' in spec), + '-DHydrogen_ENABLE_OPENMP:BOOL=%s' % ('+hybrid' in spec), + '-DHydrogen_ENABLE_QUADMATH:BOOL=%s' % ('+quad' in spec), + '-DHydrogen_USE_64BIT_INTS:BOOL=%s' % ('+int64' in spec), + '-DHydrogen_USE_64BIT_BLAS_INTS:BOOL=%s' % ('+int64_blas' in spec), + '-DHydrogen_ENABLE_MPC:BOOL=%s' % ('+mpfr' in spec), + '-DHydrogen_GENERAL_LAPACK_FALLBACK=ON', + ] + + if 'blas=openblas' in spec: + args.extend([ + '-DHydrogen_USE_OpenBLAS:BOOL=%s' % ('blas=openblas' in spec), + '-DOpenBLAS_DIR:STRING={0}'.format( + spec['elemental'].prefix)]) + elif 'blas=mkl' in spec: + args.extend([ + '-DHydrogen_USE_MKL:BOOL=%s' % ('blas=mkl' in spec)]) + + return args diff --git a/var/spack/repos/builtin/packages/lbann/package.py b/var/spack/repos/builtin/packages/lbann/package.py index 8cfd6e4c62..6cc53ae2df 100644 --- a/var/spack/repos/builtin/packages/lbann/package.py +++ b/var/spack/repos/builtin/packages/lbann/package.py @@ -62,16 +62,27 @@ class Lbann(CMakePackage): depends_on('cnpy') depends_on('nccl', when='+gpu +nccl') - @when('@0.94:') - def cmake_args(self): + @property + def common_config_args(self): spec = self.spec # Environment variables CPPFLAGS = [] - CPPFLAGS.append('-DLBANN_SET_EL_RNG') + CPPFLAGS.append('-DLBANN_SET_EL_RNG -ldl') - args = [ + return [ '-DCMAKE_INSTALL_MESSAGE=LAZY', '-DCMAKE_CXX_FLAGS=%s' % ' '.join(CPPFLAGS), + '-DLBANN_VERSION=spack', + '-DCNPY_DIR={0}'.format(spec['cnpy'].prefix), + ] + + # Get any recent versions or non-numeric version + # Note that develop > numeric and non-develop < numeric + @when('@:0.91' or '@0.94:') + def cmake_args(self): + spec = self.spec + args = self.common_config_args + args.extend([ '-DLBANN_WITH_TOPO_AWARE:BOOL=%s' % ('+gpu +nccl' in spec), '-DLBANN_SEQUENTIAL_INITIALIZATION:BOOL=%s' % ('+seq_init' in spec), @@ -79,10 +90,8 @@ class Lbann(CMakePackage): '-DLBANN_WITH_VTUNE=OFF', '-DElemental_DIR={0}/CMake/elemental'.format( spec['elemental'].prefix), - '-DCNPY_DIR={0}'.format(spec['cnpy'].prefix), '-DLBANN_DATATYPE={0}'.format(spec.variants['dtype'].value), - '-DLBANN_VERBOSE=0', - '-DLBANN_VERSION=spack'] + '-DLBANN_VERBOSE=0']) if '+opencv' in spec: args.extend(['-DOpenCV_DIR:STRING={0}'.format( @@ -108,16 +117,11 @@ class Lbann(CMakePackage): return args - @when('@:0.93') + @when('@0.91:0.93') def cmake_args(self): spec = self.spec - # Environment variables - CPPFLAGS = [] - CPPFLAGS.append('-DLBANN_SET_EL_RNG') - - args = [ - '-DCMAKE_INSTALL_MESSAGE=LAZY', - '-DCMAKE_CXX_FLAGS=%s' % ' '.join(CPPFLAGS), + args = self.common_config_args + args.extend([ '-DWITH_CUDA:BOOL=%s' % ('+gpu' in spec), '-DWITH_CUDNN:BOOL=%s' % ('+gpu' in spec), '-DELEMENTAL_USE_CUBLAS:BOOL=%s' % ( @@ -125,13 +129,11 @@ class Lbann(CMakePackage): '-DWITH_TBINF=OFF', '-DWITH_VTUNE=OFF', '-DElemental_DIR={0}'.format(spec['elemental'].prefix), - '-DCNPY_DIR={0}'.format(spec['cnpy'].prefix), '-DELEMENTAL_MATH_LIBS={0}'.format( spec['elemental'].libs), '-DSEQ_INIT:BOOL=%s' % ('+seq_init' in spec), '-DVERBOSE=0', - '-DLBANN_HOME=.', - '-DLBANN_VER=spack'] + '-DLBANN_HOME=.']) if spec.variants['dtype'].value == 'float': args.extend(['-DDATATYPE=4']) -- cgit v1.2.3-60-g2f50