blob: 357072226af6730eb6677b0b87e848365e949680 [file] [log] [blame]
load("//tensorflow:tensorflow.bzl", "tf_cc_binary")
load("//tensorflow/lite:special_rules.bzl", "tflite_portable_test_suite")
load("//tensorflow/lite:build_def.bzl", "tflite_copts", "tflite_linkopts")
package(
default_visibility = [
"//visibility:public",
],
licenses = ["notice"], # Apache 2.0
)
common_copts = ["-Wall"] + tflite_copts()
cc_binary(
name = "benchmark_model",
srcs = [
"benchmark_main.cc",
],
copts = common_copts,
linkopts = tflite_linkopts() + select({
"//tensorflow:android": [
"-pie", # Android 5.0 and later supports only PIE
"-lm", # some builtin ops, e.g., tanh, need -lm
"-Wl,--rpath=/data/local/tmp/", # Hexagon delegate libraries should be in /data/local/tmp
],
"//conditions:default": [],
}),
tags = ["builder_default_android_arm64"],
deps = [
":benchmark_tflite_model_lib",
"//tensorflow/lite/tools:logging",
],
)
cc_binary(
name = "benchmark_model_performance_options",
srcs = [
"benchmark_tflite_performance_options_main.cc",
],
copts = common_copts,
linkopts = tflite_linkopts() + select({
"//tensorflow:android": [
"-pie", # Android 5.0 and later supports only PIE
"-lm", # some builtin ops, e.g., tanh, need -lm
],
"//conditions:default": [],
}),
tags = ["builder_default_android_arm64"],
deps = [
":benchmark_performance_options",
":benchmark_tflite_model_lib",
"//tensorflow/lite/tools:logging",
],
)
# As with most target binaries that use flex, this should be built with the
# `--config=monolithic` build flag, e.g.,
# bazel build --config=monolithic --config=android_arm64 \
# -c opt --cxxopt='--std=c++14' :benchmark_model_plus_flex
tf_cc_binary(
name = "benchmark_model_plus_flex",
srcs = [
"benchmark_plus_flex_main.cc",
],
copts = common_copts,
linkopts = tflite_linkopts() + select({
"//tensorflow:android": [
"-pie", # Android 5.0 and later supports only PIE
"-lm", # some builtin ops, e.g., tanh, need -lm
],
"//conditions:default": [],
}),
deps = [
":benchmark_tflite_model_lib",
"//tensorflow/lite/delegates/flex:delegate",
"//tensorflow/lite/testing:init_tensorflow",
"//tensorflow/lite/tools:logging",
],
)
cc_test(
name = "benchmark_test",
srcs = ["benchmark_test.cc"],
args = [
"--fp32_graph=$(location //tensorflow/lite:testdata/multi_add.bin)",
"--int8_graph=$(location //tensorflow/lite:testdata/add_quantized_int8.bin)",
"--string_graph=$(location //tensorflow/lite:testdata/string_input_model.bin)",
],
data = [
"//tensorflow/lite:testdata/add_quantized_int8.bin",
"//tensorflow/lite:testdata/multi_add.bin",
"//tensorflow/lite:testdata/string_input_model.bin",
],
tags = [
"tflite_not_portable_android",
"tflite_not_portable_ios",
],
deps = [
":benchmark_performance_options",
":benchmark_tflite_model_lib",
"//tensorflow/lite:framework",
"//tensorflow/lite:string_util",
"//tensorflow/lite/c:common",
"//tensorflow/lite/testing:util",
"//tensorflow/lite/tools:command_line_flags",
"//tensorflow/lite/tools:logging",
"//tensorflow/lite/tools/delegates:delegate_provider_hdr",
"@com_google_absl//absl/algorithm",
"@com_google_absl//absl/memory",
"@com_google_absl//absl/strings:str_format",
"@com_google_googletest//:gtest",
],
)
cc_library(
name = "profiling_listener",
srcs = ["profiling_listener.cc"],
hdrs = ["profiling_listener.h"],
copts = common_copts,
deps = [
":benchmark_model_lib",
"//tensorflow/lite/profiling:profile_summarizer",
"//tensorflow/lite/profiling:profile_summary_formatter",
"//tensorflow/lite/profiling:profiler",
"//tensorflow/lite/tools:logging",
],
)
cc_library(
name = "benchmark_tflite_model_lib",
srcs = ["benchmark_tflite_model.cc"],
hdrs = ["benchmark_tflite_model.h"],
copts = common_copts + select({
"//tensorflow:ios": [
"-xobjective-c++",
],
"//conditions:default": [],
}),
deps = [
":benchmark_model_lib",
":benchmark_utils",
":profiling_listener",
"//tensorflow/lite:framework",
"//tensorflow/lite:string_util",
"//tensorflow/lite/kernels:builtin_ops",
"//tensorflow/lite/profiling:platform_profiler",
"//tensorflow/lite/profiling:profile_summary_formatter",
"//tensorflow/lite/profiling:profiler",
"//tensorflow/lite/tools:logging",
"//tensorflow/lite/tools/delegates:delegate_provider_hdr",
"//tensorflow/lite/tools/delegates:tflite_execution_providers",
"//tensorflow/lite/tools/evaluation:utils",
"@com_google_absl//absl/base:core_headers",
"@com_google_absl//absl/strings",
"@ruy//ruy/profiler",
],
)
cc_library(
name = "benchmark_performance_options",
srcs = [
"benchmark_performance_options.cc",
],
hdrs = ["benchmark_performance_options.h"],
copts = common_copts,
deps = [
":benchmark_model_lib",
":benchmark_params",
":benchmark_utils",
"//tensorflow/lite/tools:logging",
"@com_google_absl//absl/memory",
"//tensorflow/core/util:stats_calculator_portable",
"//tensorflow/lite/c:common",
"//tensorflow/lite/nnapi:nnapi_util",
"//tensorflow/lite/profiling:time",
"//tensorflow/lite/tools:command_line_flags",
] + select({
"//tensorflow:android": [
"//tensorflow/lite/delegates/gpu:delegate",
],
"//conditions:default": [],
}),
)
cc_library(
name = "benchmark_params",
hdrs = ["benchmark_params.h"],
copts = common_copts,
deps = ["//tensorflow/lite/tools:tool_params"],
)
cc_library(
name = "benchmark_model_lib",
srcs = [
"benchmark_model.cc",
],
hdrs = ["benchmark_model.h"],
copts = common_copts,
deps = [
":benchmark_params",
":benchmark_utils",
"//tensorflow/core/util:stats_calculator_portable",
"//tensorflow/lite:framework",
"//tensorflow/lite/c:common",
"//tensorflow/lite/profiling:memory_info",
"//tensorflow/lite/profiling:time",
"//tensorflow/lite/tools:command_line_flags",
"//tensorflow/lite/tools:logging",
],
)
cc_library(
name = "benchmark_utils",
srcs = [
"benchmark_utils.cc",
],
hdrs = ["benchmark_utils.h"],
copts = common_copts,
deps = ["//tensorflow/lite/profiling:time"],
)
cc_test(
name = "benchmark_utils_test",
srcs = [
"benchmark_utils_test.cc",
],
copts = common_copts,
deps = [
":benchmark_utils",
"//tensorflow/lite/profiling:time",
"@com_google_googletest//:gtest_main",
],
)
tflite_portable_test_suite()