aboutsummaryrefslogtreecommitdiffhomepage
path: root/tensorflow/tensorflow.bzl
diff options
context:
space:
mode:
authorGravatar Gunhan Gulsoy <gunan@google.com>2018-07-29 00:11:42 -0700
committerGravatar TensorFlower Gardener <gardener@tensorflow.org>2018-07-29 00:14:52 -0700
commitcde1c8e835f7fdfbb3ab8a4c8a01edb3a7e569aa (patch)
tree01bfea2ea0878847ae2617a9beb2aae85d5c9910 /tensorflow/tensorflow.bzl
parent2ee2fee11391952ee9e73c66ee99f265d924e15a (diff)
Add a new kernels option to bazel rules to enable adding dynamic kernel dependencies.
PiperOrigin-RevId: 206473913
Diffstat (limited to 'tensorflow/tensorflow.bzl')
-rw-r--r--tensorflow/tensorflow.bzl53
1 files changed, 46 insertions, 7 deletions
diff --git a/tensorflow/tensorflow.bzl b/tensorflow/tensorflow.bzl
index f8e55abe79..58282ec1c7 100644
--- a/tensorflow/tensorflow.bzl
+++ b/tensorflow/tensorflow.bzl
@@ -9,6 +9,7 @@ load(
"tf_additional_grpc_deps_py",
"tf_additional_xla_deps_py",
"if_static",
+ "if_dynamic_kernels",
)
load(
"@local_config_tensorrt//:build_defs.bzl",
@@ -318,18 +319,36 @@ def tf_binary_additional_srcs():
clean_dep("//tensorflow:libtensorflow_framework.so"),
])
+
+# Helper functions to add kernel dependencies to tf binaries when using dynamic
+# kernel linking.
+def tf_binary_dynamic_kernel_dsos(kernels):
+ return if_dynamic_kernels(
+ extra_deps=["libtfkernel_%s.so" % clean_dep(k) for k in kernels],
+ otherwise=[])
+
+# Helper functions to add kernel dependencies to tf binaries when using static
+# kernel linking.
+def tf_binary_dynamic_kernel_deps(kernels):
+ return if_dynamic_kernels(
+ extra_deps=[],
+ otherwise=kernels)
+
def tf_cc_shared_object(
name,
srcs=[],
deps=[],
+ data=[],
linkopts=[],
framework_so=tf_binary_additional_srcs(),
+ kernels=[],
**kwargs):
native.cc_binary(
name=name,
srcs=srcs + framework_so,
- deps=deps,
+ deps=deps + tf_binary_dynamic_kernel_deps(kernels),
linkshared = 1,
+ data = data + tf_binary_dynamic_kernel_dsos(kernels),
linkopts=linkopts + _rpath_linkopts(name) + select({
clean_dep("//tensorflow:darwin"): [
"-Wl,-install_name,@rpath/" + name.split("/")[-1],
@@ -353,18 +372,21 @@ register_extension_info(
def tf_cc_binary(name,
srcs=[],
deps=[],
+ data=[],
linkopts=[],
copts=tf_copts(),
+ kernels=[],
**kwargs):
native.cc_binary(
name=name,
copts=copts,
srcs=srcs + tf_binary_additional_srcs(),
- deps=deps + if_mkl(
+ deps=deps + tf_binary_dynamic_kernel_deps(kernels) + if_mkl(
[
"//third_party/mkl:intel_binary_blob",
],
),
+ data=data + tf_binary_dynamic_kernel_dsos(kernels),
linkopts=linkopts + _rpath_linkopts(name),
**kwargs)
@@ -652,11 +674,13 @@ def tf_gen_op_wrapper_py(name,
def tf_cc_test(name,
srcs,
deps,
+ data=[],
linkstatic=0,
extra_copts=[],
suffix="",
linkopts=[],
nocopts=None,
+ kernels=[],
**kwargs):
native.cc_test(
name="%s%s" % (name, suffix),
@@ -676,11 +700,12 @@ def tf_cc_test(name,
"-lm"
],
}) + linkopts + _rpath_linkopts(name),
- deps=deps + if_mkl(
+ deps=deps + tf_binary_dynamic_kernel_deps(kernels) + if_mkl(
[
"//third_party/mkl:intel_binary_blob",
],
),
+ data=data + tf_binary_dynamic_kernel_dsos(kernels),
# Nested select() statements seem not to be supported when passed to
# linkstatic, and we already have a cuda select() passed in to this
# function.
@@ -781,6 +806,7 @@ def tf_cuda_only_cc_test(name,
size="medium",
linkstatic=0,
args=[],
+ kernels=[],
linkopts=[]):
native.cc_test(
name="%s%s" % (name, "_gpu"),
@@ -788,8 +814,8 @@ def tf_cuda_only_cc_test(name,
size=size,
args=args,
copts= _cuda_copts() + tf_copts(),
- data=data,
- deps=deps + if_cuda([
+ data=data + tf_binary_dynamic_kernel_dsos(kernels),
+ deps=deps + tf_binary_dynamic_kernel_deps(kernels) + if_cuda([
clean_dep("//tensorflow/core:cuda"),
clean_dep("//tensorflow/core:gpu_lib")]),
linkopts=if_not_windows(["-lpthread", "-lm"]) + linkopts + _rpath_linkopts(name),
@@ -832,9 +858,11 @@ def tf_cc_tests(srcs,
def tf_cc_test_mkl(srcs,
deps,
name="",
+ data=[],
linkstatic=0,
tags=[],
size="medium",
+ kernels=[],
args=None):
# -fno-exceptions in nocopts breaks compilation if header modules are enabled.
disable_header_modules = ["-use_header_modules"]
@@ -855,11 +883,12 @@ def tf_cc_test_mkl(srcs,
"-lm"
],
}) + _rpath_linkopts(src_to_test_name(src)),
- deps=deps + if_mkl(
+ deps=deps + tf_binary_dynamic_kernel_deps(kernels) + if_mkl(
[
"//third_party/mkl:intel_binary_blob",
],
),
+ data=data + tf_binary_dynamic_kernel_dsos(kernels),
linkstatic=linkstatic,
tags=tags,
size=size,
@@ -899,12 +928,13 @@ def tf_cuda_cc_tests(srcs,
def tf_java_test(name,
srcs=[],
deps=[],
+ kernels=[],
*args,
**kwargs):
native.java_test(
name=name,
srcs=srcs,
- deps=deps + tf_binary_additional_srcs(),
+ deps=deps + tf_binary_additional_srcs() + tf_binary_dynamic_kernel_dsos(kernels) + tf_binary_dynamic_kernel_deps(kernels),
*args,
**kwargs)
@@ -1078,6 +1108,15 @@ def tf_kernel_library(
deps=deps,
**kwargs)
+ # TODO(gunan): CUDA dependency not clear here. Fix it.
+ tf_cc_shared_object(
+ name="libtfkernel_%s.so" % name,
+ srcs=srcs + hdrs,
+ copts=copts,
+ deps=deps,
+ tags=["manual", "notap"])
+
+
register_extension_info(
extension_name = "tf_kernel_library",
label_regex_for_dep = "{extension_name}(_gpu)?",