From 22fe56ad2489eb242d5606dd55a19372b8721722 Mon Sep 17 00:00:00 2001 From: Axel Huebl Date: Mon, 14 Jun 2021 10:34:24 -0700 Subject: HiPACE: new package (#24070) Co-authored-by: Severin Diederichs <65728274+SeverinDiederichs@users.noreply.github.com> --- var/spack/repos/builtin/packages/hipace/package.py | 66 ++++++++++++++++++++++ .../repos/builtin/packages/openpmd-api/package.py | 5 +- 2 files changed, 70 insertions(+), 1 deletion(-) create mode 100644 var/spack/repos/builtin/packages/hipace/package.py (limited to 'var') diff --git a/var/spack/repos/builtin/packages/hipace/package.py b/var/spack/repos/builtin/packages/hipace/package.py new file mode 100644 index 0000000000..490c755183 --- /dev/null +++ b/var/spack/repos/builtin/packages/hipace/package.py @@ -0,0 +1,66 @@ +# Copyright 2013-2021 Lawrence Livermore National Security, LLC and other +# Spack Project Developers. See the top-level COPYRIGHT file for details. +# +# SPDX-License-Identifier: (Apache-2.0 OR MIT) + +from spack import * + + +class Hipace(CMakePackage): + """Highly efficient Plasma Accelerator Emulation, quasistatic + particle-in-cell code + """ + + homepage = "https://hipace.readthedocs.io" + # url = "https://github.com/Hi-PACE/hipace/archive/refs/tags/21.06.tar.gz" + git = "https://github.com/Hi-PACE/hipace.git" + + maintainers = ['ax3l', 'MaxThevenet', 'SeverinDiederichs'] + + version('develop', branch='development') + + variant('compute', + default='omp', + values=('omp', 'cuda', 'hip', 'sycl', 'noacc'), + multi=False, + description='On-node, accelerated computing backend') + variant('mpi', default=True, + description='Enable MPI support') + variant('openpmd', default=True, + description='Enable openPMD I/O') + variant('precision', + default='double', + values=('single', 'double'), + multi=False, + description='Floating point precision (single/double)') + + depends_on('cmake@3.15.0:', type='build') + depends_on('cuda@9.2.88:', when='compute=cuda') + depends_on('fftw@3:', when='compute=omp') + depends_on('fftw +mpi', when='+mpi compute=omp') + depends_on('mpi', when='+mpi') + depends_on('openpmd-api@hipace', when='+openpmd') + depends_on('openpmd-api ~mpi', when='+openpmd ~mpi') + depends_on('openpmd-api +mpi', when='+openpmd +mpi') + depends_on('pkgconfig', type='build', when='compute=omp') + depends_on('rocfft', when='compute=hip') + depends_on('rocprim', when='compute=hip') + depends_on('rocrand', when='compute=hip') + depends_on('llvm-openmp', when='%apple-clang compute=omp') + + def cmake_args(self): + spec = self.spec + + args = [ + # do not super-build dependencies + '-HiPACE_openpmd_internal=OFF', + # variants + '-DHiPACE_COMPUTE={0}'.format( + spec.variants['compute'].value.upper()), + self.define_from_variant('HiPACE_MPI', 'mpi'), + self.define_from_variant('HiPACE_OPENPMD', 'openpmd'), + '-DHiPACE_PRECISION={0}'.format( + spec.variants['precision'].value.upper()), + ] + + return args diff --git a/var/spack/repos/builtin/packages/openpmd-api/package.py b/var/spack/repos/builtin/packages/openpmd-api/package.py index 911dbf78d1..a968b88fda 100644 --- a/var/spack/repos/builtin/packages/openpmd-api/package.py +++ b/var/spack/repos/builtin/packages/openpmd-api/package.py @@ -15,12 +15,15 @@ class OpenpmdApi(CMakePackage): maintainers = ['ax3l'] + # C++14 up until here version('dev', branch='dev') + # temporary, pre 0.14.0 version for HiPACE++ + version('hipace', commit='ac083025ee662469b8cad1adf93eef48cde35f58') version('0.13.4', sha256='46c013be5cda670f21969675ce839315d4f5ada0406a6546a91ec3441402cf5e') version('0.13.3', sha256='4b8f84bd89cd540c73ffe8c21085970453cb7f0e4f125f11a4e288433f64b58c') version('0.13.2', sha256='2e5170d41bb7b2c0608ec833eee7f9adf8175b46734743f6e46dcce6f6685fb0') version('0.13.1', sha256='81ff79419982eb1b0865d1736f73f950f5d4c356d3c78200ceeab7f54dc07fd7') - version('0.13.0', sha256='97c2e43d80ee5c5288f278bd54f0dcb40e7f48a575b278fcef9660214b779bb0') # C++14 required + version('0.13.0', sha256='97c2e43d80ee5c5288f278bd54f0dcb40e7f48a575b278fcef9660214b779bb0') # C++11 up until here version('0.12.0', tag='0.12.0-alpha') version('0.11.1', tag='0.11.1-alpha') -- cgit v1.2.3-60-g2f50