petsc: add variant +sycl (#40562)
* petsc: add variant +sycl * petsc: add in gmake as dependency - so that consistent make gets used between petsc and slepc builds [that can have different env for each of the builds]
This commit is contained in:
parent
681639985a
commit
b2d3e01fe6
1 changed files with 16 additions and 0 deletions
|
@ -87,6 +87,7 @@ class Petsc(Package, CudaPackage, ROCmPackage):
|
||||||
variant("double", default=True, description="Switches between single and double precision")
|
variant("double", default=True, description="Switches between single and double precision")
|
||||||
variant("complex", default=False, description="Build with complex numbers")
|
variant("complex", default=False, description="Build with complex numbers")
|
||||||
variant("debug", default=False, description="Compile in debug mode")
|
variant("debug", default=False, description="Compile in debug mode")
|
||||||
|
variant("sycl", default=False, description="Enable sycl build")
|
||||||
|
|
||||||
variant("metis", default=True, description="Activates support for metis and parmetis")
|
variant("metis", default=True, description="Activates support for metis and parmetis")
|
||||||
variant(
|
variant(
|
||||||
|
@ -207,6 +208,8 @@ def check_fortran_compiler(self):
|
||||||
patch("revert-3.18.0-ver-format-for-dealii.patch", when="@3.18.0")
|
patch("revert-3.18.0-ver-format-for-dealii.patch", when="@3.18.0")
|
||||||
|
|
||||||
depends_on("diffutils", type="build")
|
depends_on("diffutils", type="build")
|
||||||
|
# not listed as a "build" dependency - so that slepc build gets the same dependency
|
||||||
|
depends_on("gmake")
|
||||||
|
|
||||||
# Virtual dependencies
|
# Virtual dependencies
|
||||||
# Git repository needs sowing to build Fortran interface
|
# Git repository needs sowing to build Fortran interface
|
||||||
|
@ -338,6 +341,9 @@ def check_fortran_compiler(self):
|
||||||
when="+kokkos +rocm amdgpu_target=%s" % rocm_arch,
|
when="+kokkos +rocm amdgpu_target=%s" % rocm_arch,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
conflicts("~kokkos", when="+sycl", msg="+sycl requires +kokkos")
|
||||||
|
depends_on("kokkos+sycl", when="+sycl +kokkos")
|
||||||
|
|
||||||
phases = ["configure", "build", "install"]
|
phases = ["configure", "build", "install"]
|
||||||
|
|
||||||
# Using the following tarballs
|
# Using the following tarballs
|
||||||
|
@ -434,6 +440,16 @@ def configure_options(self):
|
||||||
else:
|
else:
|
||||||
options.append("--with-x=0")
|
options.append("--with-x=0")
|
||||||
|
|
||||||
|
if "+sycl" in spec:
|
||||||
|
sycl_compatible_compilers = ["icpx"]
|
||||||
|
if not (os.path.basename(self.compiler.cxx) in sycl_compatible_compilers):
|
||||||
|
raise InstallError("PETSc's SYCL GPU Backend requires oneAPI CXX (icpx) compiler.")
|
||||||
|
options.append("--with-sycl=1")
|
||||||
|
options.append("--with-syclc=" + self.compiler.cxx)
|
||||||
|
options.append("SYCLPPFLAGS=-Wno-tautological-constant-compare")
|
||||||
|
else:
|
||||||
|
options.append("--with-sycl=0")
|
||||||
|
|
||||||
if "trilinos" in spec:
|
if "trilinos" in spec:
|
||||||
if spec.satisfies("^trilinos+boost"):
|
if spec.satisfies("^trilinos+boost"):
|
||||||
options.append("--with-boost=1")
|
options.append("--with-boost=1")
|
||||||
|
|
Loading…
Reference in a new issue