Enable Flex delegate for Windows
Since weak symbol overriding is not available on Windows, disable weak symbol
overriding path but use TF_AcquireFlexDelegate() acquisition with DLL.
PiperOrigin-RevId: 321106995
Change-Id: I97398e6b473c78b6f68e418bcb1be3bad03be49a
diff --git a/tensorflow/lite/delegates/flex/delegate.cc b/tensorflow/lite/delegates/flex/delegate.cc
index b8b0d4e..f85b5e6 100644
--- a/tensorflow/lite/delegates/flex/delegate.cc
+++ b/tensorflow/lite/delegates/flex/delegate.cc
@@ -30,9 +30,13 @@
namespace tflite {
// Corresponding weak declaration found in lite/interpreter_builder.cc.
+#if !defined(_WIN32)
+// If weak symbol is not supported (Windows), it can use
+// TF_AcquireFlexDelegate() path instead.
TfLiteDelegateUniquePtr AcquireFlexDelegate() {
return tflite::FlexDelegate::Create();
}
+#endif
TfLiteDelegateUniquePtr FlexDelegate::Create(
std::unique_ptr<FlexDelegate> base_delegate) {
@@ -140,6 +144,11 @@
// Exported C interface function which is used by AcquireFlexDelegate() at
// interpreter_build.cc. To export the function name globally, the function name
// must be matched with patterns in tf_version_script.lds
-extern "C" tflite::TfLiteDelegateUniquePtr TF_AcquireFlexDelegate() {
- return tflite::AcquireFlexDelegate();
+extern "C" {
+#if defined(_WIN32)
+__declspec(dllexport)
+#endif
+ tflite::TfLiteDelegateUniquePtr TF_AcquireFlexDelegate() {
+ return tflite::FlexDelegate::Create();
}
+} // extern "C"
diff --git a/tensorflow/lite/python/BUILD b/tensorflow/lite/python/BUILD
index 63be960..dfcf46b 100644
--- a/tensorflow/lite/python/BUILD
+++ b/tensorflow/lite/python/BUILD
@@ -197,7 +197,6 @@
srcs_version = "PY2AND3",
tags = [
"no_mac", # TODO(b/159077703): Enable Python API Flex support on MacOS.
- "no_windows", # TODO(b/159077703): Enable Python API Flex support on Windows.
],
deps = [
":lite",
diff --git a/tensorflow/python/BUILD b/tensorflow/python/BUILD
index 8344815..fbfa414 100644
--- a/tensorflow/python/BUILD
+++ b/tensorflow/python/BUILD
@@ -6074,6 +6074,7 @@
"//tensorflow/core/distributed_runtime:server_lib",
"//tensorflow/core/platform:stacktrace_handler",
"//tensorflow/core/profiler/internal:print_model_analysis",
+ "//tensorflow/lite/delegates/flex:delegate",
"//tensorflow/core/profiler/internal/cpu:python_tracer",
"//tensorflow/tools/graph_transforms:transform_graph_lib",
"//tensorflow/core/platform:tf32_utils",
@@ -6088,12 +6089,7 @@
"@ngraph_tf//:ngraph_tf",
]) + if_xla_available([
"//tensorflow/compiler/aot:tfcompile_lib",
- ]) + select({
- "//tensorflow:windows": [], # TODO(b/159077703): Enable Flex on Windows
- "//conditions:default": [
- "//tensorflow/lite/delegates/flex:delegate",
- ],
- }) + if_tpu(["//tensorflow/core/tpu:tpu_api_dlsym_initializer"]),
+ ]) + if_tpu(["//tensorflow/core/tpu:tpu_api_dlsym_initializer"]),
)
# ** Targets for Windows build (start) **