xref: /aosp_15_r20/external/pytorch/third_party/tensorpipe.BUILD (revision da0073e96a02ea20f0ac840b70461e3646d07c45)
1*da0073e9SAndroid Build Coastguard Workerload("@rules_cc//cc:defs.bzl", "cc_library")
2*da0073e9SAndroid Build Coastguard Workerload("@pytorch//third_party:substitution.bzl", "header_template_rule")
3*da0073e9SAndroid Build Coastguard Worker
4*da0073e9SAndroid Build Coastguard WorkerLIBUV_COMMON_SRCS = [
5*da0073e9SAndroid Build Coastguard Worker    "third_party/libuv/src/fs-poll.c",
6*da0073e9SAndroid Build Coastguard Worker    "third_party/libuv/src/idna.c",
7*da0073e9SAndroid Build Coastguard Worker    "third_party/libuv/src/inet.c",
8*da0073e9SAndroid Build Coastguard Worker    "third_party/libuv/src/random.c",
9*da0073e9SAndroid Build Coastguard Worker    "third_party/libuv/src/strscpy.c",
10*da0073e9SAndroid Build Coastguard Worker    "third_party/libuv/src/threadpool.c",
11*da0073e9SAndroid Build Coastguard Worker    "third_party/libuv/src/timer.c",
12*da0073e9SAndroid Build Coastguard Worker    "third_party/libuv/src/uv-common.c",
13*da0073e9SAndroid Build Coastguard Worker    "third_party/libuv/src/uv-data-getter-setters.c",
14*da0073e9SAndroid Build Coastguard Worker    "third_party/libuv/src/version.c",
15*da0073e9SAndroid Build Coastguard Worker]
16*da0073e9SAndroid Build Coastguard Worker
17*da0073e9SAndroid Build Coastguard WorkerLIBUV_POSIX_SRCS = [
18*da0073e9SAndroid Build Coastguard Worker    "third_party/libuv/src/unix/async.c",
19*da0073e9SAndroid Build Coastguard Worker    "third_party/libuv/src/unix/core.c",
20*da0073e9SAndroid Build Coastguard Worker    "third_party/libuv/src/unix/dl.c",
21*da0073e9SAndroid Build Coastguard Worker    "third_party/libuv/src/unix/fs.c",
22*da0073e9SAndroid Build Coastguard Worker    "third_party/libuv/src/unix/getaddrinfo.c",
23*da0073e9SAndroid Build Coastguard Worker    "third_party/libuv/src/unix/getnameinfo.c",
24*da0073e9SAndroid Build Coastguard Worker    "third_party/libuv/src/unix/loop.c",
25*da0073e9SAndroid Build Coastguard Worker    "third_party/libuv/src/unix/loop-watcher.c",
26*da0073e9SAndroid Build Coastguard Worker    "third_party/libuv/src/unix/pipe.c",
27*da0073e9SAndroid Build Coastguard Worker    "third_party/libuv/src/unix/poll.c",
28*da0073e9SAndroid Build Coastguard Worker    "third_party/libuv/src/unix/process.c",
29*da0073e9SAndroid Build Coastguard Worker    "third_party/libuv/src/unix/random-devurandom.c",
30*da0073e9SAndroid Build Coastguard Worker    "third_party/libuv/src/unix/signal.c",
31*da0073e9SAndroid Build Coastguard Worker    "third_party/libuv/src/unix/stream.c",
32*da0073e9SAndroid Build Coastguard Worker    "third_party/libuv/src/unix/tcp.c",
33*da0073e9SAndroid Build Coastguard Worker    "third_party/libuv/src/unix/thread.c",
34*da0073e9SAndroid Build Coastguard Worker    "third_party/libuv/src/unix/tty.c",
35*da0073e9SAndroid Build Coastguard Worker    "third_party/libuv/src/unix/udp.c",
36*da0073e9SAndroid Build Coastguard Worker]
37*da0073e9SAndroid Build Coastguard Worker
38*da0073e9SAndroid Build Coastguard WorkerLIBUV_LINUX_SRCS = LIBUV_POSIX_SRCS + [
39*da0073e9SAndroid Build Coastguard Worker    "third_party/libuv/src/unix/proctitle.c",
40*da0073e9SAndroid Build Coastguard Worker    "third_party/libuv/src/unix/linux-core.c",
41*da0073e9SAndroid Build Coastguard Worker    "third_party/libuv/src/unix/linux-inotify.c",
42*da0073e9SAndroid Build Coastguard Worker    "third_party/libuv/src/unix/linux-syscalls.c",
43*da0073e9SAndroid Build Coastguard Worker    "third_party/libuv/src/unix/procfs-exepath.c",
44*da0073e9SAndroid Build Coastguard Worker    "third_party/libuv/src/unix/random-getrandom.c",
45*da0073e9SAndroid Build Coastguard Worker    "third_party/libuv/src/unix/random-sysctl-linux.c",
46*da0073e9SAndroid Build Coastguard Worker]
47*da0073e9SAndroid Build Coastguard Worker
48*da0073e9SAndroid Build Coastguard Workercc_library(
49*da0073e9SAndroid Build Coastguard Worker    name = "libuv",
50*da0073e9SAndroid Build Coastguard Worker    srcs = LIBUV_COMMON_SRCS + LIBUV_LINUX_SRCS,
51*da0073e9SAndroid Build Coastguard Worker    includes = [
52*da0073e9SAndroid Build Coastguard Worker        "third_party/libuv/include",
53*da0073e9SAndroid Build Coastguard Worker        "third_party/libuv/src",
54*da0073e9SAndroid Build Coastguard Worker    ],
55*da0073e9SAndroid Build Coastguard Worker    hdrs = glob(
56*da0073e9SAndroid Build Coastguard Worker        [
57*da0073e9SAndroid Build Coastguard Worker            "third_party/libuv/include/*.h",
58*da0073e9SAndroid Build Coastguard Worker            "third_party/libuv/include/uv/*.h",
59*da0073e9SAndroid Build Coastguard Worker            "third_party/libuv/src/*.h",
60*da0073e9SAndroid Build Coastguard Worker            "third_party/libuv/src/unix/*.h",
61*da0073e9SAndroid Build Coastguard Worker        ],
62*da0073e9SAndroid Build Coastguard Worker    ),
63*da0073e9SAndroid Build Coastguard Worker    visibility = ["//visibility:public"],
64*da0073e9SAndroid Build Coastguard Worker)
65*da0073e9SAndroid Build Coastguard Worker
66*da0073e9SAndroid Build Coastguard Workercc_library(
67*da0073e9SAndroid Build Coastguard Worker    name = "libnop",
68*da0073e9SAndroid Build Coastguard Worker    srcs = [],
69*da0073e9SAndroid Build Coastguard Worker    includes = ["third_party/libnop/include"],
70*da0073e9SAndroid Build Coastguard Worker    hdrs = glob(["third_party/libnop/include/**/*.h"]),
71*da0073e9SAndroid Build Coastguard Worker)
72*da0073e9SAndroid Build Coastguard Worker
73*da0073e9SAndroid Build Coastguard Workerheader_template_rule(
74*da0073e9SAndroid Build Coastguard Worker    name = "tensorpipe_cpu_config_header",
75*da0073e9SAndroid Build Coastguard Worker    src = "tensorpipe/config.h.in",
76*da0073e9SAndroid Build Coastguard Worker    out = "tensorpipe/config.h",
77*da0073e9SAndroid Build Coastguard Worker    substitutions = {
78*da0073e9SAndroid Build Coastguard Worker        "#cmakedefine01 TENSORPIPE_HAS_SHM_TRANSPORT": "#define TENSORPIPE_HAS_SHM_TRANSPORT 1",
79*da0073e9SAndroid Build Coastguard Worker        "#cmakedefine01 TENSORPIPE_HAS_IBV_TRANSPORT": "#define TENSORPIPE_HAS_IBV_TRANSPORT 1",
80*da0073e9SAndroid Build Coastguard Worker        "#cmakedefine01 TENSORPIPE_HAS_CMA_CHANNEL": "#define TENSORPIPE_HAS_CMA_CHANNEL 1",
81*da0073e9SAndroid Build Coastguard Worker    },
82*da0073e9SAndroid Build Coastguard Worker)
83*da0073e9SAndroid Build Coastguard Worker
84*da0073e9SAndroid Build Coastguard Workerheader_template_rule(
85*da0073e9SAndroid Build Coastguard Worker    name = "tensorpipe_cuda_config_header",
86*da0073e9SAndroid Build Coastguard Worker    src = "tensorpipe/config_cuda.h.in",
87*da0073e9SAndroid Build Coastguard Worker    out = "tensorpipe/config_cuda.h",
88*da0073e9SAndroid Build Coastguard Worker    substitutions = {
89*da0073e9SAndroid Build Coastguard Worker        "#cmakedefine01 TENSORPIPE_HAS_CUDA_IPC_CHANNEL": "#define TENSORPIPE_HAS_CUDA_IPC_CHANNEL 1",
90*da0073e9SAndroid Build Coastguard Worker        "#cmakedefine01 TENSORPIPE_HAS_CUDA_GDR_CHANNEL": "#define TENSORPIPE_HAS_CUDA_GDR_CHANNEL 1",
91*da0073e9SAndroid Build Coastguard Worker    },
92*da0073e9SAndroid Build Coastguard Worker)
93*da0073e9SAndroid Build Coastguard Worker
94*da0073e9SAndroid Build Coastguard Worker# We explicitly list the CUDA headers & sources, and we consider everything else
95*da0073e9SAndroid Build Coastguard Worker# as CPU (using a catch-all glob). This is both because there's fewer CUDA files
96*da0073e9SAndroid Build Coastguard Worker# (thus making it easier to list them exhaustively) and because it will make it
97*da0073e9SAndroid Build Coastguard Worker# more likely to catch a misclassified file: if we forget to mark a file as CUDA
98*da0073e9SAndroid Build Coastguard Worker# we'll try to build it on CPU and that's likely to fail.
99*da0073e9SAndroid Build Coastguard Worker
100*da0073e9SAndroid Build Coastguard WorkerTENSORPIPE_CUDA_HEADERS = [
101*da0073e9SAndroid Build Coastguard Worker    "tensorpipe/tensorpipe_cuda.h",
102*da0073e9SAndroid Build Coastguard Worker    "tensorpipe/channel/cuda_basic/*.h",
103*da0073e9SAndroid Build Coastguard Worker    "tensorpipe/channel/cuda_gdr/*.h",
104*da0073e9SAndroid Build Coastguard Worker    "tensorpipe/channel/cuda_ipc/*.h",
105*da0073e9SAndroid Build Coastguard Worker    "tensorpipe/channel/cuda_xth/*.h",
106*da0073e9SAndroid Build Coastguard Worker    "tensorpipe/common/cuda.h",
107*da0073e9SAndroid Build Coastguard Worker    "tensorpipe/common/cuda_buffer.h",
108*da0073e9SAndroid Build Coastguard Worker    "tensorpipe/common/cuda_lib.h",
109*da0073e9SAndroid Build Coastguard Worker    "tensorpipe/common/cuda_loop.h",
110*da0073e9SAndroid Build Coastguard Worker    "tensorpipe/common/nvml_lib.h",
111*da0073e9SAndroid Build Coastguard Worker]
112*da0073e9SAndroid Build Coastguard Worker
113*da0073e9SAndroid Build Coastguard WorkerTENSORPIPE_CUDA_SOURCES = [
114*da0073e9SAndroid Build Coastguard Worker    "tensorpipe/channel/cuda_basic/*.cc",
115*da0073e9SAndroid Build Coastguard Worker    "tensorpipe/channel/cuda_gdr/*.cc",
116*da0073e9SAndroid Build Coastguard Worker    "tensorpipe/channel/cuda_ipc/*.cc",
117*da0073e9SAndroid Build Coastguard Worker    "tensorpipe/channel/cuda_xth/*.cc",
118*da0073e9SAndroid Build Coastguard Worker    "tensorpipe/common/cuda_buffer.cc",
119*da0073e9SAndroid Build Coastguard Worker    "tensorpipe/common/cuda_loop.cc",
120*da0073e9SAndroid Build Coastguard Worker]
121*da0073e9SAndroid Build Coastguard Worker
122*da0073e9SAndroid Build Coastguard WorkerTENSORPIPE_CPU_HEADERS = glob(
123*da0073e9SAndroid Build Coastguard Worker    [
124*da0073e9SAndroid Build Coastguard Worker        "tensorpipe/*.h",
125*da0073e9SAndroid Build Coastguard Worker        "tensorpipe/channel/*.h",
126*da0073e9SAndroid Build Coastguard Worker        "tensorpipe/channel/*/*.h",
127*da0073e9SAndroid Build Coastguard Worker        "tensorpipe/common/*.h",
128*da0073e9SAndroid Build Coastguard Worker        "tensorpipe/core/*.h",
129*da0073e9SAndroid Build Coastguard Worker        "tensorpipe/transport/*.h",
130*da0073e9SAndroid Build Coastguard Worker        "tensorpipe/transport/*/*.h",
131*da0073e9SAndroid Build Coastguard Worker    ],
132*da0073e9SAndroid Build Coastguard Worker    exclude=TENSORPIPE_CUDA_HEADERS)
133*da0073e9SAndroid Build Coastguard Worker
134*da0073e9SAndroid Build Coastguard WorkerTENSORPIPE_CPU_SOURCES = glob(
135*da0073e9SAndroid Build Coastguard Worker    [
136*da0073e9SAndroid Build Coastguard Worker        "tensorpipe/*.cc",
137*da0073e9SAndroid Build Coastguard Worker        "tensorpipe/channel/*.cc",
138*da0073e9SAndroid Build Coastguard Worker        "tensorpipe/channel/*/*.cc",
139*da0073e9SAndroid Build Coastguard Worker        "tensorpipe/common/*.cc",
140*da0073e9SAndroid Build Coastguard Worker        "tensorpipe/core/*.cc",
141*da0073e9SAndroid Build Coastguard Worker        "tensorpipe/transport/*.cc",
142*da0073e9SAndroid Build Coastguard Worker        "tensorpipe/transport/*/*.cc",
143*da0073e9SAndroid Build Coastguard Worker    ],
144*da0073e9SAndroid Build Coastguard Worker    exclude=TENSORPIPE_CUDA_SOURCES)
145*da0073e9SAndroid Build Coastguard Worker
146*da0073e9SAndroid Build Coastguard Workercc_library(
147*da0073e9SAndroid Build Coastguard Worker    name = "tensorpipe_cpu",
148*da0073e9SAndroid Build Coastguard Worker    srcs = TENSORPIPE_CPU_SOURCES,
149*da0073e9SAndroid Build Coastguard Worker    hdrs = TENSORPIPE_CPU_HEADERS + [":tensorpipe_cpu_config_header"],
150*da0073e9SAndroid Build Coastguard Worker    includes = [
151*da0073e9SAndroid Build Coastguard Worker        ".",
152*da0073e9SAndroid Build Coastguard Worker    ],
153*da0073e9SAndroid Build Coastguard Worker    copts = [
154*da0073e9SAndroid Build Coastguard Worker        "-std=c++14",
155*da0073e9SAndroid Build Coastguard Worker    ],
156*da0073e9SAndroid Build Coastguard Worker    visibility = ["//visibility:public"],
157*da0073e9SAndroid Build Coastguard Worker    deps = [
158*da0073e9SAndroid Build Coastguard Worker        ":libnop",
159*da0073e9SAndroid Build Coastguard Worker        ":libuv",
160*da0073e9SAndroid Build Coastguard Worker    ],
161*da0073e9SAndroid Build Coastguard Worker)
162*da0073e9SAndroid Build Coastguard Worker
163*da0073e9SAndroid Build Coastguard Workercc_library(
164*da0073e9SAndroid Build Coastguard Worker    name = "tensorpipe_cuda",
165*da0073e9SAndroid Build Coastguard Worker    srcs = glob(TENSORPIPE_CUDA_SOURCES),
166*da0073e9SAndroid Build Coastguard Worker    hdrs = glob(TENSORPIPE_CUDA_HEADERS) + [":tensorpipe_cuda_config_header"],
167*da0073e9SAndroid Build Coastguard Worker    includes = [
168*da0073e9SAndroid Build Coastguard Worker        ".",
169*da0073e9SAndroid Build Coastguard Worker    ],
170*da0073e9SAndroid Build Coastguard Worker    copts = [
171*da0073e9SAndroid Build Coastguard Worker        "-std=c++14",
172*da0073e9SAndroid Build Coastguard Worker    ],
173*da0073e9SAndroid Build Coastguard Worker    visibility = ["//visibility:public"],
174*da0073e9SAndroid Build Coastguard Worker    deps = [
175*da0073e9SAndroid Build Coastguard Worker        ":tensorpipe_cpu",
176*da0073e9SAndroid Build Coastguard Worker        "@cuda",
177*da0073e9SAndroid Build Coastguard Worker    ],
178*da0073e9SAndroid Build Coastguard Worker)
179