Adding FASTMath uber package and missing FASTMath packages (#4120)

* adding 0.5.1 and variant for uint8 bit stream word type

* Revisions as per davydden

* fixing style (flake8) issues

* - switched to derive from MakefilePackage
- fixed typo in variant check
- Confirmed installs correctly with bswtuint8 variant

* added build method; changed zfp_incdir to incdir

* * Adding uber fastmath package to support 'spack install fastmath'
* Adding dims variant boxlib to control compile-time spatial dimension count
* Explicitly disabling many parts of moab to get lib to build. Don't need tools yet.
* Add logic to spack/setup-env to not refer to $SYS_TYPE if its not defined.

* adding mesquite package

* * Added Chombo (still working on Fortran name mangling)
* Made mesquite depend on mpi
* Fixed use of boxlib's dims numerical variant

* adding PUMI

* flake8 compliance

* adding phasta

* fixing flake8 issues

* undue $SYS_TYPE protection change

* fixing install step for fastmath uber package; resolve issues requested by adamjstewart in PR

* revisions as per adamjstewart

* re-enabling trilinos and phasta dependencies

* all changes requested modulu values= and assert statement

* fixing cmake_args usage in pumi; fixing lib installs for chombo

* first pass at numerical variant

* fixing dims variant as per @adamjstewart

* fixing func/var name collision

* fixing means of disabling -Werror

* fix name collision for cmake_args var/func

* fixing chombo homepage/url; make FASTMath use chombo#3.2; remove extraneous comment about boxlib dim

* remove dummy fastmath package; switch to @BarrySmith soln for install of dummy bundle

* fix flake8 import os issue

* remove extraneous comment

* adding url for fastmath scidac site

* final fixes as per @adamjstewart

* adding 1 dims option for boxlib

* switching make(all) to gmake(all)
This commit is contained in:
Mark C. Miller 2017-05-09 16:26:57 -07:00 committed by Adam J. Stewart
parent a5fd658986
commit 64fb2f22b4
10 changed files with 477 additions and 3 deletions

View File

@ -36,12 +36,19 @@ class Boxlib(CMakePackage):
depends_on('mpi')
variant('dims',
default='3',
values=('1', '2', '3'),
multi=False,
description='Number of spatial dimensions'
)
def cmake_args(self):
spec = self.spec
options = []
options.extend([
# '-DBL_SPACEDIM=3',
'-DBL_SPACEDIM=%d' % int(spec.variants['dims'].value),
'-DENABLE_POSITION_INDEPENDENT_CODE=ON',
'-DENABLE_FBASELIB=ON',
'-DCMAKE_C_COMPILER=%s' % spec['mpi'].mpicc,

View File

@ -0,0 +1,23 @@
*** lib/mk/Make.defs.local.template 2017-05-02 16:00:16.000000000 -0700
--- lib/mk/Make.defs.local.template.patched 2017-05-02 18:50:36.000000000 -0700
***************
*** 129,135 ****
--- 129,137 ----
#HDFMPILIBFLAGS= -L<hdf_parallel_dir>/lib -lhdf5 -lz
#USE_MF =
#USE_MT =
+ #USE_LAPACK =
#USE_SETVAL =
+ #USE_TIMER =
#CH_AR =
#CH_CPP =
#DOXYGEN =
***************
*** 151,155 ****
--- 153,158 ----
#ldoptflags =
#ldprofflags =
#syslibflags =
+ #lapackincflags =
#end -- dont change this line

View File

@ -0,0 +1,12 @@
*** lib/src/BoxTools/HDF5Portable.H 2017-05-02 13:57:57.000000000 -0700
--- lib/src/BoxTools/HDF5Portable.H.patched 2017-05-02 13:55:30.000000000 -0700
***************
*** 15,20 ****
--- 15,21 ----
extern "C"
{
#ifdef CH_USE_HDF5
+ #define H5_USE_16_API
#include <hdf5.h>
#else
typedef long hid_t;

View File

@ -0,0 +1,140 @@
##############################################################################
# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC.
# Produced at the Lawrence Livermore National Laboratory.
#
# This file is part of Spack.
# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved.
# LLNL-CODE-647188
#
# For details, see https://github.com/llnl/spack
# Please also see the LICENSE file for our notice and the LGPL.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License (as
# published by the Free Software Foundation) version 2.1, February 1999.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and
# conditions of the GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
##############################################################################
from spack import *
from shutil import copyfile
import glob
class Chombo(MakefilePackage):
"""The Chombo package provides a set of tools for implementing finite
difference and finite-volume methods for the solution of partial
differential equations on block-structured adaptively refined
logically rectangular (i.e. Cartesian) grids."""
homepage = "https://commons.lbl.gov/display/chombo"
url = "http://bitbucket.org/drhansj/chombo-xsdk.git"
# Use whatever path Brian V. and Terry L. agreed upon, but preserve version
version('3.2', git='http://bitbucket.org/drhansj/chombo-xsdk.git', commit='71d856c')
version('develop', git='http://bitbucket.org/drhansj/chombo-xsdk.git', tag='master')
# version('3.2', svn='https://anag-repo.lbl.gov/svn/Chombo/release/3.2')
variant('mpi', default=True, description='Enable MPI parallel support')
variant('hdf5', default=True, description='Enable HDF5 support')
variant('dims',
default='3',
values=('1', '2', '3', '4', '5', '6'),
multi=False,
description='Number of PDE dimensions [1-6]'
)
patch('hdf5-16api.patch', when='@3.2', level=0)
patch('Make.defs.local.template.patch', when='@3.2', level=0)
depends_on('blas')
depends_on('lapack')
depends_on('gmake', type='build')
depends_on('mpi', when='+mpi')
depends_on('hdf5', when='+hdf5')
depends_on('hdf5+mpi', when='+mpi+hdf5')
def edit(self, spec, prefix):
# Set fortran name mangling in Make.defs
defs_file = FileFilter('./lib/mk/Make.defs')
defs_file.filter('^\s*#\s*cppcallsfort\s*=\s*',
'cppcallsfort = -DCH_FORT_UNDERSCORE')
# Set remaining variables in Make.defs.local
# Make.defs.local.template.patch ensures lines for USE_TIMER,
# USE_LAPACK and lapackincflags are present
copyfile('./lib/mk/Make.defs.local.template',
'./lib/mk/Make.defs.local')
defs_file = FileFilter('./lib/mk/Make.defs.local')
# Unconditional settings
defs_file.filter('^\s*#\s*DEBUG\s*=\s*', 'DEBUG = FALSE')
defs_file.filter('^\s*#\s*OPT\s*=\s*', 'OPT = TRUE')
defs_file.filter('^\s*#\s*PIC\s*=\s*', 'PIC = TRUE')
# timer code frequently fails compiles. So disable it.
defs_file.filter('^\s*#\s*USE_TIMER\s*=\s*', 'USE_TIMER = FALSE')
# LAPACK setup
lapack_blas = spec['lapack'].libs + spec['blas'].libs
defs_file.filter('^\s*#\s*USE_LAPACK\s*=\s*', 'USE_LAPACK = TRUE')
defs_file.filter(
'^\s*#\s*lapackincflags\s*=\s*',
'lapackincflags = -I%s' % spec['lapack'].prefix.include)
defs_file.filter(
'^\s*#\s*syslibflags\s*=\s*',
'syslibflags = %s' % lapack_blas.ld_flags)
# Compilers and Compiler flags
defs_file.filter('^\s*#\s*CXX\s*=\s*', 'CXX = %s' % spack_cxx)
defs_file.filter('^\s*#\s*FC\s*=\s*', 'FC = %s' % spack_fc)
if '+mpi' in spec:
defs_file.filter(
'^\s*#\s*MPICXX\s*=\s*',
'MPICXX = %s' % self.spec['mpi'].mpicxx)
# Conditionally determined settings
defs_file.filter(
'^\s*#\s*MPI\s*=\s*',
'MPI = %s' % ('TRUE' if '+mpi' in spec else 'FALSE'))
defs_file.filter(
'^\s*#\s*DIM\s*=\s*',
'DIM = %s' % spec.variants['dims'].value)
# HDF5 settings
if '+hdf5' in spec:
defs_file.filter('^\s*#\s*USE_HDF5\s*=\s*', 'USE_HDF5 = TRUE')
defs_file.filter(
'^\s*#\s*HDFINCFLAGS\s*=.*',
'HDFINCFLAGS = -I%s' % spec['hdf5'].prefix.include)
defs_file.filter(
'^\s*#\s*HDFLIBFLAGS\s*=.*',
'HDFLIBFLAGS = %s' % spec['hdf5'].libs.ld_flags)
if '+mpi' in spec:
defs_file.filter(
'^\s*#\s*HDFMPIINCFLAGS\s*=.*',
'HDFMPIINCFLAGS = -I%s' % spec['hdf5'].prefix.include)
defs_file.filter(
'^\s*#\s*HDFMPILIBFLAGS\s*=.*',
'HDFMPILIBFLAGS = %s' % spec['hdf5'].libs.ld_flags)
def build(self, spec, prefix):
with working_dir('lib'):
gmake('all')
def install(self, spec, prefix):
with working_dir('lib'):
install_tree('include', prefix.include)
libfiles = glob.glob('lib*.a')
libfiles += glob.glob('lib*.so')
libfiles += glob.glob('lib*.dylib')
mkdirp(prefix.lib)
for lib in libfiles:
install(lib, prefix.lib)

View File

@ -0,0 +1,65 @@
##############################################################################
# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC.
# Produced at the Lawrence Livermore National Laboratory.
#
# This file is part of Spack.
# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved.
# LLNL-CODE-647188
#
# For details, see https://github.com/llnl/spack
# Please also see the LICENSE file for our notice and the LGPL.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License (as
# published by the Free Software Foundation) version 2.1, February 1999.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and
# conditions of the GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
##############################################################################
from spack import *
class Fastmath(Package):
"""FASTMath is a suite of ~15 numerical libraries frequently used together
in various SciDAC and CSE applications. The suite includes discretization
libraries for structured, AMR and unstructured grids as well as solver
libraries for ODE's, Time Integrators, Iterative, Non-Linear, and Direct
Solvers."""
homepage = "www.fastmath-scidac.org/"
url = "https://github.com/citibeth/dummy/tarball/v1.0"
version('1.0', 'e2b724dfcc31d735897971db91be89ff')
# BundlePackage
depends_on('boxlib dims=3')
depends_on('chombo@3.2')
depends_on('hypre~internal-superlu')
depends_on('mesquite')
# depends_on('ml-trilinos') # hoping for stripped down install of just ml
# depends_on('nox-trilinos') # hoping for stripped down install of just nox
depends_on('moab')
depends_on('mpi')
depends_on('parpack') # we need parpack ng
depends_on('petsc')
depends_on('phasta')
depends_on('pumi')
depends_on('sundials')
depends_on('superlu-dist')
depends_on('trilinos')
depends_on('zoltan')
# Dummy install for now, will be removed when metapackage is available
def install(self, spec, prefix):
# Prevent the error message
# ==> Error: Install failed for fastmath. Nothing was installed!
# ==> Error: Installation process had nonzero exit code : 256
with open(join_path(spec.prefix, 'bundle-package.txt'), 'w') as out:
out.write('This is a bundle\n')
out.close()

View File

@ -0,0 +1,56 @@
##############################################################################
# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC.
# Produced at the Lawrence Livermore National Laboratory.
#
# This file is part of Spack.
# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved.
# LLNL-CODE-647188
#
# For details, see https://github.com/llnl/spack
# Please also see the LICENSE file for our notice and the LGPL.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License (as
# published by the Free Software Foundation) version 2.1, February 1999.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and
# conditions of the GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
##############################################################################
from spack import *
class Mesquite(AutotoolsPackage):
"""Mesquite (Mesh Quality Improvement Toolkit) is designed to provide a
stand-alone, portable, comprehensive suite of mesh quality improvement
algorithms and components that can be used to construct custom quality
improvement algorithms. Mesquite provides a robust and effective mesh
improvement toolkit that allows both meshing researchers application
scientists to benefit from the latest developments in mesh quality
control and improvement."""
homepage = "https://software.sandia.gov/mesquite"
url = "https://software.sandia.gov/mesquite/mesquite-2.3.0.tar.gz"
version('2.99', '92b94167981bb8fcd59b0f0f18fbab64')
version('2.3.0', 'f64948b5210d5ccffaa9a2482447b322')
version('2.2.0', '41360c363e541aff7dc10024c90072d3')
variant('mpi', default=True, description='Enable MPI parallel support')
depends_on('mpi', when='+mpi')
def configure_args(self):
args = [
'CC=%s' % self.spec['mpi'].mpicc,
'CXX=%s' % self.spec['mpi'].mpicxx,
'--with-mpi=%s' % self.spec['mpi'].prefix,
'--enable-release',
'--enable-shared',
]
return args

View File

@ -57,7 +57,9 @@ class Moab(Package):
depends_on('mpi')
depends_on('hdf5+mpi')
depends_on('netcdf', when='+netcdf')
depends_on('netcdf+mpi', when='+netcdf')
depends_on('metis')
depends_on('parmetis')
depends_on('zoltan')
depends_on('zoltan~fortran', when='~fortran')
@ -67,13 +69,35 @@ def install(self, spec, prefix):
options = [
'--prefix=%s' % prefix,
'--enable-optimize',
'--enable-tools',
'--disable-tools',
'--disable-mbconvert',
'--disable-hexmodops',
'--disable-vtkMOABReader',
'--disable-mbsize',
'--disable-mbskin',
'--disable-mbtagprop',
'--disable-mbmem',
'--disable-spheredecomp',
'--disable-mbsurfplot',
'--disable-mbpart',
'--disable-dagmc',
'--disable-gsets',
'--disable-mbmerge',
'--disable-mbdepth',
'--disable-mbcoupler',
'--disable-mcnpmit',
'--disable-refiner',
'--disable-h5mtools',
'--disable-mbcslam',
'--disable-mbquality',
'--disable-ahf',
'--disable-mbumr',
'--disable-imesh',
'--with-pic',
'--with-mpi=%s' % spec['mpi'].prefix,
'--with-hdf5=%s' % spec['hdf5'].prefix,
'--with-parmetis=%s' % spec['parmetis'].prefix,
'--with-zoltan=%s' % spec['zoltan'].prefix,
'--disable-vtkMOABReader',
'--without-vtk',
'CXX=%s' % spec['mpi'].mpicxx,
'CC=%s' % spec['mpi'].mpicc,

View File

@ -0,0 +1,61 @@
##############################################################################
# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC.
# Produced at the Lawrence Livermore National Laboratory.
#
# This file is part of Spack.
# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved.
# LLNL-CODE-647188
#
# For details, see https://github.com/llnl/spack
# Please also see the LICENSE file for our notice and the LGPL.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License (as
# published by the Free Software Foundation) version 2.1, February 1999.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and
# conditions of the GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
##############################################################################
from spack import *
class Phasta(CMakePackage):
"""SCOREC RPI's Parallel Hierarchic Adaptive Stabilized Transient Analysis
(PHASTA) of compressible and incompressible Navier Stokes equations."""
homepage = "https://www.scorec.rpi.edu/software.php"
url = "https://github.com/PHASTA/phasta.git"
version('0.0.1', git='https://github.com/PHASTA/phasta.git',
commit='11f431f2d1a53a529dab4b0f079ab8aab7ca1109')
version('develop', git='https://github.com/PHASTA/phasta.git',
branch='master')
depends_on('mpi')
def cmake_args(self):
spec = self.spec
args = [
'-DPHASTA_USE_MPI=ON',
'-DPHASTA_BUILD_CONVERTERIO=OFF',
'-DPHASTA_BUILD_ACUSTAT=OFF',
'-DPHASTA_BUILD_M2N=OFF',
'-DPHASTA_BUILD_M2NFixBnd=OFF',
'-DPHASTA_USE_LESLIB=OFF',
'-DPHASTA_USE_PETSC=OFF',
'-DPHASTA_USE_SVLS=ON',
'-DPHASTA_INCOMPRESSIBLE=ON',
'-DPHASTA_COMPRESSIBLE=ON',
'-DCMAKE_C_COMPILER=%s' % spec['mpi'].mpicc,
'-DCMAKE_CXX_COMPILER=%s' % spec['mpi'].mpicxx,
'-DCMAKE_Fortran_COMPILER=%s' % spec['mpi'].mpifc,
]
return args

View File

@ -0,0 +1,65 @@
##############################################################################
# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC.
# Produced at the Lawrence Livermore National Laboratory.
#
# This file is part of Spack.
# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved.
# LLNL-CODE-647188
#
# For details, see https://github.com/llnl/spack
# Please also see the LICENSE file for our notice and the LGPL.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License (as
# published by the Free Software Foundation) version 2.1, February 1999.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and
# conditions of the GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
##############################################################################
from spack import *
import sys
class Pumi(CMakePackage):
"""SCOREC RPI's Parallel Unstructured Mesh Infrastructure (PUMI).
An efficient distributed mesh data structure and methods to support
parallel adaptive analysis including general mesh-based operations,
such as mesh entity creation/deletion, adjacency and geometric
classification, iterators, arbitrary (field) data attachable to mesh
entities, efficient communication involving entities duplicated
across multiple tasks, migration of mesh entities between tasks,
and dynamic load balancing."""
homepage = "https://www.scorec.rpi.edu/pumi"
url = "https://github.com/SCOREC/core.git"
version('0.0.1', git='https://github.com/SCOREC/core.git',
commit='0c315e82b3f2478dc18bdd6cfa89f1cddb85cd6a')
version('develop', git='https://github.com/SCOREC/core.git',
branch='master')
if sys.platform == 'darwin':
patch('phiotimer.cc.darwin.patch', level=0) # !clock_gettime
variant('zoltan', default=False, description='Enable Zoltan Features')
depends_on('mpi')
depends_on('zoltan', when='+zoltan')
def cmake_args(self):
spec = self.spec
args = [
'-DSCOREC_CXX_WARNINGS=OFF',
'-DENABLE_ZOLTAN=%s' % ('ON' if '+zoltan' in spec else 'OFF'),
'-DCMAKE_C_COMPILER=%s' % spec['mpi'].mpicc,
'-DCMAKE_CXX_COMPILER=%s' % spec['mpi'].mpicxx,
]
return args

View File

@ -0,0 +1,21 @@
*** ./phasta/phiotimer.cc 2017-05-03 12:26:25.000000000 -0700
--- ./phasta/phiotimer.cc.patched 2017-05-03 12:26:11.000000000 -0700
***************
*** 56,63 ****
}
#else
void phastaio_time(phastaioTime* t) {
! int err;
! err = clock_gettime(CLOCK_MONOTONIC,t);
PCU_ALWAYS_ASSERT(!err);
}
/*return elapsed time in micro seconds*/
--- 56,63 ----
}
#else
void phastaio_time(phastaioTime* t) {
! int err=0;
! /*err = clock_gettime(CLOCK_MONOTONIC,t);*/
PCU_ALWAYS_ASSERT(!err);
}
/*return elapsed time in micro seconds*/