pytorch

Форк
0
/
build.bzl 
327 строк · 11.2 Кб
1
load(
2
    ":ufunc_defs.bzl",
3
    "aten_ufunc_generated_cpu_kernel_sources",
4
    "aten_ufunc_generated_cpu_sources",
5
    "aten_ufunc_generated_cuda_sources",
6
)
7

8
def define_targets(rules):
9
    rules.cc_library(
10
        name = "caffe2_core_macros",
11
        hdrs = [":caffe2_core_macros_h"],
12
    )
13

14
    rules.cmake_configure_file(
15
        name = "caffe2_core_macros_h",
16
        src = "caffe2/core/macros.h.in",
17
        out = "caffe2/core/macros.h",
18
        definitions = [
19
            "CAFFE2_BUILD_SHARED_LIBS",
20
            "CAFFE2_PERF_WITH_AVX",
21
            "CAFFE2_PERF_WITH_AVX2",
22
            "CAFFE2_USE_EXCEPTION_PTR",
23
            "CAFFE2_USE_CUDNN",
24
            "USE_MKLDNN",
25
            "CAFFE2_USE_ITT",
26
            "USE_ROCM_KERNEL_ASSERT",
27
            "EIGEN_MPL2_ONLY",
28
        ],
29
    )
30

31
    rules.cc_library(
32
        name = "caffe2_serialize",
33
        srcs = [
34
            "caffe2/serialize/file_adapter.cc",
35
            "caffe2/serialize/inline_container.cc",
36
            "caffe2/serialize/istream_adapter.cc",
37
            "caffe2/serialize/read_adapter_interface.cc",
38
        ],
39
        copts = ["-fexceptions"],
40
        tags = [
41
            "-fbcode",
42
            "supermodule:android/default/pytorch",
43
            "supermodule:ios/default/public.pytorch",
44
            "xplat",
45
        ],
46
        visibility = ["//visibility:public"],
47
        deps = [
48
            ":caffe2_headers",
49
            "//c10",
50
            "//third_party/miniz-2.1.0:miniz",
51
            "@com_github_glog//:glog",
52
        ],
53
    )
54

55
    #
56
    # ATen generated code
57
    # You need to keep this is sync with the files written out
58
    # by gen.py (in the cmake build system, we track generated files
59
    # via generated_cpp.txt and generated_cpp.txt-cuda
60
    #
61
    # Sure would be nice to use gen.py to create this list dynamically
62
    # instead of hardcoding, no? Well, we can't, as discussed in this
63
    # thread:
64
    # https://fb.facebook.com/groups/askbuck/permalink/1924258337622772/
65

66
    gen_aten_srcs = [
67
        "aten/src/ATen/native/native_functions.yaml",
68
        "aten/src/ATen/native/tags.yaml",
69
    ] + rules.glob(["aten/src/ATen/templates/*"])
70

71
    gen_aten_cmd = " ".join([
72
        "$(execpath //torchgen:gen)",
73
        "--install_dir=$(RULEDIR)",
74
        "--source-path aten/src/ATen",
75
        "--aoti_install_dir=$(RULEDIR)/torch/csrc/inductor/aoti_torch/generated"
76
    ] + (["--static_dispatch_backend CPU"] if rules.is_cpu_static_dispatch_build() else []))
77

78
    gen_aten_outs_cuda = (
79
        GENERATED_H_CUDA + GENERATED_CPP_CUDA + GENERATED_AOTI_CUDA_CPP +
80
        aten_ufunc_generated_cuda_sources()
81
    )
82

83
    gen_aten_outs = (
84
        GENERATED_H + GENERATED_H_CORE +
85
        GENERATED_CPP + GENERATED_CPP_CORE +
86
        GENERATED_AOTI_CPP +
87
        aten_ufunc_generated_cpu_sources() +
88
        aten_ufunc_generated_cpu_kernel_sources() + [
89
            "Declarations.yaml",
90
        ] + gen_aten_outs_cuda
91
    )
