From aad8ea172c404b533ab011e60c0e878cc48883f1 Mon Sep 17 00:00:00 2001 From: Simon Pintarelli <1237199+simonpintarelli@users.noreply.github.com> Date: Tue, 29 Oct 2019 04:57:07 +0100 Subject: Add SpFFT: sparse 3D FFT library (#13458) * Add SpFFT: sparse 3D FFT library SpFFT is required as a dependency for SIRIUS * cleanup * add missing dependency --- var/spack/repos/builtin/packages/spfft/package.py | 44 +++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 var/spack/repos/builtin/packages/spfft/package.py (limited to 'var') diff --git a/var/spack/repos/builtin/packages/spfft/package.py b/var/spack/repos/builtin/packages/spfft/package.py new file mode 100644 index 0000000000..703a1a1674 --- /dev/null +++ b/var/spack/repos/builtin/packages/spfft/package.py @@ -0,0 +1,44 @@ +# Copyright 2013-2019 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 Spfft(CMakePackage): + """Sparse 3D FFT library with MPI, OpenMP, CUDA and ROCm support.""" + + homepage = "https://github.com/eth-cscs/SpFFT" + url = "https://github.com/eth-cscs/SpFFT/archive/v0.9.8.zip" + + version('0.9.8', sha256='f49fa51316bbfa68309e951d2375e1f6904120c93868cbe13bc2974c0b801a3f') + + variant('openmp', default=True, description="Build with OpenMP support") + variant('mpi', default=True, description="enable MPI") + variant('single_precision', default=False, description="Sinlge precision") + variant('gpu_direct', default=False, description="GPU aware MPI") + variant('static', default=False, description="build static library") + variant('cuda', default=False, description="CUDA") + variant('build_type', default='Release', description='CMake build type', + values=('Debug', 'Release', 'RelWithDebInfo')) + depends_on('fftw') + depends_on('mpi', when='+mpi') + depends_on('cuda', when='+cuda') + + def cmake_args(self): + args = [] + if self.spec.satisfies('+openmp'): + args += ["-DSPFFT_OMP=On"] + if self.spec.satisfies('+mpi'): + args += ["-DSPFFT_MPI=On"] + if self.spec.satisfies('+single_precision'): + args += ["-DSPFFT_SINGLE_PRECISION=On"] + if self.spec.satisfies('+gpu_direct'): + args += ["-DSPFFT_GPU_DIRECT=On"] + if self.spec.satisfies('+cuda'): + args += ["-DSPFFT_BACKEND=CUDA"] + if self.spec.satisfies('+cuda'): + args += ["-DSPFFT_BACKEND=CUDA"] + return args -- cgit v1.2.3-70-g09d2