Commit ba454342 authored by one's avatar one
Browse files

Update nekRS

parent 90d80a0b
...@@ -83,8 +83,7 @@ class Nekrs(Package, CMakePackage, CudaPackage, ROCmPackage): ...@@ -83,8 +83,7 @@ class Nekrs(Package, CMakePackage, CudaPackage, ROCmPackage):
filter_file(r"mpirun -np", "srun -n", "nrsbmpi") filter_file(r"mpirun -np", "srun -n", "nrsbmpi")
# nekRS upstream writes nekrs.conf into CMAKE_INSTALL_PREFIX at configure # nekRS upstream writes nekrs.conf into CMAKE_INSTALL_PREFIX at configure
# time, which is not Spack-friendly. Redirect it into the build tree # time. Redirect it into the build tree and install it normally.
# and install it normally.
if self.spec.satisfies("@23.0:"): if self.spec.satisfies("@23.0:"):
filter_file( filter_file(
r"\$\{CMAKE_INSTALL_PREFIX\}/nekrs\.conf", r"\$\{CMAKE_INSTALL_PREFIX\}/nekrs\.conf",
...@@ -118,7 +117,11 @@ class Nekrs(Package, CMakePackage, CudaPackage, ROCmPackage): ...@@ -118,7 +117,11 @@ class Nekrs(Package, CMakePackage, CudaPackage, ROCmPackage):
env.set("NEKRS_HOME", self.prefix) env.set("NEKRS_HOME", self.prefix)
env.prepend_path("PATH", self.prefix.bin) env.prepend_path("PATH", self.prefix.bin)
env.set("OCCA_CXX", self.compiler.cxx) # OCCA performs runtime JIT compilation; use a real runtime compiler
# path instead of Spack's build wrapper path.
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", []) cxxflags = spec.compiler_flags.get("cxxflags", [])
if cxxflags: if cxxflags:
...@@ -152,14 +155,11 @@ class GenericBuilder(generic.GenericBuilder): ...@@ -152,14 +155,11 @@ class GenericBuilder(generic.GenericBuilder):
class CMakeBuilder(cmake.CMakeBuilder): class CMakeBuilder(cmake.CMakeBuilder):
def cmake_args(self): def cmake_args(self):
cxxflags = self.spec.compiler_flags.get("cxxflags", []) cxxflags = self.spec.compiler_flags.get("cxxflags", [])
cxxflags_str = " ".join(cxxflags) if cxxflags else ""
args = [ args = [
# Match upstream recommended usage: MPI wrappers for all languages. # Match upstream recommended usage: MPI wrappers for all languages.
self.define("CMAKE_C_COMPILER", self.spec["mpi"].mpicc), self.define("CMAKE_C_COMPILER", self.spec["mpi"].mpicc),
self.define("CMAKE_CXX_COMPILER", self.spec["mpi"].mpicxx), self.define("CMAKE_CXX_COMPILER", self.spec["mpi"].mpicxx),
self.define("CMAKE_Fortran_COMPILER", self.spec["mpi"].mpifc), self.define("CMAKE_Fortran_COMPILER", self.spec["mpi"].mpifc),
self.define("NEKRS_COMPILER_FLAGS", cxxflags_str),
self.define("OCCA_CXXFLAGS", cxxflags_str),
self.define_from_variant("ENABLE_CUDA", "cuda"), self.define_from_variant("ENABLE_CUDA", "cuda"),
self.define_from_variant("ENABLE_OPENCL", "opencl"), self.define_from_variant("ENABLE_OPENCL", "opencl"),
self.define_from_variant("ENABLE_HIP", "rocm"), self.define_from_variant("ENABLE_HIP", "rocm"),
...@@ -169,4 +169,12 @@ class CMakeBuilder(cmake.CMakeBuilder): ...@@ -169,4 +169,12 @@ class CMakeBuilder(cmake.CMakeBuilder):
self.define_from_variant("ENABLE_CVODE", "cvode"), self.define_from_variant("ENABLE_CVODE", "cvode"),
self.define_from_variant("ENABLE_HYPRE_GPU", "hypre_gpu"), self.define_from_variant("ENABLE_HYPRE_GPU", "hypre_gpu"),
] ]
if cxxflags:
cxxflags_str = " ".join(cxxflags)
args.extend(
[
self.define("NEKRS_COMPILER_FLAGS", cxxflags_str),
self.define("OCCA_CXXFLAGS", cxxflags_str),
]
)
return args return args
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