92

93
    rules.genrule(
94
        name = "gen_aten",
95
        srcs = gen_aten_srcs,
96
        outs = gen_aten_outs,
97
        cmd = gen_aten_cmd,
98
        tools = ["//torchgen:gen"],
99
    )
100

101
    rules.genrule(
102
        name = "gen_aten_hip",
103
        srcs = gen_aten_srcs,
104
        outs = gen_aten_outs_cuda,
105
        cmd = gen_aten_cmd + " --rocm",
106
        features = ["-create_bazel_outputs"],
107
        tags = ["-bazel"],
108
        tools = ["//torchgen:gen"],
109
    )
110

111
    rules.genrule(
112
        name = "generate-code",
113
        srcs = [
114
            ":DispatchKeyNativeFunctions.cpp",
115
            ":DispatchKeyNativeFunctions.h",
116
            ":LazyIr.h",
117
            ":LazyNonNativeIr.h",
118
            ":RegisterDispatchDefinitions.ini",
119
            ":RegisterDispatchKey.cpp",
120
            ":native_functions.yaml",
121
            ":shape_inference.h",
122
            ":tags.yaml",
123
            ":ts_native_functions.cpp",
124
            ":ts_native_functions.yaml",
125
        ],
126
        outs = GENERATED_AUTOGRAD_CPP + GENERATED_AUTOGRAD_PYTHON + GENERATED_TESTING_PY,
127
        cmd = "$(execpath //tools/setup_helpers:generate_code) " +
128
              "--gen-dir=$(RULEDIR) " +
129
              "--native-functions-path $(location :native_functions.yaml) " +
130
              "--tags-path=$(location :tags.yaml) " +
131
              "--gen_lazy_ts_backend",
132
        tools = ["//tools/setup_helpers:generate_code"],
133
    )
134

135
    rules.cc_library(
136
        name = "generated-autograd-headers",
137
        hdrs = [":{}".format(h) for h in _GENERATED_AUTOGRAD_CPP_HEADERS + _GENERATED_AUTOGRAD_PYTHON_HEADERS],
138
        visibility = ["//visibility:public"],
139
    )
140

141
    rules.genrule(
142
        name = "version_h",
143
        srcs = [
144
            ":torch/csrc/api/include/torch/version.h.in",
145
            ":version.txt",
146
        ],
147
        outs = ["torch/csrc/api/include/torch/version.h"],
148
        cmd = "$(execpath //tools/setup_helpers:gen_version_header) " +
149
              "--template-path $(location :torch/csrc/api/include/torch/version.h.in) " +
150
              "--version-path $(location :version.txt) --output-path $@ ",
151
        tools = ["//tools/setup_helpers:gen_version_header"],
152
    )
153

154
#
155
# ATen generated code
156
# You need to keep this is sync with the files written out
157
# by gen.py (in the cmake build system, we track generated files
158
# via generated_cpp.txt and generated_cpp.txt-cuda
159
#
160
# Sure would be nice to use gen.py to create this list dynamically
161
# instead of hardcoding, no? Well, we can't, as discussed in this
162
# thread:
163
# https://fb.facebook.com/groups/askbuck/permalink/1924258337622772/
164

165
GENERATED_H = [
166
    "Functions.h",
167
    "NativeFunctions.h",
168
    "NativeMetaFunctions.h",
169
    "FunctionalInverses.h",
170
    "RedispatchFunctions.h",
171
    "RegistrationDeclarations.h",
172
    "VmapGeneratedPlumbing.h",
173
]
174

