• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1load("@build_bazel_rules_apple//apple:ios.bzl", "ios_application", "ios_unit_test")
2load(
3    "//tensorflow/lite:special_rules.bzl",
4    "tflite_ios_lab_runner",
5    "tflite_ios_per_kernel_test",
6    "tflite_portable_test_suite",
7)
8load(
9    "//tensorflow/core/platform:build_config_root.bzl",
10    "tf_gpu_tests_tags",
11)
12load("@flatbuffers//:build_defs.bzl", "flatbuffer_cc_library")
13load("//tensorflow:tensorflow.bzl", "workspace_root")
14
15package(
16    default_visibility = ["//visibility:public"],
17    licenses = ["notice"],
18)
19
20DEFAULT_COPTS = [
21    "-Wno-shorten-64-to-32",
22    "-std=c++17",
23]
24
25objc_library(
26    name = "buffer",
27    srcs = ["buffer.cc"],
28    hdrs = ["buffer.h"],
29    copts = DEFAULT_COPTS + [
30        "-ObjC++",
31    ],
32    sdk_frameworks = ["Metal"],
33    deps = [
34        ":gpu_object",
35        "//tensorflow/lite/delegates/gpu/common:status",
36        "//tensorflow/lite/delegates/gpu/common/task:buffer_desc",
37        "@com_google_absl//absl/types:span",
38    ],
39)
40
41objc_library(
42    name = "buffer_test_lib",
43    testonly = 1,
44    srcs = ["buffer_test.mm"],
45    sdk_frameworks = [
46        "Metal",
47        "XCTest",
48    ],
49    deps = [
50        ":buffer",
51        "//tensorflow/lite/delegates/gpu/common:types",
52    ],
53)
54
55objc_library(
56    name = "buffer_convert",
57    srcs = ["buffer_convert.mm"],
58    hdrs = ["buffer_convert.h"],
59    copts = DEFAULT_COPTS,
60    sdk_frameworks = ["Metal"],
61    deps = [
62        ":common",
63        "//tensorflow/lite/delegates/gpu/common:shape",
64        "//tensorflow/lite/delegates/gpu/common:util",
65    ],
66)
67
68objc_library(
69    name = "common",
70    srcs = ["common.mm"],
71    hdrs = ["common.h"],
72    copts = DEFAULT_COPTS,
73    sdk_frameworks = ["Metal"],
74    deps = [
75        "//tensorflow/lite/delegates/gpu/common:data_type",
76        "//tensorflow/lite/delegates/gpu/common:status",
77        "@com_google_absl//absl/strings",
78    ],
79)
80
81objc_library(
82    name = "common_test_lib",
83    testonly = 1,
84    srcs = ["common_test.mm"],
85    sdk_frameworks = ["XCTest"],
86    deps = [":common"],
87)
88
89ios_unit_test(
90    name = "common_test",
91    testonly = 1,
92    minimum_os_version = "11.4",
93    runner = tflite_ios_lab_runner("IOS_LATEST"),
94    tags = tf_gpu_tests_tags() + [
95        "notap",
96        "tflite_not_portable_android",
97    ],
98    deps = [":common_test_lib"],
99)
100
101objc_library(
102    name = "compute_task",
103    srcs = ["compute_task.cc"],
104    hdrs = ["compute_task.h"],
105    copts = DEFAULT_COPTS + [
106        "-ObjC++",
107    ],
108    sdk_frameworks = ["Metal"],
109    deps = [
110        ":common",
111        ":metal_arguments",
112        ":metal_device",
113        ":metal_spatial_tensor",
114        "//tensorflow/lite/delegates/gpu/common:kernel_info",
115        "//tensorflow/lite/delegates/gpu/common:precision",
116        "//tensorflow/lite/delegates/gpu/common:shape",
117        "//tensorflow/lite/delegates/gpu/common:status",
118        "//tensorflow/lite/delegates/gpu/common:types",
119        "//tensorflow/lite/delegates/gpu/common:util",
120        "//tensorflow/lite/delegates/gpu/common/task:gpu_operation",
121        "//tensorflow/lite/delegates/gpu/common/task:tuning_type",
122        "@com_google_absl//absl/strings",
123    ],
124)
125
126objc_library(
127    name = "gpu_object",
128    hdrs = ["gpu_object.h"],
129    copts = DEFAULT_COPTS,
130    sdk_frameworks = ["Metal"],
131    deps = [
132        "//tensorflow/lite/delegates/gpu/common:access_type",
133        "//tensorflow/lite/delegates/gpu/common:data_type",
134        "//tensorflow/lite/delegates/gpu/common:status",
135        "//tensorflow/lite/delegates/gpu/common/task:gpu_object_desc",
136    ],
137)
138
139objc_library(
140    name = "inference_context",
141    srcs = ["inference_context.cc"],
142    hdrs = ["inference_context.h"],
143    copts = DEFAULT_COPTS + [
144        "-ObjC++",
145    ],
146    features = ["-layering_check"],
147    sdk_frameworks = ["Metal"],
148    deps = [
149        ":compute_task",
150        ":inference_context_cc_fbs",
151        ":metal_device",
152        ":metal_spatial_tensor",
153        "//tensorflow/lite/delegates/gpu/common:gpu_model",
154        "//tensorflow/lite/delegates/gpu/common:gpu_model_cc_fbs",
155        "//tensorflow/lite/delegates/gpu/common:memory_management",
156        "//tensorflow/lite/delegates/gpu/common:model",
157        "//tensorflow/lite/delegates/gpu/common:model_hints",
158        "//tensorflow/lite/delegates/gpu/common:operations",
159        "//tensorflow/lite/delegates/gpu/common:precision",
160        "//tensorflow/lite/delegates/gpu/common:shape",
161        "//tensorflow/lite/delegates/gpu/common:status",
162        "//tensorflow/lite/delegates/gpu/common:util",
163        "//tensorflow/lite/delegates/gpu/common/selectors:operation_selector",
164        "//tensorflow/lite/delegates/gpu/common/selectors:special_selector",
165        "//tensorflow/lite/delegates/gpu/common/selectors:subgraph",
166        "//tensorflow/lite/delegates/gpu/common/task:profiling_info",
167        "//tensorflow/lite/delegates/gpu/common/task:serialization_base",
168        "//tensorflow/lite/delegates/gpu/common/task:tuning_type",
169        "@com_google_absl//absl/container:flat_hash_map",
170        "@com_google_absl//absl/strings",
171        "@com_google_absl//absl/time",
172    ],
173)
174
175flatbuffer_cc_library(
176    name = "inference_context_cc_fbs",
177    srcs = ["inference_context.fbs"],
178    flatc_args = [
179        "--scoped-enums",
180        "-I " + workspace_root,
181    ],
182    includes = [
183        "//tensorflow/lite/delegates/gpu/common:gpu_model_cc_fbs_includes",
184        "//tensorflow/lite/delegates/gpu/common/task:serialization_base_cc_fbs_includes",
185    ],
186)
187
188objc_library(
189    name = "metal_arguments",
190    srcs = ["metal_arguments.cc"],
191    hdrs = ["metal_arguments.h"],
192    copts = DEFAULT_COPTS + [
193        "-ObjC++",
194    ],
195    sdk_frameworks = ["Metal"],
196    deps = [
197        ":buffer",
198        ":gpu_object",
199        ":metal_device",
200        ":metal_spatial_tensor",
201        "//tensorflow/lite/delegates/gpu/common:status",
202        "//tensorflow/lite/delegates/gpu/common:util",
203        "//tensorflow/lite/delegates/gpu/common/task:arguments",
204        "//tensorflow/lite/delegates/gpu/common/task:gpu_object_desc",
205        "//tensorflow/lite/delegates/gpu/common/task:util",
206        "@com_google_absl//absl/strings",
207    ],
208)
209
210objc_library(
211    name = "metal_device",
212    srcs = ["metal_device.cc"],
213    hdrs = ["metal_device.h"],
214    copts = DEFAULT_COPTS + [
215        "-ObjC++",
216    ],
217    sdk_frameworks = ["Metal"],
218    deps = ["//tensorflow/lite/delegates/gpu/common:gpu_info"],
219)
220
221objc_library(
222    name = "metal_spatial_tensor",
223    srcs = ["metal_spatial_tensor.cc"],
224    hdrs = ["metal_spatial_tensor.h"],
225    copts = DEFAULT_COPTS + [
226        "-ObjC++",
227    ],
228    sdk_frameworks = ["Metal"],
229    deps = [
230        ":common",
231        ":gpu_object",
232        "//tensorflow/lite/delegates/gpu/common:status",
233        "//tensorflow/lite/delegates/gpu/common:util",
234        "//tensorflow/lite/delegates/gpu/common/task:buffer_desc",
235        "//tensorflow/lite/delegates/gpu/common/task:gpu_tensor",
236        "//tensorflow/lite/delegates/gpu/common/task:tensor_desc",
237    ],
238)
239
240objc_library(
241    name = "metal_spatial_tensor_test_lib",
242    testonly = 1,
243    srcs = ["metal_spatial_tensor_test.mm"],
244    sdk_frameworks = [
245        "Metal",
246        "XCTest",
247    ],
248    deps = [
249        ":metal_spatial_tensor",
250        "//tensorflow/lite/delegates/gpu/common:types",
251    ],
252)
253
254objc_library(
255    name = "TestBinary",
256    testonly = 1,
257    srcs = ["host.m"],
258    sdk_frameworks = ["UIKit"],
259)
260
261# Application for local testing in XCode
262ios_application(
263    name = "TestApplication",
264    testonly = 1,
265    bundle_id = "com.tensorflow.lite.delegates.gpu.metal.ComponentsTests",
266    families = [
267        "iphone",
268    ],
269    infoplists = ["Info.plist"],
270    minimum_os_version = "11.4",
271    provisioning_profile = "//tensorflow/lite/delegates/gpu/metal:provisioning_profile.mobileprovision",
272    tags = tf_gpu_tests_tags() + [
273        "local",
274        "notap",
275    ],
276    deps = [":TestBinary"],
277)
278
279objc_library(
280    name = "common_tests_lib",
281    testonly = 1,
282    srcs = [
283        "//tensorflow/lite/delegates/gpu/metal:buffer_test.mm",
284        "//tensorflow/lite/delegates/gpu/metal:common_test.mm",
285        "//tensorflow/lite/delegates/gpu/metal:metal_spatial_tensor_test.mm",
286    ],
287    hdrs = [
288    ],
289    sdk_frameworks = ["XCTest"],
290    deps = [
291        "//tensorflow/lite/delegates/gpu/common:types",
292        "//tensorflow/lite/delegates/gpu/metal:buffer",
293        "//tensorflow/lite/delegates/gpu/metal:common",
294        "//tensorflow/lite/delegates/gpu/metal:metal_spatial_tensor",
295    ],
296)
297
298ios_unit_test(
299    name = "ComponentsTests",
300    minimum_os_version = "11.4",
301    runner = tflite_ios_lab_runner("IOS_LATEST"),
302    tags = tf_gpu_tests_tags() + ["notap"],
303    test_host = ":TestApplication",
304    deps = [
305        ":common_tests_lib",
306        "//tensorflow/lite/delegates/gpu/metal/kernels:kernel_tests_lib",
307    ],
308)
309
310tflite_portable_test_suite()
311
312tflite_ios_per_kernel_test()
313