aboutsummaryrefslogtreecommitdiffhomepage
path: root/tensorflow/tensorflow.bzl
diff options
context:
space:
mode:
authorGravatar avijit-nervana <avijit.chakraborty@intel.com>2018-07-31 23:04:56 -0700
committerGravatar avijit-nervana <avijit.chakraborty@intel.com>2018-07-31 23:04:56 -0700
commit2f8b328d2571625161b3c0da0a9b25b907a0927e (patch)
treed264a0d5dbfcd774cccd0f2c23d7616897c1b894 /tensorflow/tensorflow.bzl
parent2f3e97cf0ee50ee0e55ab1a3795cc82537426e8c (diff)
parent7ca6ee15555db77c09861fc7e84e5181001da07d (diff)
Merge remote-tracking branch 'upstream/master' and changes
based on PR review comments.
Diffstat (limited to 'tensorflow/tensorflow.bzl')
-rw-r--r--tensorflow/tensorflow.bzl64
1 files changed, 48 insertions, 16 deletions
diff --git a/tensorflow/tensorflow.bzl b/tensorflow/tensorflow.bzl
index 6f1a576c6c..45c8117304 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",
@@ -324,18 +325,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],
@@ -359,18 +378,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)
@@ -555,9 +577,6 @@ def tf_gen_op_wrappers_cc(name,
# is invalid to specify both "hidden" and "op_whitelist".
# cc_linkopts: Optional linkopts to be added to tf_cc_binary that contains the
# specified ops.
-# gen_locally: if True, the genrule to generate the Python library will be run
-# without sandboxing. This would help when the genrule depends on symlinks
-# which may not be supported in the sandbox.
def tf_gen_op_wrapper_py(name,
out=None,
hidden=None,
@@ -568,8 +587,7 @@ def tf_gen_op_wrapper_py(name,
generated_target_name=None,
op_whitelist=[],
cc_linkopts=[],
- api_def_srcs=[],
- gen_locally=False):
+ api_def_srcs=[]):
if (hidden or hidden_file) and op_whitelist:
fail('Cannot pass specify both hidden and op_whitelist.')
@@ -624,7 +642,6 @@ def tf_gen_op_wrapper_py(name,
outs=[out],
srcs=api_def_srcs + [hidden_file],
tools=[tool_name] + tf_binary_additional_srcs(),
- local = (1 if gen_locally else 0),
cmd=("$(location " + tool_name + ") " + api_def_args_str +
" @$(location " + hidden_file + ") " +
("1" if require_shape_functions else "0") + " > $@"))
@@ -634,7 +651,6 @@ def tf_gen_op_wrapper_py(name,
outs=[out],
srcs=api_def_srcs,
tools=[tool_name] + tf_binary_additional_srcs(),
- local = (1 if gen_locally else 0),
cmd=("$(location " + tool_name + ") " + api_def_args_str + " " +
op_list_arg + " " +
("1" if require_shape_functions else "0") + " " +
@@ -664,11 +680,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),
@@ -688,11 +706,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.
@@ -793,6 +812,7 @@ def tf_cuda_only_cc_test(name,
size="medium",
linkstatic=0,
args=[],
+ kernels=[],
linkopts=[]):
native.cc_test(
name="%s%s" % (name, "_gpu"),
@@ -800,8 +820,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),
@@ -844,9 +864,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"]
@@ -867,11 +889,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,
@@ -911,12 +934,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)
@@ -1090,6 +1114,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)?",
@@ -1174,7 +1207,6 @@ _py_wrap_cc = rule(
allow_files = True,
),
"swig_includes": attr.label_list(
- cfg = "data",
allow_files = True,
),
"deps": attr.label_list(
@@ -1462,7 +1494,7 @@ def tf_py_wrap_cc(name,
srcs=srcs,
swig_includes=swig_includes,
deps=deps + extra_deps,
- toolchain_deps=["//tools/defaults:crosstool"],
+ toolchain_deps=["@bazel_tools//tools/cpp:current_cc_toolchain"],
module_name=module_name,
py_module_name=name)
vscriptname=name+"_versionscript"