Cloverleaf-ref: proposal for a -ref version only (#39894)

* Cloverleaf-ref: proposal for a -ref version only
* Cloverleaf-ref: fixing typo.

---------

Co-authored-by: fpanichi <fpanichi@amd.com>
pull/35800/merge
AMD Toolchain Support 2023-09-08 18:47:00 +01:00 committed by GitHub
parent 9e7fe04a77
commit 87f99de3fb
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 114 additions and 0 deletions

View File

@ -0,0 +1,114 @@
# Copyright 2013-2023 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.package import *
class CloverleafRef(MakefilePackage):
"""Proxy Application. CloverLeaf_ref is a miniapp that solves the
compressible Euler equations on a Cartesian grid,
using an explicit, second-order accurate method.
"""
homepage = "https://github.com/UK-MAC/CloverLeaf_ref"
url = "https://github.com/UK-MAC/CloverLeaf_ref/archive/refs/tags/v1.3.tar.gz"
git = "https://github.com/UK-MAC/CloverLeaf_ref.git"
maintainers("amd-toolchain-support")
version("master", branch="master")
version(
"1.3", sha256="fdff193286a00672bb931baa50d424a2cc19fb5817b62436804eced637e12430"
) # commit "0ddf495"
version(
"1.1", sha256="0ac87accf81d85b959e5da839e6b0659afb3a2840a13f5da113a1c34eeb87942"
) # commit "5667c3a"
variant(
"ieee", default=False, description="Build with IEEE754 compliant floating point operations"
)
variant("debug", default=False, description="Build with DEBUG flags")
depends_on("mpi")
# Cloverleaf_ref Makefile contains some but not all required options for each compiler.
# This package.py inserts what is needed for Intel, AOCC, and LLVM compilers.
@property
def build_targets(self):
targets = ["--directory=./"]
targets.append("MPI_COMPILER={0}".format(self.spec["mpi"].mpifc))
targets.append("C_MPI_COMPILER={0}".format(self.spec["mpi"].mpicc))
if "+debug" in self.spec:
targets.append("DEBUG=1")
if "+ieee" in self.spec:
targets.append("IEEE=1")
# Work around for bug in Makefiles for versions 1.3 and 1.1 (mis-defined as -openmp)
if self.spec.satisfies("%intel"):
targets.append("COMPILER=INTEL")
targets.append("OMP_INTEL=-qopenmp")
# Work around for missing AOCC compilers option in Makefiles for versions 1.3 and 1.1
elif self.spec.satisfies("%aocc"):
targets.append("COMPILER=AOCC")
targets.append("OMP_AOCC=-fopenmp")
if self.spec.satisfies("+ieee"):
targets.append("I3E_AOCC=-ffp-model=precise")
if self.spec.satisfies("%aocc@:4.0.0"):
targets.append("I3E_AOCC+=-Kieee")
# logic for Debug build: no optimizatrion and debug symbols
if self.spec.satisfies("+debug"):
targets.append("FLAGS_AOCC=-O0 -g -Wall -Wextra -fsanitize=address")
targets.append("CFLAGS_AOCC=-O0 -g -Wall -Wextra -fsanitize=address")
else:
targets.append("CFLAGS_AOCC=-O3 -fnt-store=aggressive")
targets.append("FLAGS_AOCC=-O3 -fnt-store=aggressive")
# Work around for missing CLANG entries in Makefiles for master branch (commit:0fdb917),
# and for versions 1.3 and 1.1
elif self.spec.satisfies("%clang"):
targets.append("COMPILER=CLANG")
targets.append("OMP_CLANG=-fopenmp")
if self.spec.satisfies("+ieee"):
targets.append("I3E_CLANG=-ffp-model=precise")
# logic for Debug build: no optimizatrion and debug symbols
if self.spec.satisfies("+debug"):
targets.append("FLAGS_CLANG=-O0 -g")
targets.append("CFLAGS_CLANG=-O0 -g")
else:
targets.append("FLAGS_CLANG=-O3")
targets.append("CFLAGS_CLANG=-O3")
elif self.spec.satisfies("%gcc"):
targets.append("COMPILER=GNU")
elif self.spec.satisfies("%cce"):
targets.append("COMPILER=CRAY")
targets.append("OMP_CRAY=-fopenmp")
elif self.spec.satisfies("%pgi"):
targets.append("COMPILER=PGI")
elif self.spec.satisfies("%xl"):
targets.append("COMPILER=XLF")
else:
raise ValueError("Compiler {} not supported".format(self.spec.compiler.name))
return targets
def install(self, spec, prefix):
mkdirp(prefix.bin)
mkdirp(prefix.doc.tests)
install("./clover_leaf", prefix.bin)
install("./clover.in", prefix.bin)
install("./*.in", prefix.doc.tests)