blob: daa17f15e7655f784a71daa285b54fad1092c5e3 [file] [log] [blame]
load("@rules_cc//cc:defs.bzl", "cc_library")
load("@pytorch//tools/rules:cu.bzl", "cu_library")
load("@pytorch//third_party:substitution.bzl", "template_rule")
load("@pytorch//tools/config:defs.bzl", "if_cuda")
template_rule(
name = "gloo_config_cmake_macros",
src = "gloo/config.h.in",
out = "gloo/config.h",
substitutions = {
"@GLOO_VERSION_MAJOR@": "0",
"@GLOO_VERSION_MINOR@": "5",
"@GLOO_VERSION_PATCH@": "0",
"cmakedefine01 GLOO_USE_CUDA": "define GLOO_USE_CUDA 1",
"cmakedefine01 GLOO_USE_NCCL": "define GLOO_USE_NCCL 0",
"cmakedefine01 GLOO_USE_ROCM": "define GLOO_USE_ROCM 0",
"cmakedefine01 GLOO_USE_RCCL": "define GLOO_USE_RCCL 0",
"cmakedefine01 GLOO_USE_REDIS": "define GLOO_USE_REDIS 0",
"cmakedefine01 GLOO_USE_IBVERBS": "define GLOO_USE_IBVERBS 0",
"cmakedefine01 GLOO_USE_MPI": "define GLOO_USE_MPI 0",
"cmakedefine01 GLOO_USE_AVX": "define GLOO_USE_AVX 0",
"cmakedefine01 GLOO_USE_LIBUV": "define GLOO_USE_LIBUV 0",
# The `GLOO_HAVE_TRANSPORT_TCP_TLS` line should go above the `GLOO_HAVE_TRANSPORT_TCP` in order to properly substitute the template.
"cmakedefine01 GLOO_HAVE_TRANSPORT_TCP_TLS": "define GLOO_HAVE_TRANSPORT_TCP_TLS 1",
"cmakedefine01 GLOO_HAVE_TRANSPORT_TCP": "define GLOO_HAVE_TRANSPORT_TCP 1",
"cmakedefine01 GLOO_HAVE_TRANSPORT_IBVERBS": "define GLOO_HAVE_TRANSPORT_IBVERBS 0",
"cmakedefine01 GLOO_HAVE_TRANSPORT_UV": "define GLOO_HAVE_TRANSPORT_UV 0",
},
)
cc_library(
name = "gloo_headers",
hdrs = glob(
[
"gloo/*.h",
"gloo/common/*.h",
"gloo/rendezvous/*.h",
"gloo/transport/*.h",
"gloo/transport/tcp/*.h",
"gloo/transport/tcp/tls/*.h",
],
exclude = [
"gloo/rendezvous/redis_store.h",
],
) + ["gloo/config.h"],
includes = [
".",
],
)
cu_library(
name = "gloo_cuda",
srcs = [
"gloo/cuda.cu",
"gloo/cuda_private.cu",
],
visibility = ["//visibility:public"],
deps = [
":gloo_headers",
],
alwayslink = True,
)
cc_library(
name = "gloo",
srcs = glob(
[
"gloo/*.cc",
"gloo/common/*.cc",
"gloo/rendezvous/*.cc",
"gloo/transport/*.cc",
"gloo/transport/tcp/*.cc",
],
exclude = [
"gloo/cuda*.cc",
"gloo/common/win.cc",
"gloo/rendezvous/redis_store.cc",
]
) + if_cuda(glob(["gloo/cuda*.cc"])),
copts = [
"-std=c++17",
],
visibility = ["//visibility:public"],
deps = [":gloo_headers"] + if_cuda(
[":gloo_cuda"],
[],
),
)