2025-01-02 06:40:28 -08:00
|
|
|
# Copyright Spack Project Developers. See COPYRIGHT file for details.
|
2022-10-05 05:08:32 -07:00
|
|
|
#
|
|
|
|
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
|
|
|
|
|
|
|
from spack.package import *
|
|
|
|
|
|
|
|
|
|
|
|
class AwsOfiNccl(AutotoolsPackage):
|
|
|
|
"""AWS OFI NCCL is a plug-in which enables EC2 developers to use
|
|
|
|
libfabric as a network provider while running NVIDIA's NCCL based
|
|
|
|
applications."""
|
|
|
|
|
|
|
|
homepage = "https://github.com/aws/aws-ofi-nccl"
|
2024-03-23 01:49:00 +01:00
|
|
|
url = "https://github.com/aws/aws-ofi-nccl/archive/v0.0.0.tar.gz"
|
2022-10-05 05:08:32 -07:00
|
|
|
git = "https://github.com/aws/aws-ofi-nccl.git"
|
|
|
|
|
2023-02-02 06:07:25 +01:00
|
|
|
maintainers("bvanessen")
|
2022-10-05 05:08:32 -07:00
|
|
|
|
2023-04-19 23:17:47 +02:00
|
|
|
version("master", branch="master")
|
2024-11-21 13:37:57 +01:00
|
|
|
version("1.13.0", sha256="50dd231a0a99cec29300df46b8e828139ced15322a3c3c41b1d22dcc9a62ec02")
|
|
|
|
version("1.12.1", sha256="821f0929c016e5448785bbc6795af5096559ecfc6c9479eb3818cafa61424576")
|
|
|
|
version("1.12.0", sha256="93029207103b75f4dc15f023b3b8692851202b52b7e2824723dd5d328f0ea65b")
|
|
|
|
version("1.11.1", sha256="a300e620e03ba3cc0915f9d466232ff0bf6c84edf4e2cd93592d53cf2a62741b")
|
|
|
|
version("1.11.0", sha256="45d935133b183c945c16b70d8428d676a554faf5bd922b7909e9f1ec55ba6168")
|
|
|
|
version("1.10.0", sha256="ed63f627b42c7b0f7312ce2916a3c4dfeb5145f78b492c0d1e0d0a6828a0474c")
|
|
|
|
version("1.9.2", sha256="f763771e511ae3bc7bb708795f9802867a4a2bc4e4df6a265c7f6a033e9a8b9a")
|
|
|
|
version("1.9.1", sha256="3ee01258674e70d6966eb6d319461f9b882afae618e217e0ae7ec03d26169b35")
|
|
|
|
version("1.9.0", sha256="8d6d0469110a89b5431836d263860fb60fde7beccb26f553de41dca1feb61b51")
|
|
|
|
version("1.8.1", sha256="beb59959be0f60b891f9549f4df51b394e97e739416c88c3436e75516fe067c8")
|
2024-03-23 01:49:00 +01:00
|
|
|
version("1.8.0", sha256="a2f1750d4908924985335e513186353d0c4d9a5d27b1a759f6aa31a10e74c06d")
|
|
|
|
version("1.7.4", sha256="472bbc977ce37d0cf9239b8e366f4f247226a984eb8c487aadd884af53f00e13")
|
|
|
|
version("1.7.3", sha256="7a49b530eb0fa5e262c1fcf3412289bc1d538c15290435c579d5e7f08d806fd4")
|
|
|
|
version("1.7.2", sha256="c89bbe5fa49a7036eb873c01c8fdc5693238ae010ddcaf10b10fdc88aec6e56a")
|
|
|
|
version("1.7.1", sha256="d50a160c7aba76445e5c895fba0f3dbfdec51f702d218168a5e5017806cf0fb0")
|
|
|
|
version("1.6.0", sha256="19a6fc91afe9a317fd3154c897fa219eab48fcdddefa66d881f1843c1165f7ee")
|
2022-10-05 05:08:32 -07:00
|
|
|
|
|
|
|
variant("trace", default=False, description="Enable printing trace messages")
|
|
|
|
variant("tests", default=False, description="Build tests")
|
|
|
|
|
treewide style: move depends_on(c,cxx,fortran) with other dependencies, after variants (#49769)
* fix: move depends_on(c,cxx,fortran) with other dependencies, after variants
* treewide style: move depends_on(c,cxx,fortran) with other dependencies, after variants
* treewide style: move depends_on(c,cxx,fortran) with other dependencies, after variant
---------
Co-authored-by: Alec Scott <hi@alecbcs.com>
2025-04-01 11:25:46 -05:00
|
|
|
depends_on("c", type="build") # generated
|
|
|
|
|
2022-10-05 05:08:32 -07:00
|
|
|
depends_on("libfabric")
|
|
|
|
depends_on("cuda")
|
|
|
|
depends_on("nccl")
|
|
|
|
depends_on("mpi")
|
2024-03-23 01:49:00 +01:00
|
|
|
depends_on("hwloc", when="@1.7:")
|
2022-10-05 05:08:32 -07:00
|
|
|
depends_on("autoconf", type="build")
|
|
|
|
depends_on("automake", type="build")
|
|
|
|
depends_on("libtool", type="build")
|
|
|
|
|
2024-03-23 01:49:00 +01:00
|
|
|
def url_for_version(self, version):
|
|
|
|
if version < Version("1.7.0"):
|
|
|
|
return super().url_for_version(version)
|
|
|
|
url_fmt = "https://github.com/aws/aws-ofi-nccl/archive/v{0}-aws.tar.gz"
|
|
|
|
return url_fmt.format(version)
|
|
|
|
|
2022-10-05 05:08:32 -07:00
|
|
|
# To enable this plug-in to work with NCCL add it to the LD_LIBRARY_PATH
|
2025-04-23 15:41:22 +02:00
|
|
|
def setup_run_environment(self, env: EnvironmentModifications) -> None:
|
2025-03-19 08:56:55 +01:00
|
|
|
env.append_path("LD_LIBRARY_PATH", self.prefix.lib)
|
2022-10-05 05:08:32 -07:00
|
|
|
|
|
|
|
# To enable this plug-in to work with NCCL add it to the LD_LIBRARY_PATH
|
2025-04-23 15:41:22 +02:00
|
|
|
def setup_dependent_run_environment(
|
|
|
|
self, env: EnvironmentModifications, dependent_spec: Spec
|
|
|
|
) -> None:
|
2025-03-19 08:56:55 +01:00
|
|
|
env.append_path("LD_LIBRARY_PATH", self.prefix.lib)
|
2022-10-05 05:08:32 -07:00
|
|
|
|
|
|
|
def configure_args(self):
|
|
|
|
spec = self.spec
|
|
|
|
args = []
|
|
|
|
|
|
|
|
# Always set configure's external paths to use the Spack
|
|
|
|
# provided dependencies
|
|
|
|
args.extend(
|
|
|
|
[
|
|
|
|
"--with-libfabric={0}".format(spec["libfabric"].prefix),
|
|
|
|
"--with-cuda={0}".format(spec["cuda"].prefix),
|
|
|
|
"--with-nccl={0}".format(spec["nccl"].prefix),
|
|
|
|
"--with-mpi={0}".format(spec["mpi"].prefix),
|
|
|
|
]
|
|
|
|
)
|
2024-03-23 01:49:00 +01:00
|
|
|
if spec.satisfies("@1.7:"):
|
|
|
|
args.extend(["--with-hwloc={0}".format(spec["hwloc"].prefix)])
|
2022-10-05 05:08:32 -07:00
|
|
|
|
|
|
|
args.extend(self.enable_or_disable("trace"))
|
|
|
|
args.extend(self.enable_or_disable("tests"))
|
|
|
|
|
|
|
|
return args
|