175
GENERATED_H_CORE = [
176
    "Operators.h",
177
    # CPUFunctions.h (and likely similar headers) need to be part of core because
178
    # of the static dispatch build: TensorBody.h directly includes CPUFunctions.h.
179
    # The disinction looks pretty arbitrary though; maybe will can kill core
180
    # and merge the two?
181
    "CPUFunctions.h",
182
    "CPUFunctions_inl.h",
183
    "CompositeExplicitAutogradFunctions.h",
184
    "CompositeExplicitAutogradFunctions_inl.h",
185
    "CompositeExplicitAutogradNonFunctionalFunctions.h",
186
    "CompositeExplicitAutogradNonFunctionalFunctions_inl.h",
187
    "CompositeImplicitAutogradFunctions.h",
188
    "CompositeImplicitAutogradFunctions_inl.h",
189
    "CompositeImplicitAutogradNestedTensorFunctions.h",
190
    "CompositeImplicitAutogradNestedTensorFunctions_inl.h",
191
    "MetaFunctions.h",
192
    "MetaFunctions_inl.h",
193
    "core/TensorBody.h",
194
    "MethodOperators.h",
195
    "core/aten_interned_strings.h",
196
    "core/enum_tag.h",
197
]
198

199
GENERATED_H_CUDA = [
200
    "CUDAFunctions.h",
201
    "CUDAFunctions_inl.h",
202
]
203

204
GENERATED_CPP_CUDA = [
205
    "RegisterCUDA.cpp",
206
    "RegisterNestedTensorCUDA.cpp",
207
    "RegisterSparseCUDA.cpp",
208
    "RegisterSparseCsrCUDA.cpp",
209
    "RegisterQuantizedCUDA.cpp",
210
]
211

212
GENERATED_CPP = [
213
    "Functions.cpp",
214
    "RegisterBackendSelect.cpp",
215
    "RegisterCPU.cpp",
216
    "RegisterQuantizedCPU.cpp",
217
    "RegisterNestedTensorCPU.cpp",
218
    "RegisterSparseCPU.cpp",
219
    "RegisterSparseCsrCPU.cpp",
220
    "RegisterMkldnnCPU.cpp",
221
    "RegisterCompositeImplicitAutograd.cpp",
222
    "RegisterCompositeImplicitAutogradNestedTensor.cpp",
223
    "RegisterZeroTensor.cpp",
224
    "RegisterMeta.cpp",
225
    "RegisterQuantizedMeta.cpp",
226
    "RegisterNestedTensorMeta.cpp",
227
    "RegisterSparseMeta.cpp",
228
    "RegisterCompositeExplicitAutograd.cpp",
229
    "RegisterCompositeExplicitAutogradNonFunctional.cpp",
230
    "CompositeViewCopyKernels.cpp",
231
    "RegisterSchema.cpp",
232
    "RegisterFunctionalization_0.cpp",
233
    "RegisterFunctionalization_1.cpp",
234
    "RegisterFunctionalization_2.cpp",
235
    "RegisterFunctionalization_3.cpp",
236
]
237

238
GENERATED_CPP_CORE = [
239
    "Operators_0.cpp",
240
    "Operators_1.cpp",
241
    "Operators_2.cpp",
242
    "Operators_3.cpp",
243
    "Operators_4.cpp",
244
    "core/ATenOpList.cpp",
245
    "core/TensorMethods.cpp",
246
]
247

248
# These lists are temporarily living in and exported from the shared
249
# structure so that an internal build that lives under a different
250
# root can access them. These could technically live in a separate
251
# file in the same directory but that would require extra work to
252
# ensure that file is synced to both Meta internal repositories and
253
# GitHub. This problem will go away when the targets downstream of
254
# generate-code that use these lists are moved into the shared
255
# structure as well.
256

257
_GENERATED_AUTOGRAD_PYTHON_HEADERS = [
258
    "torch/csrc/autograd/generated/python_functions.h",
259
    "torch/csrc/autograd/generated/python_return_types.h",
260
]
261

262
_GENERATED_AUTOGRAD_CPP_HEADERS = [
263
    "torch/csrc/autograd/generated/Functions.h",
264
    "torch/csrc/autograd/generated/VariableType.h",
265
    "torch/csrc/autograd/generated/ViewFuncs.h",
266
    "torch/csrc/autograd/generated/variable_factories.h",
267
]
268

