diff options
Diffstat (limited to 'var/spack/repos/builtin/packages/grid/package.py')
-rw-r--r-- | var/spack/repos/builtin/packages/grid/package.py | 187 |
1 files changed, 99 insertions, 88 deletions
diff --git a/var/spack/repos/builtin/packages/grid/package.py b/var/spack/repos/builtin/packages/grid/package.py index f868743efc..1427e2f2c6 100644 --- a/var/spack/repos/builtin/packages/grid/package.py +++ b/var/spack/repos/builtin/packages/grid/package.py @@ -10,111 +10,122 @@ class Grid(AutotoolsPackage): """Data parallel C++ mathematical object library.""" homepage = "https://github.com/paboyle/Grid" - url = "https://github.com/paboyle/Grid/archive/refs/tags/0.8.2.tar.gz" - git = "https://github.com/paboyle/Grid.git" - - maintainers = ['giordano'] - - version('develop', branch='develop') - - variant('comms', default='mpi', - values=('none', 'mpi', 'mpi3', conditional('shmem', when='^cray-mpich')), - description='Choose communication interface') - variant('fftw', default=True, description='Activate FFTW support') - variant('lapack', default=False, description='Activate LAPACK support') - variant('hdf5', default=False, description='Activate HDF5 support') - variant('lime', default=False, description='Activate LIME support') - variant('doxygen-doc', default=False, - description='Build the documentation with doxygen') - variant('gen-simd-width', default='64', - description='Size (in bytes) of the generic SIMD vector type') - variant('rng', default='sitmo', values=('sitmo', 'ranlux48', 'mt19937'), - multi=False, description='RNG setting') - variant('timers', default=True, - description='System dependent high-resolution timers') - variant('chroma', default=False, - description='Chroma regression tests') - - depends_on('autoconf', type='build') - depends_on('automake', type='build') - depends_on('libtool', type='build') - depends_on('m4', type='build') - depends_on('gmp') - depends_on('mpfr') - depends_on('openssl') - - depends_on('mpi', when='comms=mpi') - depends_on('cray-mpich', when='comms=shmem') - depends_on('mpi@3:', when='comms=mpi3') - - depends_on('fftw-api@3', when='+fftw') - - depends_on('lapack', when='+lapack') - - depends_on('hdf5', when='+hdf5') - - depends_on('c-lime', when='+lime') + url = "https://github.com/paboyle/Grid/archive/refs/tags/0.8.2.tar.gz" + git = "https://github.com/paboyle/Grid.git" + + maintainers = ["giordano"] + + version("develop", branch="develop") + + variant( + "comms", + default="mpi", + values=("none", "mpi", "mpi3", conditional("shmem", when="^cray-mpich")), + description="Choose communication interface", + ) + variant("fftw", default=True, description="Activate FFTW support") + variant("lapack", default=False, description="Activate LAPACK support") + variant("hdf5", default=False, description="Activate HDF5 support") + variant("lime", default=False, description="Activate LIME support") + variant("doxygen-doc", default=False, description="Build the documentation with doxygen") + variant( + "gen-simd-width", + default="64", + description="Size (in bytes) of the generic SIMD vector type", + ) + variant( + "rng", + default="sitmo", + values=("sitmo", "ranlux48", "mt19937"), + multi=False, + description="RNG setting", + ) + variant("timers", default=True, description="System dependent high-resolution timers") + variant("chroma", default=False, description="Chroma regression tests") + + depends_on("autoconf", type="build") + depends_on("automake", type="build") + depends_on("libtool", type="build") + depends_on("m4", type="build") + depends_on("gmp") + depends_on("mpfr") + depends_on("openssl") + + depends_on("mpi", when="comms=mpi") + depends_on("cray-mpich", when="comms=shmem") + depends_on("mpi@3:", when="comms=mpi3") + + depends_on("fftw-api@3", when="+fftw") + + depends_on("lapack", when="+lapack") + + depends_on("hdf5", when="+hdf5") + + depends_on("c-lime", when="+lime") depends_on("doxygen", type="build", when="+doxygen-doc") def autoreconf(self, spec, prefix): - Executable('./bootstrap.sh')() + Executable("./bootstrap.sh")() def configure_args(self): spec = self.spec - args = ['--with-gmp', '--with-mpfr'] + args = ["--with-gmp", "--with-mpfr"] - if spec.satisfies('^intel-mkl'): - if '+fftw' in spec or '+lapack' in spec: - args.append('--enable-mkl') + if spec.satisfies("^intel-mkl"): + if "+fftw" in spec or "+lapack" in spec: + args.append("--enable-mkl") else: - if '+fftw' in spec: - args.append('--with-fftw={0}'.format(self.spec['fftw'].prefix)) - if '+lapack' in spec: - args.append('--enable-lapack={0}'.format(self.spec['lapack'].prefix)) + if "+fftw" in spec: + args.append("--with-fftw={0}".format(self.spec["fftw"].prefix)) + if "+lapack" in spec: + args.append("--enable-lapack={0}".format(self.spec["lapack"].prefix)) # lapack is searched only as `-llapack`, so anything else # wouldn't be found, causing an error. - args.append('LIBS={0}'.format(self.spec['lapack'].libs.ld_flags)) + args.append("LIBS={0}".format(self.spec["lapack"].libs.ld_flags)) - if 'comms=none' not in spec: + if "comms=none" not in spec: # The build system can easily get very confused about MPI support # and what linker to use. In many case it'd end up building the # code with support for MPI but without using `mpicxx` or linking to # `-lmpi`, wreaking havoc. Forcing `CXX` to be mpicxx should help. - args.extend([ - "CC={0}".format(spec['mpi'].mpicc), - "CXX={0}".format(spec['mpi'].mpicxx), - ]) - - args += self.enable_or_disable('timers') - args += self.enable_or_disable('chroma') - args += self.enable_or_disable('doxygen-doc') - - if 'avx512' in spec.target: - args.append('--enable-simd=AVX512') - elif 'avx2' in spec.target: - args.append('--enable-simd=AVX2') - elif 'avx' in spec.target: - if 'fma4' in spec.target: - args.append('--enable-simd=AVXFMA4') - elif 'fma' in spec.target: - args.append('--enable-simd=AVXFMA') + args.extend( + [ + "CC={0}".format(spec["mpi"].mpicc), + "CXX={0}".format(spec["mpi"].mpicxx), + ] + ) + + args += self.enable_or_disable("timers") + args += self.enable_or_disable("chroma") + args += self.enable_or_disable("doxygen-doc") + + if "avx512" in spec.target: + args.append("--enable-simd=AVX512") + elif "avx2" in spec.target: + args.append("--enable-simd=AVX2") + elif "avx" in spec.target: + if "fma4" in spec.target: + args.append("--enable-simd=AVXFMA4") + elif "fma" in spec.target: + args.append("--enable-simd=AVXFMA") else: - args.append('--enable-simd=AVX') - elif 'sse4_2' in spec.target: - args.append('--enable-simd=SSE4') - elif spec.target == 'a64fx': - args.append('--enable-simd=A64FX') - elif 'neon' in spec.target: - args.append('--enable-simd=NEONv8') + args.append("--enable-simd=AVX") + elif "sse4_2" in spec.target: + args.append("--enable-simd=SSE4") + elif spec.target == "a64fx": + args.append("--enable-simd=A64FX") + elif "neon" in spec.target: + args.append("--enable-simd=NEONv8") else: - args.extend([ - '--enable-simd=GEN', - '--enable-gen-simd-width={0}'.format( - spec.variants['gen-simd-width'].value) - ]) - - args.append('--enable-comms={0}'.format(spec.variants['comms'].value)) - args.append('--enable-rng={0}'.format(spec.variants['rng'].value)) + args.extend( + [ + "--enable-simd=GEN", + "--enable-gen-simd-width={0}".format(spec.variants["gen-simd-width"].value), + ] + ) + + args.append("--enable-comms={0}".format(spec.variants["comms"].value)) + args.append("--enable-rng={0}".format(spec.variants["rng"].value)) return args |