1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74
|
From bde001bcdf8d14f9b6d6c3c216ab8c00f74b3c08 Mon Sep 17 00:00:00 2001
From: Scott Wittenburg <scott.wittenburg@kitware.com>
Date: Tue, 14 Nov 2023 13:46:37 -0700
Subject: [PATCH] mpich: Support ch3:sock for a non busy-polling option
---
var/spack/repos/builtin/packages/mpich/package.py | 15 ++++++++++-----
1 file changed, 10 insertions(+), 5 deletions(-)
diff --git a/var/spack/repos/builtin/packages/mpich/package.py b/var/spack/repos/builtin/packages/mpich/package.py
index b66c0b8fd4..ccc1082e79 100644
--- a/var/spack/repos/builtin/packages/mpich/package.py
+++ b/var/spack/repos/builtin/packages/mpich/package.py
@@ -70,16 +70,14 @@ class Mpich(AutotoolsPackage, CudaPackage, ROCmPackage):
description="""Abstract Device Interface (ADI)
implementation. The ch4 device is in experimental state for versions
before 3.4.""",
- values=("ch3", "ch4"),
+ values=("ch3", "ch4", "ch3:sock"),
multi=False,
)
variant(
"netmod",
default="ofi",
description="""Network module. Only single netmod builds are
-supported. For ch3 device configurations, this presumes the
-ch3:nemesis communication channel. ch3:sock is not supported by this
-spack package at this time.""",
+supported, and netmod is ignored if device is ch3:sock.""",
values=("tcp", "mxm", "ofi", "ucx"),
multi=False,
)
@@ -121,6 +119,7 @@ class Mpich(AutotoolsPackage, CudaPackage, ROCmPackage):
depends_on("yaksa+cuda", when="+cuda ^yaksa")
depends_on("yaksa+rocm", when="+rocm ^yaksa")
conflicts("datatype-engine=yaksa", when="device=ch3")
+ conflicts("datatype-engine=yaksa", when="device=ch3:sock")
variant(
"hcoll",
@@ -135,8 +134,10 @@ class Mpich(AutotoolsPackage, CudaPackage, ROCmPackage):
# overriding the variant from CudaPackage.
conflicts("+cuda", when="@:3.3")
conflicts("+cuda", when="device=ch3")
+ conflicts("+cuda", when="device=ch3:sock")
conflicts("+rocm", when="@:4.0")
conflicts("+rocm", when="device=ch3")
+ conflicts("+rocm", when="device=ch3:sock")
conflicts("+cuda", when="+rocm", msg="CUDA must be disabled to support ROCm")
provides("mpi@:4.0")
@@ -271,6 +272,7 @@ class Mpich(AutotoolsPackage, CudaPackage, ROCmPackage):
conflicts("netmod=tcp", when="device=ch4")
conflicts("pmi=pmi2", when="device=ch3 netmod=ofi")
conflicts("pmi=pmix", when="device=ch3")
+ conflicts("pmi=pmix", when="device=ch3:sock")
conflicts("pmi=pmix", when="+hydra")
conflicts("pmi=cray", when="+hydra")
@@ -556,7 +558,10 @@ def configure_args(self):
elif "device=ch3" in spec:
device_config = "--with-device=ch3:nemesis:"
- if "netmod=ucx" in spec:
+ # Do not apply any netmod if device is ch3:sock
+ if "device=ch3:sock" in spec:
+ device_config = "--with-device=ch3:sock"
+ elif "netmod=ucx" in spec:
device_config += "ucx"
elif "netmod=ofi" in spec:
device_config += "ofi"
--
2.25.1
|