Skip to content

Commit 6e63c47

Browse files
authored
Split OSS generic ops into their own buck targets
Differential Revision: D82319999 Pull Request resolved: #14270
1 parent c1b7ec5 commit 6e63c47

File tree

2 files changed

+259
-2
lines changed

2 files changed

+259
-2
lines changed

backends/cadence/aot/TARGETS

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -143,7 +143,23 @@ executorch_generated_lib(
143143
visibility = ["PUBLIC"],
144144
deps = [
145145
"//executorch/backends/cadence/generic/kernels:cadence_kernels",
146-
"//executorch/backends/cadence/generic/operators:cadence_generic_ops",
146+
# Individual operator targets instead of combined cadence_generic_ops
147+
"//executorch/backends/cadence/generic/operators:op_add",
148+
"//executorch/backends/cadence/generic/operators:op_embedding",
149+
"//executorch/backends/cadence/generic/operators:op_full",
150+
"//executorch/backends/cadence/generic/operators:op_requantize_out",
151+
"//executorch/backends/cadence/generic/operators:op_view_copy",
152+
"//executorch/backends/cadence/generic/operators:im2row_out",
153+
"//executorch/backends/cadence/generic/operators:dequantize_per_tensor",
154+
"//executorch/backends/cadence/generic/operators:quantize_per_tensor",
155+
"//executorch/backends/cadence/generic/operators:quantized_add_out",
156+
"//executorch/backends/cadence/generic/operators:quantized_conv_nchw_out",
157+
"//executorch/backends/cadence/generic/operators:quantized_conv_nhwc_out",
158+
"//executorch/backends/cadence/generic/operators:quantized_fully_connected_out",
159+
"//executorch/backends/cadence/generic/operators:quantized_layer_norm",
160+
"//executorch/backends/cadence/generic/operators:quantized_linear_out",
161+
"//executorch/backends/cadence/generic/operators:quantized_matmul_out",
162+
"//executorch/backends/cadence/generic/operators:quantized_relu_out",
147163
"//executorch/kernels/portable:executorch_all_ops",
148164
"//executorch/kernels/portable:operators",
149165
],

backends/cadence/generic/operators/targets.bzl

Lines changed: 242 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,252 @@ load("@fbsource//tools/build_defs:platform_defs.bzl", "CXX")
22
load("@fbsource//xplat/executorch/build:runtime_wrapper.bzl", "runtime")
33

44
def define_common_targets():
5+
# Individual operator targets with optimized dependencies
6+
7+
# Basic operators (need broadcast_util and scalar_utils)
8+
runtime.cxx_library(
9+
name = "op_add",
10+
srcs = ["op_add.cpp"],
11+
platforms = CXX,
12+
deps = [
13+
"//executorch/kernels/portable/cpu/util:broadcast_util",
14+
"//executorch/runtime/kernel:kernel_includes",
15+
"//executorch/kernels/portable/cpu:scalar_utils",
16+
],
17+
visibility = [
18+
"//executorch/backends/cadence/...",
19+
"@EXECUTORCH_CLIENTS",
20+
],
21+
)
22+
23+
runtime.cxx_library(
24+
name = "op_full",
25+
srcs = ["op_full.cpp"],
26+
platforms = CXX,
27+
deps = [
28+
"//executorch/runtime/kernel:kernel_includes",
29+
"//executorch/kernels/portable/cpu:scalar_utils",
30+
],
31+
visibility = [
32+
"//executorch/backends/cadence/...",
33+
"@EXECUTORCH_CLIENTS",
34+
],
35+
)
36+
37+
# Simple operators (only need kernel_includes)
38+
runtime.cxx_library(
39+
name = "op_embedding",
40+
srcs = ["op_embedding.cpp"],
41+
platforms = CXX,
42+
deps = [
43+
"//executorch/runtime/kernel:kernel_includes",
44+
],
45+
visibility = [
46+
"//executorch/backends/cadence/...",
47+
"@EXECUTORCH_CLIENTS",
48+
],
49+
)
50+
51+
runtime.cxx_library(
52+
name = "op_view_copy",
53+
srcs = ["op_view_copy.cpp"],
54+
platforms = CXX,
55+
deps = [
56+
"//executorch/runtime/kernel:kernel_includes",
57+
],
58+
visibility = [
59+
"//executorch/backends/cadence/...",
60+
"@EXECUTORCH_CLIENTS",
61+
],
62+
)
63+
64+
# Operators that need the operators.h header and basic runtime
65+
runtime.cxx_library(
66+
name = "im2row_out",
67+
srcs = ["im2row_out.cpp"],
68+
exported_headers = ["operators.h"],
69+
platforms = CXX,
70+
deps = [
71+
"//executorch/runtime/kernel:kernel_includes",
72+
],
73+
visibility = [
74+
"//executorch/backends/cadence/...",
75+
"@EXECUTORCH_CLIENTS",
76+
],
77+
)
78+
79+
runtime.cxx_library(
80+
name = "op_requantize_out",
81+
srcs = ["op_requantize_out.cpp"],
82+
platforms = CXX,
83+
deps = [
84+
"//executorch/runtime/kernel:kernel_includes",
85+
"//executorch/backends/cadence/generic/kernels:cadence_kernels",
86+
],
87+
visibility = [
88+
"//executorch/backends/cadence/...",
89+
"@EXECUTORCH_CLIENTS",
90+
],
91+
)
92+
93+
# Quantized operators that need cadence kernels for quantize/dequantize
94+
runtime.cxx_library(
95+
name = "dequantize_per_tensor",
96+
srcs = ["dequantize_per_tensor.cpp"],
97+
exported_headers = ["quantized_ops.h"],
98+
platforms = CXX,
99+
deps = [
100+
"//executorch/runtime/kernel:kernel_includes",
101+
"//executorch/backends/cadence/generic/kernels:cadence_kernels",
102+
],
103+
visibility = [
104+
"//executorch/backends/cadence/...",
105+
],
106+
)
107+
108+
runtime.cxx_library(
109+
name = "quantize_per_tensor",
110+
srcs = ["quantize_per_tensor.cpp"],
111+
exported_headers = ["quantized_ops.h"],
112+
platforms = CXX,
113+
deps = [
114+
"//executorch/runtime/kernel:kernel_includes",
115+
"//executorch/backends/cadence/generic/kernels:cadence_kernels",
116+
],
117+
visibility = [
118+
"//executorch/backends/cadence/...",
119+
"@EXECUTORCH_CLIENTS",
120+
],
121+
)
122+
123+
runtime.cxx_library(
124+
name = "quantized_add_out",
125+
srcs = ["quantized_add_out.cpp"],
126+
exported_headers = ["operators.h", "quantized_ops.h"],
127+
platforms = CXX,
128+
deps = [
129+
"//executorch/runtime/kernel:kernel_includes",
130+
"//executorch/backends/cadence/generic/kernels:cadence_kernels",
131+
],
132+
visibility = [
133+
"//executorch/backends/cadence/...",
134+
"@EXECUTORCH_CLIENTS",
135+
],
136+
)
137+
138+
runtime.cxx_library(
139+
name = "quantized_conv_nchw_out",
140+
srcs = ["quantized_conv_nchw_out.cpp"],
141+
exported_headers = ["operators.h", "quantized_ops.h"],
142+
platforms = CXX,
143+
deps = [
144+
"//executorch/runtime/kernel:kernel_includes",
145+
"//executorch/backends/cadence/generic/kernels:cadence_kernels",
146+
],
147+
visibility = [
148+
"//executorch/backends/cadence/...",
149+
"@EXECUTORCH_CLIENTS",
150+
],
151+
)
152+
153+
runtime.cxx_library(
154+
name = "quantized_conv_nhwc_out",
155+
srcs = ["quantized_conv_nhwc_out.cpp"],
156+
exported_headers = ["operators.h", "quantized_ops.h"],
157+
platforms = CXX,
158+
deps = [
159+
"//executorch/runtime/kernel:kernel_includes",
160+
"//executorch/backends/cadence/generic/kernels:cadence_kernels",
161+
],
162+
visibility = [
163+
"//executorch/backends/cadence/...",
164+
"@EXECUTORCH_CLIENTS",
165+
],
166+
)
167+
168+
runtime.cxx_library(
169+
name = "quantized_fully_connected_out",
170+
srcs = ["quantized_fully_connected_out.cpp"],
171+
exported_headers = ["operators.h", "quantized_ops.h"],
172+
platforms = CXX,
173+
deps = [
174+
"//executorch/runtime/kernel:kernel_includes",
175+
"//executorch/backends/cadence/generic/kernels:cadence_kernels",
176+
],
177+
visibility = [
178+
"//executorch/backends/cadence/...",
179+
"@EXECUTORCH_CLIENTS",
180+
],
181+
)
182+
183+
runtime.cxx_library(
184+
name = "quantized_layer_norm",
185+
srcs = ["quantized_layer_norm.cpp"],
186+
exported_headers = ["operators.h", "quantized_ops.h"],
187+
platforms = CXX,
188+
deps = [
189+
"//executorch/runtime/kernel:kernel_includes",
190+
"//executorch/backends/cadence/generic/kernels:cadence_kernels",
191+
],
192+
visibility = [
193+
"//executorch/backends/cadence/...",
194+
"@EXECUTORCH_CLIENTS",
195+
],
196+
)
197+
198+
runtime.cxx_library(
199+
name = "quantized_linear_out",
200+
srcs = ["quantized_linear_out.cpp"],
201+
exported_headers = ["operators.h", "quantized_ops.h"],
202+
platforms = CXX,
203+
deps = [
204+
"//executorch/runtime/kernel:kernel_includes",
205+
"//executorch/backends/cadence/generic/kernels:cadence_kernels",
206+
],
207+
visibility = [
208+
"//executorch/backends/cadence/...",
209+
"@EXECUTORCH_CLIENTS",
210+
],
211+
)
212+
213+
runtime.cxx_library(
214+
name = "quantized_matmul_out",
215+
srcs = ["quantized_matmul_out.cpp"],
216+
exported_headers = ["operators.h", "quantized_ops.h"],
217+
platforms = CXX,
218+
deps = [
219+
"//executorch/runtime/kernel:kernel_includes",
220+
"//executorch/backends/cadence/generic/kernels:cadence_kernels",
221+
],
222+
visibility = [
223+
"//executorch/backends/cadence/...",
224+
"@EXECUTORCH_CLIENTS",
225+
],
226+
)
227+
228+
runtime.cxx_library(
229+
name = "quantized_relu_out",
230+
srcs = ["quantized_relu_out.cpp"],
231+
exported_headers = ["operators.h", "quantized_ops.h"],
232+
platforms = CXX,
233+
deps = [
234+
"//executorch/runtime/kernel:kernel_includes",
235+
"//executorch/backends/cadence/generic/kernels:cadence_kernels",
236+
],
237+
visibility = [
238+
"//executorch/backends/cadence/...",
239+
"@EXECUTORCH_CLIENTS",
240+
],
241+
)
242+
243+
# Combined target for backward compatibility
244+
# NOTE: cadence_aot_lib now uses individual targets directly for better linking
5245
runtime.cxx_library(
6246
name = "cadence_generic_ops",
7247
srcs = glob([
8248
"*.cpp",
9249
]),
10-
exported_headers =glob([
250+
exported_headers = glob([
11251
"*.h",
12252
]),
13253
platforms = CXX,
@@ -19,5 +259,6 @@ def define_common_targets():
19259
],
20260
visibility = [
21261
"//executorch/backends/cadence/...",
262+
"@EXECUTORCH_CLIENTS",
22263
],
23264
)

0 commit comments

Comments
 (0)