239 lines
6.4 KiB
Python
239 lines
6.4 KiB
Python
# Experimental Unified APIs for Eager and Graph modes.
|
|
|
|
load("@xla//third_party/rules_python/python:py_library.bzl", "py_library")
|
|
load("//tensorflow:tensorflow.default.bzl", "cuda_py_strict_test", "tf_python_pybind_extension")
|
|
load("//tensorflow/core/platform:build_config_root.bzl", "if_pywrap")
|
|
load(
|
|
"//tensorflow/tools/test:performance.bzl",
|
|
"cuda_py_benchmark_test",
|
|
)
|
|
|
|
package(
|
|
# copybara:uncomment default_applicable_licenses = ["//tensorflow:license"],
|
|
licenses = ["notice"],
|
|
)
|
|
|
|
tf_python_pybind_extension(
|
|
name = "_unified_api",
|
|
srcs = ["unified_api.cc"],
|
|
enable_stub_generation = True,
|
|
features = ["-layering_check"],
|
|
pytype_srcs = [
|
|
"_unified_api.pyi",
|
|
],
|
|
starlark_only = True,
|
|
visibility = [
|
|
"//tensorflow/python:__pkg__",
|
|
],
|
|
deps = [
|
|
"//tensorflow/c/eager:tfe_tensorhandle_internal",
|
|
"//tensorflow/core:framework",
|
|
"//tensorflow/core:lib",
|
|
"//tensorflow/core:protos_all_cc",
|
|
"//tensorflow/core/lib/llvm_rtti",
|
|
"//tensorflow/core/platform:refcount",
|
|
"//tensorflow/python:unified_api_pywrap_required_headers",
|
|
"//tensorflow/python/lib/core:pybind11_lib",
|
|
"@com_google_absl//absl/types:span",
|
|
"@pybind11",
|
|
],
|
|
)
|
|
|
|
tf_python_pybind_extension(
|
|
name = "_tape",
|
|
srcs = ["tape.cc"],
|
|
features = ["-layering_check"],
|
|
starlark_only = True,
|
|
visibility = [
|
|
"//tensorflow/python:__pkg__",
|
|
],
|
|
deps = [
|
|
"//tensorflow/c/eager:tfe_tensorhandle_internal",
|
|
"//tensorflow/core:lib",
|
|
"//tensorflow/core:protos_all_cc",
|
|
"//tensorflow/core/lib/llvm_rtti",
|
|
"//tensorflow/python:unified_api_pywrap_required_headers",
|
|
"//tensorflow/python/lib/core:pybind11_lib",
|
|
"@com_google_absl//absl/status",
|
|
"@com_google_absl//absl/types:span",
|
|
"@pybind11",
|
|
] + if_pywrap(
|
|
if_true = [
|
|
"//tensorflow/c/experimental/gradients/tape:tape_context",
|
|
"//tensorflow/c/experimental/gradients:math_grad",
|
|
"//tensorflow/c/experimental/gradients:nn_grad",
|
|
],
|
|
),
|
|
)
|
|
|
|
tf_python_pybind_extension(
|
|
name = "_math_ops",
|
|
srcs = ["math_ops.cc"],
|
|
enable_stub_generation = True,
|
|
pytype_srcs = [
|
|
"_math_ops.pyi",
|
|
],
|
|
starlark_only = True,
|
|
visibility = [
|
|
"//tensorflow/python:__pkg__",
|
|
],
|
|
deps = [
|
|
"//tensorflow/c/eager:tfe_tensorhandle_internal",
|
|
"//tensorflow/core:framework",
|
|
"//tensorflow/core:lib",
|
|
"//tensorflow/core:protos_all_cc",
|
|
"//tensorflow/core/lib/llvm_rtti",
|
|
"//tensorflow/python:unified_api_pywrap_required_headers",
|
|
"//tensorflow/python/lib/core:pybind11_lib",
|
|
"@com_google_absl//absl/types:span",
|
|
"@pybind11",
|
|
] + if_pywrap(
|
|
if_true = [
|
|
"//tensorflow/c/experimental/ops:math_ops",
|
|
],
|
|
),
|
|
)
|
|
|
|
tf_python_pybind_extension(
|
|
name = "_nn_ops",
|
|
srcs = ["nn_ops.cc"],
|
|
enable_stub_generation = True,
|
|
pytype_srcs = [
|
|
"_nn_ops.pyi",
|
|
],
|
|
starlark_only = True,
|
|
visibility = [
|
|
"//tensorflow/python:__pkg__",
|
|
],
|
|
deps = [
|
|
"//tensorflow/c/eager:tfe_tensorhandle_internal",
|
|
"//tensorflow/core:framework",
|
|
"//tensorflow/core:lib",
|
|
"//tensorflow/core:protos_all_cc",
|
|
"//tensorflow/core/lib/llvm_rtti",
|
|
"//tensorflow/python:unified_api_pywrap_required_headers",
|
|
"//tensorflow/python/lib/core:pybind11_lib",
|
|
"@com_google_absl//absl/types:span",
|
|
"@pybind11",
|
|
] + if_pywrap(
|
|
if_true = [
|
|
"//tensorflow/c/experimental/ops:nn_ops",
|
|
],
|
|
),
|
|
)
|
|
|
|
py_library(
|
|
name = "gradient_registry",
|
|
srcs = ["gradient_registry.py"],
|
|
strict_deps = True,
|
|
deps = [":_tape"],
|
|
)
|
|
|
|
py_library(
|
|
name = "math_ops",
|
|
srcs = ["math_ops.py"],
|
|
strict_deps = True,
|
|
deps = [
|
|
":_math_ops",
|
|
":context_stack",
|
|
],
|
|
)
|
|
|
|
py_library(
|
|
name = "nn_ops",
|
|
srcs = ["nn_ops.py"],
|
|
strict_deps = True,
|
|
deps = [
|
|
":_nn_ops",
|
|
":context_stack",
|
|
],
|
|
)
|
|
|
|
py_library(
|
|
name = "tape",
|
|
srcs = ["tape.py"],
|
|
strict_deps = True,
|
|
deps = [
|
|
":_tape",
|
|
":context_stack",
|
|
":gradient_registry",
|
|
"//tensorflow/python/util:nest",
|
|
],
|
|
)
|
|
|
|
py_library(
|
|
name = "def_function",
|
|
srcs = ["def_function.py"],
|
|
strict_deps = True,
|
|
deps = [
|
|
":_unified_api",
|
|
":context_stack",
|
|
"//tensorflow/python/util:nest",
|
|
],
|
|
)
|
|
|
|
py_library(
|
|
name = "thread_local_stack",
|
|
srcs = ["thread_local_stack.py"],
|
|
strict_deps = True,
|
|
)
|
|
|
|
py_library(
|
|
name = "context_stack",
|
|
srcs = ["context_stack.py"],
|
|
strict_deps = True,
|
|
deps = [":thread_local_stack"],
|
|
)
|
|
|
|
cuda_py_strict_test(
|
|
name = "unified_api_test",
|
|
size = "small",
|
|
srcs = ["unified_api_test.py"],
|
|
tags = [
|
|
# Note(srbs): These python bindings are not
|
|
# exported as part of the pip package yet so
|
|
# this test is disabled.
|
|
"no_pip",
|
|
"no_windows", # b/168218876
|
|
],
|
|
deps = [
|
|
":_unified_api",
|
|
":context_stack",
|
|
":def_function",
|
|
":math_ops",
|
|
":nn_ops",
|
|
":tape",
|
|
"//tensorflow/python/eager:backprop",
|
|
"//tensorflow/python/eager:context",
|
|
"//tensorflow/python/framework:constant_op",
|
|
"//tensorflow/python/framework:dtypes",
|
|
"//tensorflow/python/framework:ops",
|
|
"//tensorflow/python/ops:array_ops",
|
|
"//tensorflow/python/ops:math_ops",
|
|
"//tensorflow/python/ops:nn_grad",
|
|
"//tensorflow/python/ops:nn_ops",
|
|
"//tensorflow/python/ops:random_ops",
|
|
"//tensorflow/python/platform:client_testlib",
|
|
"@absl_py//absl/testing:parameterized",
|
|
],
|
|
)
|
|
|
|
cuda_py_benchmark_test(
|
|
name = "graph_building_test",
|
|
size = "small",
|
|
srcs = ["graph_building_test.py"],
|
|
deps = [
|
|
"//tensorflow/core/config:flags_py",
|
|
"//tensorflow/python/framework:constant_op",
|
|
"//tensorflow/python/framework:dtypes",
|
|
"//tensorflow/python/framework:func_graph",
|
|
"//tensorflow/python/framework:ops",
|
|
"//tensorflow/python/framework:test_lib",
|
|
"//tensorflow/python/ops:array_ops_gen",
|
|
"//tensorflow/python/ops:math_ops_gen",
|
|
"//tensorflow/python/ops:resource_variable_ops",
|
|
"//tensorflow/python/ops:resource_variable_ops_gen",
|
|
"//tensorflow/python/platform:client_testlib",
|
|
],
|
|
)
|