mpich: support ch3:sock for a non busy-polling option (#40964)
This commit is contained in:
parent
4636d6ec62
commit
714a362f94
@ -70,16 +70,14 @@ class Mpich(AutotoolsPackage, CudaPackage, ROCmPackage):
|
|||||||
description="""Abstract Device Interface (ADI)
|
description="""Abstract Device Interface (ADI)
|
||||||
implementation. The ch4 device is in experimental state for versions
|
implementation. The ch4 device is in experimental state for versions
|
||||||
before 3.4.""",
|
before 3.4.""",
|
||||||
values=("ch3", "ch4"),
|
values=("ch3", "ch4", "ch3:sock"),
|
||||||
multi=False,
|
multi=False,
|
||||||
)
|
)
|
||||||
variant(
|
variant(
|
||||||
"netmod",
|
"netmod",
|
||||||
default="ofi",
|
default="ofi",
|
||||||
description="""Network module. Only single netmod builds are
|
description="""Network module. Only single netmod builds are
|
||||||
supported. For ch3 device configurations, this presumes the
|
supported, and netmod is ignored if device is ch3:sock.""",
|
||||||
ch3:nemesis communication channel. ch3:sock is not supported by this
|
|
||||||
spack package at this time.""",
|
|
||||||
values=("tcp", "mxm", "ofi", "ucx"),
|
values=("tcp", "mxm", "ofi", "ucx"),
|
||||||
multi=False,
|
multi=False,
|
||||||
)
|
)
|
||||||
@ -121,6 +119,7 @@ class Mpich(AutotoolsPackage, CudaPackage, ROCmPackage):
|
|||||||
depends_on("yaksa+cuda", when="+cuda ^yaksa")
|
depends_on("yaksa+cuda", when="+cuda ^yaksa")
|
||||||
depends_on("yaksa+rocm", when="+rocm ^yaksa")
|
depends_on("yaksa+rocm", when="+rocm ^yaksa")
|
||||||
conflicts("datatype-engine=yaksa", when="device=ch3")
|
conflicts("datatype-engine=yaksa", when="device=ch3")
|
||||||
|
conflicts("datatype-engine=yaksa", when="device=ch3:sock")
|
||||||
|
|
||||||
variant(
|
variant(
|
||||||
"hcoll",
|
"hcoll",
|
||||||
@ -135,8 +134,10 @@ class Mpich(AutotoolsPackage, CudaPackage, ROCmPackage):
|
|||||||
# overriding the variant from CudaPackage.
|
# overriding the variant from CudaPackage.
|
||||||
conflicts("+cuda", when="@:3.3")
|
conflicts("+cuda", when="@:3.3")
|
||||||
conflicts("+cuda", when="device=ch3")
|
conflicts("+cuda", when="device=ch3")
|
||||||
|
conflicts("+cuda", when="device=ch3:sock")
|
||||||
conflicts("+rocm", when="@:4.0")
|
conflicts("+rocm", when="@:4.0")
|
||||||
conflicts("+rocm", when="device=ch3")
|
conflicts("+rocm", when="device=ch3")
|
||||||
|
conflicts("+rocm", when="device=ch3:sock")
|
||||||
conflicts("+cuda", when="+rocm", msg="CUDA must be disabled to support ROCm")
|
conflicts("+cuda", when="+rocm", msg="CUDA must be disabled to support ROCm")
|
||||||
|
|
||||||
provides("mpi@:4.0")
|
provides("mpi@:4.0")
|
||||||
@ -271,6 +272,7 @@ class Mpich(AutotoolsPackage, CudaPackage, ROCmPackage):
|
|||||||
conflicts("netmod=tcp", when="device=ch4")
|
conflicts("netmod=tcp", when="device=ch4")
|
||||||
conflicts("pmi=pmi2", when="device=ch3 netmod=ofi")
|
conflicts("pmi=pmi2", when="device=ch3 netmod=ofi")
|
||||||
conflicts("pmi=pmix", when="device=ch3")
|
conflicts("pmi=pmix", when="device=ch3")
|
||||||
|
conflicts("pmi=pmix", when="device=ch3:sock")
|
||||||
conflicts("pmi=pmix", when="+hydra")
|
conflicts("pmi=pmix", when="+hydra")
|
||||||
conflicts("pmi=cray", when="+hydra")
|
conflicts("pmi=cray", when="+hydra")
|
||||||
|
|
||||||
@ -556,7 +558,10 @@ def configure_args(self):
|
|||||||
elif "device=ch3" in spec:
|
elif "device=ch3" in spec:
|
||||||
device_config = "--with-device=ch3:nemesis:"
|
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"
|
device_config += "ucx"
|
||||||
elif "netmod=ofi" in spec:
|
elif "netmod=ofi" in spec:
|
||||||
device_config += "ofi"
|
device_config += "ofi"
|
||||||
|
Loading…
Reference in New Issue
Block a user