269
GENERATED_TESTING_PY = [
270
    "torch/testing/_internal/generated/annotated_fn_args.py",
271
]
272

273
GENERATED_LAZY_H = [
274
    "torch/csrc/lazy/generated/LazyIr.h",
275
    "torch/csrc/lazy/generated/LazyNonNativeIr.h",
276
    "torch/csrc/lazy/generated/LazyNativeFunctions.h",
277
]
278

279
_GENERATED_AUTOGRAD_PYTHON_CPP = [
280
    "torch/csrc/autograd/generated/python_functions_0.cpp",
281
    "torch/csrc/autograd/generated/python_functions_1.cpp",
282
    "torch/csrc/autograd/generated/python_functions_2.cpp",
283
    "torch/csrc/autograd/generated/python_functions_3.cpp",
284
    "torch/csrc/autograd/generated/python_functions_4.cpp",
285
    "torch/csrc/autograd/generated/python_nn_functions.cpp",
286
    "torch/csrc/autograd/generated/python_nested_functions.cpp",
287
    "torch/csrc/autograd/generated/python_fft_functions.cpp",
288
    "torch/csrc/autograd/generated/python_linalg_functions.cpp",
289
    "torch/csrc/autograd/generated/python_return_types.cpp",
290
    "torch/csrc/autograd/generated/python_enum_tag.cpp",
291
    "torch/csrc/autograd/generated/python_sparse_functions.cpp",
292
    "torch/csrc/autograd/generated/python_special_functions.cpp",
293
    "torch/csrc/autograd/generated/python_torch_functions_0.cpp",
294
    "torch/csrc/autograd/generated/python_torch_functions_1.cpp",
295
    "torch/csrc/autograd/generated/python_torch_functions_2.cpp",
296
    "torch/csrc/autograd/generated/python_variable_methods.cpp",
297
]
298

299
GENERATED_AUTOGRAD_PYTHON = _GENERATED_AUTOGRAD_PYTHON_HEADERS + _GENERATED_AUTOGRAD_PYTHON_CPP
300

301
GENERATED_AUTOGRAD_CPP = [
302
    "torch/csrc/autograd/generated/Functions.cpp",
303
    "torch/csrc/autograd/generated/VariableType_0.cpp",
304
    "torch/csrc/autograd/generated/VariableType_1.cpp",
305
    "torch/csrc/autograd/generated/VariableType_2.cpp",
306
    "torch/csrc/autograd/generated/VariableType_3.cpp",
307
    "torch/csrc/autograd/generated/VariableType_4.cpp",
308
    "torch/csrc/autograd/generated/ViewFuncs.cpp",
309
    "torch/csrc/autograd/generated/TraceType_0.cpp",
310
    "torch/csrc/autograd/generated/TraceType_1.cpp",
311
    "torch/csrc/autograd/generated/TraceType_2.cpp",
312
    "torch/csrc/autograd/generated/TraceType_3.cpp",
313
    "torch/csrc/autograd/generated/TraceType_4.cpp",
314
    "torch/csrc/autograd/generated/ADInplaceOrViewType_0.cpp",
315
    "torch/csrc/autograd/generated/ADInplaceOrViewType_1.cpp",
316
    "torch/csrc/lazy/generated/LazyNativeFunctions.cpp",
317
    "torch/csrc/lazy/generated/RegisterAutogradLazy.cpp",
318
    "torch/csrc/lazy/generated/RegisterLazy.cpp",
319
] + _GENERATED_AUTOGRAD_CPP_HEADERS + GENERATED_LAZY_H
320

321
GENERATED_AOTI_CPP = [
322
    "torch/csrc/inductor/aoti_torch/generated/c_shim_cpu.cpp",
323
]
324

325
GENERATED_AOTI_CUDA_CPP = [
326
    "torch/csrc/inductor/aoti_torch/generated/c_shim_cuda.cpp",
327
]
328

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.