Commit beb5c9ff authored by one's avatar one
Browse files

Update nekRS

parent ba454342
......@@ -136,8 +136,20 @@ class Nekrs(Package, CMakePackage, CudaPackage, ROCmPackage):
def setup_dependent_build_environment(
self, env: EnvironmentModifications, dependent_spec: Spec
) -> None:
# Export the same runtime settings for dependents built in Spack.
self.setup_run_environment(env)
# Export only compiler-related OCCA vars to dependent builds to avoid
# polluting their runtime-oriented environment (e.g. PATH/NEKRS_HOME).
spec = self.spec
runtime_cxx = spec["mpi"].mpicxx
env.set("OCCA_CXX", runtime_cxx)
env.set("NEKRS_MPI_UNDERLYING_COMPILER", runtime_cxx)
cxxflags = spec.compiler_flags.get("cxxflags", [])
if cxxflags:
env.set("OCCA_CXXFLAGS", " ".join(cxxflags))
if "+cuda" in spec:
cuda_dir = spec["cuda"].prefix
env.set("OCCA_CUDA_COMPILER", join_path(cuda_dir, "bin", "nvcc"))
class GenericBuilder(generic.GenericBuilder):
def install(self, pkg, spec, prefix):
......@@ -153,6 +165,23 @@ class GenericBuilder(generic.GenericBuilder):
class CMakeBuilder(cmake.CMakeBuilder):
def install(self, pkg, spec, prefix):
super().install(pkg, spec, prefix)
# Ensure installed runtime config does not retain Spack build wrappers.
runtime_cxx = spec["mpi"].mpicxx
conf = join_path(prefix, "nekrs.conf")
filter_file(
r"^NEKRS_MPI_UNDERLYING_COMPILER = .*$",
f"NEKRS_MPI_UNDERLYING_COMPILER = {runtime_cxx}",
conf,
)
filter_file(
r"^OCCA_CXX = .*$",
f"OCCA_CXX = {runtime_cxx}",
conf,
)
def cmake_args(self):
cxxflags = self.spec.compiler_flags.get("cxxflags", [])
args = [
......@@ -160,6 +189,7 @@ class CMakeBuilder(cmake.CMakeBuilder):
self.define("CMAKE_C_COMPILER", self.spec["mpi"].mpicc),
self.define("CMAKE_CXX_COMPILER", self.spec["mpi"].mpicxx),
self.define("CMAKE_Fortran_COMPILER", self.spec["mpi"].mpifc),
self.define("OCCA_CXX", self.spec["mpi"].mpicxx),
self.define_from_variant("ENABLE_CUDA", "cuda"),
self.define_from_variant("ENABLE_OPENCL", "opencl"),
self.define_from_variant("ENABLE_HIP", "rocm"),
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment