summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--var/spack/repos/builtin/packages/ucx/package.py36
1 files changed, 35 insertions, 1 deletions
diff --git a/var/spack/repos/builtin/packages/ucx/package.py b/var/spack/repos/builtin/packages/ucx/package.py
index 2e9d6e906a..8686324e9e 100644
--- a/var/spack/repos/builtin/packages/ucx/package.py
+++ b/var/spack/repos/builtin/packages/ucx/package.py
@@ -115,6 +115,7 @@ class Ucx(AutotoolsPackage, CudaPackage):
variant("ud", default=False, description="Compile with IB Unreliable Datagram support")
variant("verbs", default=False, description="Build OpenFabrics support")
variant("xpmem", default=False, description="Enable XPMEM support")
+ variant("gtest", default=False, description="Build and install Googletest")
depends_on("binutils+ld", when="%aocc", type="build")
depends_on("binutils", when="+backtrace_detail")
@@ -129,6 +130,7 @@ class Ucx(AutotoolsPackage, CudaPackage):
depends_on("rdma-core", when="+rdmacm")
depends_on("rdma-core", when="+verbs")
depends_on("xpmem", when="+xpmem")
+ depends_on("hip", when="+rocm")
conflicts("+gdrcopy", when="~cuda", msg="gdrcopy currently requires cuda support")
conflicts("+rocm", when="+gdrcopy", msg="gdrcopy > 2.0 does not support rocm")
@@ -138,6 +140,19 @@ class Ucx(AutotoolsPackage, CudaPackage):
# See https://github.com/openucx/ucx/pull/8629, wrong int type
patch("commit-2523555.patch", when="@1.13.1")
+ def patch(self):
+ if self.spec.satisfies("+rocm"):
+ filter_file("$$with_rocm", "${with_rocm[@]}", "configure", string=True)
+ filter_file(
+ "-I$with_rocm/include/hip -I$with_rocm/include",
+ "$ROCM_CPPFLAGS",
+ "configure",
+ string=True,
+ )
+ filter_file(
+ "-L$with_rocm/hip/lib -L$with_rocm/lib", "$ROCM_LDFLAGS", "configure", string=True
+ )
+
@when("@1.9-dev")
def autoreconf(self, spec, prefix):
Executable("./autogen.sh")()
@@ -155,10 +170,10 @@ class Ucx(AutotoolsPackage, CudaPackage):
args += self.with_or_without("openmp")
args += self.enable_or_disable("optimizations")
args += self.enable_or_disable("params-check", variant="parameter_checking")
+ args += self.enable_or_disable("gtest")
args += self.with_or_without("pic")
args += self.with_or_without("cuda", activation_value="prefix")
- args += self.with_or_without("rocm") # todo, prefix, avoid /opt/rocm guess.
args += self.with_or_without("cm")
args += self.enable_or_disable("cma")
@@ -219,9 +234,28 @@ class Ucx(AutotoolsPackage, CudaPackage):
if "%aocc" in spec:
args.append("LDFLAGS=-fuse-ld=bfd")
+ if "+rocm" in spec:
+ rocm_flags = " ".join(
+ [
+ "-I" + self.spec["hip"].prefix.include,
+ "-I" + self.spec["hip"].prefix.include.hip,
+ "-I" + self.spec["hsa-rocr-dev"].prefix.include.hsa,
+ "-L" + self.spec["hip"].prefix.lib,
+ "-L" + self.spec["hsa-rocr-dev"].prefix.lib,
+ ]
+ )
+ args.append("--with-rocm=" + rocm_flags)
+ else:
+ args.append("--without-rocm")
+
return args
@run_after("install")
def drop_examples(self):
if self.spec.satisfies("~examples"):
shutil.rmtree(join_path(self.spec.prefix, "share", "ucx", "examples"))
+
+ @run_after("install")
+ def install_gtest(self):
+ if self.spec.satisfies("+gtest"):
+ install_tree("test", self.spec.prefix.test)