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