diff --git a/tensorflow/compiler/jit/encapsulate_subgraphs_pass_test.cc b/tensorflow/compiler/jit/encapsulate_subgraphs_pass_test.cc index d162c16cc16..f1979514053 100644 --- a/tensorflow/compiler/jit/encapsulate_subgraphs_pass_test.cc +++ b/tensorflow/compiler/jit/encapsulate_subgraphs_pass_test.cc @@ -409,12 +409,14 @@ Node* KeyPlaceholder(const string& call_node, } Node* RecvAtHost(ops::NodeOut key_input, const string& cluster, - const string& oc_cluster, absl::Span dtypes, + const string& new_func_name, const string& oc_cluster, + absl::Span dtypes, const GraphDefBuilder::Options& opts) { if (opts.HaveError()) return nullptr; - string key = absl::StrCat("host_compute_channel_", cluster, "_", oc_cluster); - string name = - absl::StrCat("outside_compilation_", cluster, "_", oc_cluster, "_recv"); + string key = absl::StrCat("host_compute_channel_", cluster, "_", + new_func_name, "_", oc_cluster); + string name = absl::StrCat("outside_compilation_", cluster, "_", + new_func_name, "_", oc_cluster, "_recv"); NodeBuilder node_builder(opts.WithName(name).GetNameForOp("_XlaRecvAtHost"), "_XlaRecvAtHost", opts.op_registry()); node_builder.Input(std::move(key_input)); @@ -427,13 +429,14 @@ Node* RecvAtHost(ops::NodeOut key_input, const string& cluster, } Node* SendFromHost(ops::NodeOut key_input, const string& cluster, - const string& oc_cluster, + const string& new_func_name, const string& oc_cluster, const std::vector& inputs, const GraphDefBuilder::Options& opts) { if (opts.HaveError()) return nullptr; - string key = absl::StrCat("host_compute_channel_", cluster, "_", oc_cluster); - string name = - absl::StrCat("outside_compilation_", cluster, "_", oc_cluster, "_send"); + string key = absl::StrCat("host_compute_channel_", cluster, "_", + new_func_name, "_", oc_cluster); + string name = absl::StrCat("outside_compilation_", cluster, "_", + new_func_name, "_", oc_cluster, "_send"); NodeBuilder node_builder(opts.WithName(name).GetNameForOp("_XlaSendFromHost"), "_XlaSendFromHost", opts.op_registry()); node_builder.Input(inputs); @@ -907,21 +910,22 @@ TEST(EncapsulateSubgraphsTest, OneFunctionOneOutside) { GraphDefBuilder shape(GraphDefBuilder::kFailImmediately); Node* key_constant = KeyPlaceholder("F1", shape.opts()); Node* recv = RecvAtHost( - ops::NodeOut(key_constant, 0), "F1", "O1", {DT_FLOAT, DT_FLOAT}, + ops::NodeOut(key_constant, 0), "F1", "F1", "O1", {DT_FLOAT, DT_FLOAT}, shape.opts().WithAttr(kXlaHasHostTransferAttrName, true)); Node* e = Binary(ops::NodeOut(recv, 0), ops::NodeOut(recv, 1), shape.opts() .WithName("E") .WithAttr("_encapsulate", "F1") .WithAttr("_outside", "O1")); - SendFromHost(ops::NodeOut(key_constant, 0), "F1", "O1", {e}, + SendFromHost(ops::NodeOut(key_constant, 0), "F1", "F1", "O1", {e}, shape.opts().WithAttr(kXlaHasHostTransferAttrName, true)); TF_EXPECT_OK( - AddGraphDefToFunctionLibrary(shape, "F1_O1", &library_expected)); + AddGraphDefToFunctionLibrary(shape, "F1_F1_O1", &library_expected)); } NameAttrList shape_inference_graph; - shape_inference_graph.set_name("_outside_compilation_shape_inference_F1_O1"); + shape_inference_graph.set_name( + "_outside_compilation_shape_inference_F1_F1_O1"); *library_expected.add_function() = test::function::XTimesTwo(); *library_expected.add_function() = FunctionDefHelper::Create( "F1", {"a_0_arg:float", "b_0_arg:float"}, {"f_0_retval_retval:float"}, {}, @@ -939,7 +943,7 @@ TEST(EncapsulateSubgraphsTest, OneFunctionOneOutside) { {{"Tinputs", absl::Span({DT_FLOAT, DT_FLOAT})}, {"Toutputs", absl::Span({DT_FLOAT})}, {"ancestors", absl::Span({})}, - {"key", "host_compute_channel_F1_O1"}, + {"key", "host_compute_channel_F1_F1_O1"}, {"shape_inference_graph", shape_inference_graph}, {"shapes", absl::Span({})}, {"_outside_compilation_subgraph", "O1"}, @@ -959,7 +963,7 @@ TEST(EncapsulateSubgraphsTest, OneFunctionOneOutside) { Node* key_constant = KeyPlaceholder("F1", b2.opts().WithName("F1_key_placeholder")); Node* recv = RecvAtHost( - ops::NodeOut(key_constant, 0), "F1", "O1", {DT_FLOAT, DT_FLOAT}, + ops::NodeOut(key_constant, 0), "F1", "F1", "O1", {DT_FLOAT, DT_FLOAT}, b2.opts().WithAttr(kXlaHasHostTransferAttrName, true)); Node* e = Binary(ops::NodeOut(recv, 0), ops::NodeOut(recv, 1), b2.opts() @@ -967,9 +971,10 @@ TEST(EncapsulateSubgraphsTest, OneFunctionOneOutside) { .WithControlInputs({recv}) .WithAttr("_encapsulate", "F1") .WithAttr("_outside", "O1")); - Node* send = SendFromHost(ops::NodeOut(key_constant, 0), "F1", "O1", {e}, - b2.opts().WithControlInput(e).WithAttr( - kXlaHasHostTransferAttrName, true)); + Node* send = + SendFromHost(ops::NodeOut(key_constant, 0), "F1", "F1", "O1", {e}, + b2.opts().WithControlInput(e).WithAttr( + kXlaHasHostTransferAttrName, true)); Node* s = Sequencer( b2.opts().WithName("F1_sequencer").WithControlInputs({recv, send}), @@ -1035,24 +1040,24 @@ TEST(EncapsulateSubgraphsTest, OneFunctionTwoOutside) { GraphDefBuilder shape1(GraphDefBuilder::kFailImmediately); Node* key_constant = KeyPlaceholder("F1", shape1.opts()); Node* recv = RecvAtHost( - ops::NodeOut(key_constant, 0), "F1", "O1", {DT_FLOAT, DT_FLOAT}, + ops::NodeOut(key_constant, 0), "F1", "F1", "O1", {DT_FLOAT, DT_FLOAT}, shape1.opts().WithAttr(kXlaHasHostTransferAttrName, true)); Node* e = Binary(ops::NodeOut(recv, 0), ops::NodeOut(recv, 1), shape1.opts() .WithName("E") .WithAttr("_encapsulate", "F1") .WithAttr("_outside", "O1")); - SendFromHost(ops::NodeOut(key_constant, 0), "F1", "O1", {e}, + SendFromHost(ops::NodeOut(key_constant, 0), "F1", "F1", "O1", {e}, shape1.opts().WithAttr(kXlaHasHostTransferAttrName, true)); TF_EXPECT_OK( - AddGraphDefToFunctionLibrary(shape1, "F1_O1", &library_expected)); + AddGraphDefToFunctionLibrary(shape1, "F1_F1_O1", &library_expected)); } { GraphDefBuilder shape2(GraphDefBuilder::kFailImmediately); Node* key_constant = KeyPlaceholder("F1", shape2.opts()); Node* recv1 = RecvAtHost( - ops::NodeOut(key_constant, 0), "F1", "O1", {DT_FLOAT, DT_FLOAT}, + ops::NodeOut(key_constant, 0), "F1", "F1", "O1", {DT_FLOAT, DT_FLOAT}, shape2.opts().WithAttr(kXlaHasHostTransferAttrName, true)); Node* e = Binary(ops::NodeOut(recv1, 0), ops::NodeOut(recv1, 1), shape2.opts() @@ -1060,7 +1065,7 @@ TEST(EncapsulateSubgraphsTest, OneFunctionTwoOutside) { .WithAttr("_encapsulate", "F1") .WithAttr("_outside", "O1")); Node* recv2 = RecvAtHost( - ops::NodeOut(key_constant, 0), "F1", "O2", {DT_FLOAT, DT_FLOAT}, + ops::NodeOut(key_constant, 0), "F1", "F1", "O2", {DT_FLOAT, DT_FLOAT}, shape2.opts().WithAttr(kXlaHasHostTransferAttrName, true)); Node* g = Binary(e, ops::NodeOut(recv2, 0), shape2.opts() @@ -1072,15 +1077,17 @@ TEST(EncapsulateSubgraphsTest, OneFunctionTwoOutside) { .WithName("H") .WithAttr("_encapsulate", "F1") .WithAttr("_outside", "O2")); - SendFromHost(ops::NodeOut(key_constant, 0), "F1", "O2", {g, h}, + SendFromHost(ops::NodeOut(key_constant, 0), "F1", "F1", "O2", {g, h}, shape2.opts().WithAttr(kXlaHasHostTransferAttrName, true)); TF_EXPECT_OK( - AddGraphDefToFunctionLibrary(shape2, "F1_O2", &library_expected)); + AddGraphDefToFunctionLibrary(shape2, "F1_F1_O2", &library_expected)); } NameAttrList shape_inference_graph1, shape_inference_graph2; - shape_inference_graph1.set_name("_outside_compilation_shape_inference_F1_O1"); - shape_inference_graph2.set_name("_outside_compilation_shape_inference_F1_O2"); + shape_inference_graph1.set_name( + "_outside_compilation_shape_inference_F1_F1_O1"); + shape_inference_graph2.set_name( + "_outside_compilation_shape_inference_F1_F1_O2"); *library_expected.add_function() = FunctionDefHelper::Create( "F1", {"a_0_arg:float", "b_0_arg:float"}, {"g_0_retval_retval:float", "i_0_retval_retval:float"}, {}, @@ -1101,7 +1108,7 @@ TEST(EncapsulateSubgraphsTest, OneFunctionTwoOutside) { {{"Tinputs", absl::Span({DT_FLOAT, DT_FLOAT})}, {"Toutputs", absl::Span({DT_FLOAT, DT_FLOAT})}, {"ancestors", absl::Span({})}, - {"key", "host_compute_channel_F1_O2"}, + {"key", "host_compute_channel_F1_F1_O2"}, {"shape_inference_graph", shape_inference_graph2}, {"shapes", absl::Span({})}, {"_outside_compilation_subgraph", "O2"}, @@ -1116,7 +1123,7 @@ TEST(EncapsulateSubgraphsTest, OneFunctionTwoOutside) { {{"Tinputs", absl::Span({DT_FLOAT, DT_FLOAT})}, {"Toutputs", absl::Span({DT_FLOAT})}, {"ancestors", absl::Span({})}, - {"key", "host_compute_channel_F1_O1"}, + {"key", "host_compute_channel_F1_F1_O1"}, {"shape_inference_graph", shape_inference_graph1}, {"shapes", absl::Span({})}, {"_outside_compilation_subgraph", "O1"}, @@ -1137,7 +1144,7 @@ TEST(EncapsulateSubgraphsTest, OneFunctionTwoOutside) { Node* key_constant = KeyPlaceholder("F1", b2.opts().WithName("F1_key_placeholder")); Node* recv1 = RecvAtHost( - ops::NodeOut(key_constant, 0), "F1", "O1", {DT_FLOAT, DT_FLOAT}, + ops::NodeOut(key_constant, 0), "F1", "F1", "O1", {DT_FLOAT, DT_FLOAT}, b2.opts().WithAttr(kXlaHasHostTransferAttrName, true)); Node* e = Binary(ops::NodeOut(recv1, 0), ops::NodeOut(recv1, 1), b2.opts() @@ -1145,12 +1152,13 @@ TEST(EncapsulateSubgraphsTest, OneFunctionTwoOutside) { .WithControlInputs({recv1}) .WithAttr("_encapsulate", "F1") .WithAttr("_outside", "O1")); - Node* send1 = SendFromHost(ops::NodeOut(key_constant, 0), "F1", "O1", {e}, - b2.opts().WithControlInput(e).WithAttr( - kXlaHasHostTransferAttrName, true)); + Node* send1 = + SendFromHost(ops::NodeOut(key_constant, 0), "F1", "F1", "O1", {e}, + b2.opts().WithControlInput(e).WithAttr( + kXlaHasHostTransferAttrName, true)); Node* recv2 = RecvAtHost( - ops::NodeOut(key_constant, 0), "F1", "O2", {DT_FLOAT, DT_FLOAT}, + ops::NodeOut(key_constant, 0), "F1", "F1", "O2", {DT_FLOAT, DT_FLOAT}, b2.opts().WithAttr(kXlaHasHostTransferAttrName, true)); Node* g = Binary(e, ops::NodeOut(recv2, 0), b2.opts() @@ -1164,7 +1172,7 @@ TEST(EncapsulateSubgraphsTest, OneFunctionTwoOutside) { .WithAttr("_encapsulate", "F1") .WithAttr("_outside", "O2")); Node* send2 = - SendFromHost(ops::NodeOut(key_constant, 0), "F1", "O2", {g, h}, + SendFromHost(ops::NodeOut(key_constant, 0), "F1", "F1", "O2", {g, h}, b2.opts().WithAttr(kXlaHasHostTransferAttrName, true)); Node* s = Sequencer(b2.opts() @@ -1249,7 +1257,7 @@ TEST(EncapsulateSubgraphsTest, TwoFunctionsTwoOutside) { {{"Tinputs", absl::Span({DT_FLOAT, DT_FLOAT})}, {"Toutputs", absl::Span({DT_FLOAT})}, {"ancestors", absl::Span({})}, - {"key", "host_compute_channel_F1_O1"}, + {"key", "host_compute_channel_F1_F1_O1"}, {"shape_inference_graph", NameAttrList()}, {"shapes", absl::Span({shape_proto_expected})}, @@ -1276,7 +1284,7 @@ TEST(EncapsulateSubgraphsTest, TwoFunctionsTwoOutside) { {{"Tinputs", absl::Span({DT_FLOAT, DT_FLOAT})}, {"Toutputs", absl::Span({DT_FLOAT})}, {"ancestors", absl::Span({})}, - {"key", "host_compute_channel_F2_O1"}, + {"key", "host_compute_channel_F2_F2_O1"}, {"shape_inference_graph", NameAttrList()}, {"shapes", absl::Span({shape_proto_expected})}, @@ -1296,7 +1304,7 @@ TEST(EncapsulateSubgraphsTest, TwoFunctionsTwoOutside) { Node* key_constant1 = KeyPlaceholder("F1", b2.opts().WithName("F1_key_placeholder")); Node* recv1 = RecvAtHost( - ops::NodeOut(key_constant1, 0), "F1", "O1", {DT_FLOAT, DT_FLOAT}, + ops::NodeOut(key_constant1, 0), "F1", "F1", "O1", {DT_FLOAT, DT_FLOAT}, b2.opts().WithAttr(kXlaHasHostTransferAttrName, true)); Node* e = Binary(ops::NodeOut(recv1, 0), ops::NodeOut(recv1, 1), b2.opts() @@ -1304,9 +1312,10 @@ TEST(EncapsulateSubgraphsTest, TwoFunctionsTwoOutside) { .WithControlInputs({recv1}) .WithAttr("_encapsulate", "F1") .WithAttr("_outside", "O1")); - Node* send1 = SendFromHost(ops::NodeOut(key_constant1, 0), "F1", "O1", {e}, - b2.opts().WithControlInput(e).WithAttr( - kXlaHasHostTransferAttrName, true)); + Node* send1 = + SendFromHost(ops::NodeOut(key_constant1, 0), "F1", "F1", "O1", {e}, + b2.opts().WithControlInput(e).WithAttr( + kXlaHasHostTransferAttrName, true)); Node* s1 = Sequencer( b2.opts().WithName("F1_sequencer").WithControlInputs({recv1, send1}), "F1"); @@ -1319,7 +1328,7 @@ TEST(EncapsulateSubgraphsTest, TwoFunctionsTwoOutside) { Node* key_constant2 = KeyPlaceholder("F2", b2.opts().WithName("F2_key_placeholder")); Node* recv2 = RecvAtHost( - ops::NodeOut(key_constant2, 0), "F2", "O1", {DT_FLOAT, DT_FLOAT}, + ops::NodeOut(key_constant2, 0), "F2", "F2", "O1", {DT_FLOAT, DT_FLOAT}, b2.opts().WithAttr(kXlaHasHostTransferAttrName, true)); Node* h = Binary(recv2, ops::NodeOut(recv2, 1), b2.opts() @@ -1327,7 +1336,7 @@ TEST(EncapsulateSubgraphsTest, TwoFunctionsTwoOutside) { .WithAttr("_encapsulate", "F2") .WithAttr("_outside", "O1")); Node* send2 = - SendFromHost(ops::NodeOut(key_constant2, 0), "F2", "O1", {h}, + SendFromHost(ops::NodeOut(key_constant2, 0), "F2", "F2", "O1", {h}, b2.opts().WithAttr(kXlaHasHostTransferAttrName, true)); Node* s2 = Sequencer( @@ -1406,7 +1415,7 @@ TEST(EncapsulateSubgraphsTest, TwoFunctionsTwoOutsideDependencyFromOutside) { {{"Tinputs", absl::Span({DT_FLOAT, DT_FLOAT})}, {"Toutputs", absl::Span({DT_FLOAT})}, {"ancestors", absl::Span({})}, - {"key", "host_compute_channel_F1_O1"}, + {"key", "host_compute_channel_F1_F1_O1"}, {"shape_inference_graph", NameAttrList()}, {"shapes", absl::Span({shape_proto_expected})}, @@ -1430,7 +1439,7 @@ TEST(EncapsulateSubgraphsTest, TwoFunctionsTwoOutsideDependencyFromOutside) { {{"Tinputs", absl::Span({DT_FLOAT})}, {"Toutputs", absl::Span({DT_FLOAT})}, {"ancestors", absl::Span({})}, - {"key", "host_compute_channel_F2_O1"}, + {"key", "host_compute_channel_F2_F2_O1"}, {"shape_inference_graph", NameAttrList()}, {"shapes", absl::Span({shape_proto_expected})}, @@ -1449,7 +1458,7 @@ TEST(EncapsulateSubgraphsTest, TwoFunctionsTwoOutsideDependencyFromOutside) { Node* key_constant1 = KeyPlaceholder("F1", b2.opts().WithName("F1_key_placeholder")); - Node* recv1 = RecvAtHost(ops::NodeOut(key_constant1, 0), "F1", "O1", + Node* recv1 = RecvAtHost(ops::NodeOut(key_constant1, 0), "F1", "F1", "O1", {DT_FLOAT, DT_FLOAT}, b2.opts()); Node* e = Binary(ops::NodeOut(recv1, 0), ops::NodeOut(recv1, 1), b2.opts() @@ -1457,8 +1466,8 @@ TEST(EncapsulateSubgraphsTest, TwoFunctionsTwoOutsideDependencyFromOutside) { .WithControlInputs({recv1}) .WithAttr("_encapsulate", "F1") .WithAttr("_outside", "O1")); - Node* send1 = SendFromHost(ops::NodeOut(key_constant1, 0), "F1", "O1", {e}, - b2.opts().WithControlInput(e)); + Node* send1 = SendFromHost(ops::NodeOut(key_constant1, 0), "F1", "F1", "O1", + {e}, b2.opts().WithControlInput(e)); Node* s1 = Sequencer( b2.opts().WithName("F1_sequencer").WithControlInputs({recv1, send1}), "F1"); @@ -1470,14 +1479,14 @@ TEST(EncapsulateSubgraphsTest, TwoFunctionsTwoOutsideDependencyFromOutside) { Node* key_constant2 = KeyPlaceholder("F2", b2.opts().WithName("F2_key_placeholder")); - Node* recv2 = RecvAtHost(ops::NodeOut(key_constant2, 0), "F2", "O1", + Node* recv2 = RecvAtHost(ops::NodeOut(key_constant2, 0), "F2", "F2", "O1", {DT_FLOAT}, b2.opts()); Node* h = Unary(recv2, b2.opts() .WithName("H") .WithAttr("_encapsulate", "F2") .WithAttr("_outside", "O1")); - Node* send2 = SendFromHost(ops::NodeOut(key_constant2, 0), "F2", "O1", {h}, - b2.opts()); + Node* send2 = SendFromHost(ops::NodeOut(key_constant2, 0), "F2", "F2", "O1", + {h}, b2.opts()); Node* s2 = Sequencer( b2.opts().WithName("F2_sequencer").WithControlInputs({recv2, send2}), @@ -1540,7 +1549,7 @@ TEST(EncapsulateSubgraphsTest, OutsideCompilationNoInputs) { {{"Tinputs", absl::Span({DT_FLOAT})}, {"Toutputs", absl::Span({DT_FLOAT})}, {"ancestors", absl::Span({})}, - {"key", "host_compute_channel_F1_O1"}, + {"key", "host_compute_channel_F1_F1_O1"}, {"shape_inference_graph", NameAttrList()}, {"shapes", absl::Span({shape_proto_expected})}, @@ -1559,14 +1568,14 @@ TEST(EncapsulateSubgraphsTest, OutsideCompilationNoInputs) { Node* key_constant = KeyPlaceholder("F1", b2.opts().WithName("F1_key_placeholder")); - Node* recv1 = RecvAtHost(ops::NodeOut(key_constant, 0), "F1", "O1", + Node* recv1 = RecvAtHost(ops::NodeOut(key_constant, 0), "F1", "F1", "O1", {DT_FLOAT}, b2.opts()); Node* e = Unary(recv1, b2.opts() .WithName("E") .WithAttr("_encapsulate", "F1") .WithAttr("_outside", "O1")); - Node* send1 = - SendFromHost(ops::NodeOut(key_constant, 0), "F1", "O1", {e}, b2.opts()); + Node* send1 = SendFromHost(ops::NodeOut(key_constant, 0), "F1", "F1", "O1", + {e}, b2.opts()); Node* s1 = Sequencer( b2.opts().WithName("F1_sequencer").WithControlInputs({send1, recv1}), "F1"); @@ -1630,7 +1639,7 @@ TEST(EncapsulateSubgraphsTest, OutsideCompilationControlInput) { {{"Tinputs", absl::Span({DT_FLOAT})}, {"Toutputs", absl::Span({DT_FLOAT})}, {"ancestors", absl::Span({})}, - {"key", "host_compute_channel_F1_O1"}, + {"key", "host_compute_channel_F1_F1_O1"}, {"shape_inference_graph", NameAttrList()}, {"shapes", absl::Span({shape_proto_expected})}, @@ -1650,15 +1659,15 @@ TEST(EncapsulateSubgraphsTest, OutsideCompilationControlInput) { Node* key_constant = KeyPlaceholder("F1", b2.opts().WithName("F1_key_placeholder")); - Node* recv1 = RecvAtHost(ops::NodeOut(key_constant, 0), "F1", "O1", + Node* recv1 = RecvAtHost(ops::NodeOut(key_constant, 0), "F1", "F1", "O1", {DT_FLOAT}, b2.opts()); Node* e = Unary(recv1, b2.opts() .WithName("E") .WithControlInput(recv1) .WithAttr("_encapsulate", "F1") .WithAttr("_outside", "O1")); - Node* send1 = - SendFromHost(ops::NodeOut(key_constant, 0), "F1", "O1", {e}, b2.opts()); + Node* send1 = SendFromHost(ops::NodeOut(key_constant, 0), "F1", "F1", "O1", + {e}, b2.opts()); Node* s1 = Sequencer( b2.opts().WithName("F1_sequencer").WithControlInputs({recv1, send1}), "F1"); @@ -1707,20 +1716,21 @@ TEST(EncapsulateSubgraphsTest, OutsideCompilationNoOutputs) { GraphDefBuilder shape1(GraphDefBuilder::kFailImmediately); Node* key_constant = KeyPlaceholder("F1", shape1.opts()); Node* recv1 = - RecvAtHost(ops::NodeOut(key_constant, 0), "F1", "O1", {DT_FLOAT}, + RecvAtHost(ops::NodeOut(key_constant, 0), "F1", "F1", "O1", {DT_FLOAT}, shape1.opts().WithAttr(kXlaHasHostTransferAttrName, true)); Node* e = Unary(ops::NodeOut(recv1, 0), shape1.opts() .WithName("E") .WithAttr("_encapsulate", "F1") .WithAttr("_outside", "O1")); - SendFromHost(ops::NodeOut(key_constant, 0), "F1", "O1", {e}, + SendFromHost(ops::NodeOut(key_constant, 0), "F1", "F1", "O1", {e}, shape1.opts().WithAttr(kXlaHasHostTransferAttrName, true)); TF_EXPECT_OK( - AddGraphDefToFunctionLibrary(shape1, "F1_O1", &library_expected)); + AddGraphDefToFunctionLibrary(shape1, "F1_F1_O1", &library_expected)); } NameAttrList shape_inference_graph; - shape_inference_graph.set_name("_outside_compilation_shape_inference_F1_O1"); + shape_inference_graph.set_name( + "_outside_compilation_shape_inference_F1_F1_O1"); *library_expected.add_function() = FunctionDefHelper::Create( "F1", {"a_0_arg:float", "b_0_arg:float"}, {"e_0_retval_retval:float", "f_0_retval_retval:float"}, {}, @@ -1734,7 +1744,7 @@ TEST(EncapsulateSubgraphsTest, OutsideCompilationNoOutputs) { {{"Tinputs", absl::Span({DT_FLOAT})}, {"Toutputs", absl::Span({DT_FLOAT})}, {"ancestors", absl::Span({})}, - {"key", "host_compute_channel_F1_O1"}, + {"key", "host_compute_channel_F1_F1_O1"}, {"shape_inference_graph", shape_inference_graph}, {"shapes", absl::Span({})}, {"_outside_compilation_subgraph", "O1"}, @@ -1753,14 +1763,14 @@ TEST(EncapsulateSubgraphsTest, OutsideCompilationNoOutputs) { Node* key_constant = KeyPlaceholder("F1", b2.opts().WithName("F1_key_placeholder")); - Node* recv1 = RecvAtHost(ops::NodeOut(key_constant, 0), "F1", "O1", + Node* recv1 = RecvAtHost(ops::NodeOut(key_constant, 0), "F1", "F1", "O1", {DT_FLOAT}, b2.opts()); Node* e = Unary(recv1, b2.opts() .WithName("E") .WithAttr("_encapsulate", "F1") .WithAttr("_outside", "O1")); - Node* send1 = - SendFromHost(ops::NodeOut(key_constant, 0), "F1", "O1", {e}, b2.opts()); + Node* send1 = SendFromHost(ops::NodeOut(key_constant, 0), "F1", "F1", "O1", + {e}, b2.opts()); Node* s1 = Sequencer( b2.opts().WithName("F1_sequencer").WithControlInputs({recv1, send1}), "F1"); @@ -1810,20 +1820,21 @@ TEST(EncapsulateSubgraphsTest, OutsideCompilationControlOutput) { GraphDefBuilder shape1(GraphDefBuilder::kFailImmediately); Node* key_constant = KeyPlaceholder("F1", shape1.opts()); Node* recv1 = - RecvAtHost(ops::NodeOut(key_constant, 0), "F1", "O1", {DT_FLOAT}, + RecvAtHost(ops::NodeOut(key_constant, 0), "F1", "F1", "O1", {DT_FLOAT}, shape1.opts().WithAttr(kXlaHasHostTransferAttrName, true)); Node* e = Unary(ops::NodeOut(recv1, 0), shape1.opts() .WithName("E") .WithAttr("_encapsulate", "F1") .WithAttr("_outside", "O1")); - SendFromHost(ops::NodeOut(key_constant, 0), "F1", "O1", {e}, + SendFromHost(ops::NodeOut(key_constant, 0), "F1", "F1", "O1", {e}, shape1.opts().WithAttr(kXlaHasHostTransferAttrName, true)); TF_EXPECT_OK( - AddGraphDefToFunctionLibrary(shape1, "F1_O1", &library_expected)); + AddGraphDefToFunctionLibrary(shape1, "F1_F1_O1", &library_expected)); } NameAttrList shape_inference_graph; - shape_inference_graph.set_name("_outside_compilation_shape_inference_F1_O1"); + shape_inference_graph.set_name( + "_outside_compilation_shape_inference_F1_F1_O1"); *library_expected.add_function() = FunctionDefHelper::Create( "F1", {"a_0_arg:float", "b_0_arg:float"}, {"e_0_retval_retval:float", "f_0_retval_retval:float"}, {}, @@ -1841,7 +1852,7 @@ TEST(EncapsulateSubgraphsTest, OutsideCompilationControlOutput) { {{"Tinputs", absl::Span({DT_FLOAT})}, {"Toutputs", absl::Span({DT_FLOAT})}, {"ancestors", absl::Span({})}, - {"key", "host_compute_channel_F1_O1"}, + {"key", "host_compute_channel_F1_F1_O1"}, {"shape_inference_graph", shape_inference_graph}, {"shapes", absl::Span({})}, {"_outside_compilation_subgraph", "O1"}, @@ -1860,14 +1871,14 @@ TEST(EncapsulateSubgraphsTest, OutsideCompilationControlOutput) { Node* key_constant = KeyPlaceholder("F1", b2.opts().WithName("F1_key_placeholder")); - Node* recv1 = RecvAtHost(ops::NodeOut(key_constant, 0), "F1", "O1", + Node* recv1 = RecvAtHost(ops::NodeOut(key_constant, 0), "F1", "F1", "O1", {DT_FLOAT}, b2.opts()); Node* e = Unary(recv1, b2.opts() .WithName("E") .WithAttr("_encapsulate", "F1") .WithAttr("_outside", "O1")); - Node* send1 = SendFromHost(ops::NodeOut(key_constant, 0), "F1", "O1", {e}, - b2.opts().WithControlInput(e)); + Node* send1 = SendFromHost(ops::NodeOut(key_constant, 0), "F1", "F1", "O1", + {e}, b2.opts().WithControlInput(e)); Node* s1 = Sequencer( b2.opts().WithName("F1_sequencer").WithControlInputs({recv1, send1}), "F1"); @@ -1923,38 +1934,40 @@ TEST(EncapsulateSubgraphsTest, GraphDefBuilder shape1(GraphDefBuilder::kFailImmediately); Node* key_constant = KeyPlaceholder("F1", shape1.opts()); Node* recv1 = - RecvAtHost(ops::NodeOut(key_constant, 0), "F1", "O1", {DT_FLOAT}, + RecvAtHost(ops::NodeOut(key_constant, 0), "F1", "F1", "O1", {DT_FLOAT}, shape1.opts().WithAttr(kXlaHasHostTransferAttrName, true)); Node* e = Unary(ops::NodeOut(recv1, 0), shape1.opts() .WithName("E") .WithAttr("_encapsulate", "F1") .WithAttr("_outside", "O1")); - SendFromHost(ops::NodeOut(key_constant, 0), "F1", "O1", {e}, + SendFromHost(ops::NodeOut(key_constant, 0), "F1", "F1", "O1", {e}, shape1.opts().WithAttr(kXlaHasHostTransferAttrName, true)); TF_EXPECT_OK( - AddGraphDefToFunctionLibrary(shape1, "F1_O1", &library_expected)); + AddGraphDefToFunctionLibrary(shape1, "F1_F1_O1", &library_expected)); } { GraphDefBuilder shape2(GraphDefBuilder::kFailImmediately); Node* key_constant = KeyPlaceholder("F1", shape2.opts()); Node* recv2 = - RecvAtHost(ops::NodeOut(key_constant, 0), "F1", "O2", {DT_FLOAT}, + RecvAtHost(ops::NodeOut(key_constant, 0), "F1", "F1", "O2", {DT_FLOAT}, shape2.opts().WithAttr(kXlaHasHostTransferAttrName, true)); Node* g = Unary(ops::NodeOut(recv2, 0), shape2.opts() .WithName("G") .WithAttr("_encapsulate", "F1") .WithAttr("_outside", "O2")); - SendFromHost(ops::NodeOut(key_constant, 0), "F1", "O2", {g}, + SendFromHost(ops::NodeOut(key_constant, 0), "F1", "F1", "O2", {g}, shape2.opts().WithAttr(kXlaHasHostTransferAttrName, true)); TF_EXPECT_OK( - AddGraphDefToFunctionLibrary(shape2, "F1_O2", &library_expected)); + AddGraphDefToFunctionLibrary(shape2, "F1_F1_O2", &library_expected)); } NameAttrList shape_inference_graph1; - shape_inference_graph1.set_name("_outside_compilation_shape_inference_F1_O1"); + shape_inference_graph1.set_name( + "_outside_compilation_shape_inference_F1_F1_O1"); NameAttrList shape_inference_graph2; - shape_inference_graph2.set_name("_outside_compilation_shape_inference_F1_O2"); + shape_inference_graph2.set_name( + "_outside_compilation_shape_inference_F1_F1_O2"); *library_expected.add_function() = FunctionDefHelper::Create( "F1", {"a_0_arg:float", "b_0_arg:float"}, {"e_0_retval_retval:float", "h_0_retval_retval:float"}, {}, @@ -1971,7 +1984,7 @@ TEST(EncapsulateSubgraphsTest, {{"Tinputs", absl::Span({DT_FLOAT})}, {"Toutputs", absl::Span({DT_FLOAT})}, {"ancestors", absl::Span({})}, - {"key", "host_compute_channel_F1_O1"}, + {"key", "host_compute_channel_F1_F1_O1"}, {"shape_inference_graph", shape_inference_graph1}, {"shapes", absl::Span({})}, {"_outside_compilation_subgraph", "O1"}, @@ -1983,7 +1996,7 @@ TEST(EncapsulateSubgraphsTest, {{"Tinputs", absl::Span({DT_FLOAT})}, {"Toutputs", absl::Span({DT_FLOAT})}, {"ancestors", absl::Span({})}, - {"key", "host_compute_channel_F1_O2"}, + {"key", "host_compute_channel_F1_F1_O2"}, {"shape_inference_graph", shape_inference_graph2}, {"shapes", absl::Span({})}, {"_outside_compilation_subgraph", "O2"}, @@ -2005,7 +2018,7 @@ TEST(EncapsulateSubgraphsTest, Node* key_constant = KeyPlaceholder("F1", b2.opts().WithName("F1_key_placeholder")); Node* recv1 = - RecvAtHost(ops::NodeOut(key_constant, 0), "F1", "O1", {DT_FLOAT}, + RecvAtHost(ops::NodeOut(key_constant, 0), "F1", "F1", "O1", {DT_FLOAT}, b2.opts().WithAttr(kXlaHasHostTransferAttrName, true)); Node* e = Unary(recv1, b2.opts() @@ -2013,10 +2026,10 @@ TEST(EncapsulateSubgraphsTest, .WithAttr("_encapsulate", "F1") .WithAttr("_outside", "O1")); Node* send1 = - SendFromHost(ops::NodeOut(key_constant, 0), "F1", "O1", {e}, + SendFromHost(ops::NodeOut(key_constant, 0), "F1", "F1", "O1", {e}, b2.opts().WithAttr(kXlaHasHostTransferAttrName, true)); Node* recv2 = - RecvAtHost(ops::NodeOut(key_constant, 0), "F1", "O2", {DT_FLOAT}, + RecvAtHost(ops::NodeOut(key_constant, 0), "F1", "F1", "O2", {DT_FLOAT}, b2.opts().WithAttr(kXlaHasHostTransferAttrName, true)); Node* g = Unary(recv2, b2.opts() .WithName("G") @@ -2024,7 +2037,7 @@ TEST(EncapsulateSubgraphsTest, .WithAttr("_outside", "O2") .WithControlInput(e)); Node* send2 = - SendFromHost(ops::NodeOut(key_constant, 0), "F1", "O2", {g}, + SendFromHost(ops::NodeOut(key_constant, 0), "F1", "F1", "O2", {g}, b2.opts().WithAttr(kXlaHasHostTransferAttrName, true)); Node* s1 = Sequencer(b2.opts() .WithName("F1_sequencer") @@ -2081,20 +2094,21 @@ TEST(EncapsulateSubgraphsTest, GraphDefBuilder shape1(GraphDefBuilder::kFailImmediately); Node* key_constant = KeyPlaceholder("F1", shape1.opts()); Node* recv2 = - RecvAtHost(ops::NodeOut(key_constant, 0), "F1", "O1", {DT_FLOAT}, + RecvAtHost(ops::NodeOut(key_constant, 0), "F1", "F1", "O1", {DT_FLOAT}, shape1.opts().WithAttr(kXlaHasHostTransferAttrName, true)); Node* e = Unary(ops::NodeOut(recv2, 0), shape1.opts() .WithName("E") .WithAttr("_encapsulate", "F1") .WithAttr("_outside", "O1")); - SendFromHost(ops::NodeOut(key_constant, 0), "F1", "O1", {e}, + SendFromHost(ops::NodeOut(key_constant, 0), "F1", "F1", "O1", {e}, shape1.opts().WithAttr(kXlaHasHostTransferAttrName, true)); TF_EXPECT_OK( - AddGraphDefToFunctionLibrary(shape1, "F1_O1", &library_expected)); + AddGraphDefToFunctionLibrary(shape1, "F1_F1_O1", &library_expected)); } NameAttrList shape_inference_graph; - shape_inference_graph.set_name("_outside_compilation_shape_inference_F1_O1"); + shape_inference_graph.set_name( + "_outside_compilation_shape_inference_F1_F1_O1"); *library_expected.add_function() = FunctionDefHelper::Create( "F1", {"a_0_arg:float", "b_0_arg:float"}, {"e_0_retval_retval:float", "h_0_retval_retval:float"}, {}, @@ -2111,7 +2125,7 @@ TEST(EncapsulateSubgraphsTest, {{"Tinputs", absl::Span({DT_FLOAT})}, {"Toutputs", absl::Span({})}, {"ancestors", absl::Span({})}, - {"key", "host_compute_channel_F1_O2"}, + {"key", "host_compute_channel_F1_F1_O2"}, {"shape_inference_graph", NameAttrList()}, {"shapes", absl::Span({})}, {"_outside_compilation_subgraph", "O2"}, @@ -2126,7 +2140,7 @@ TEST(EncapsulateSubgraphsTest, {{"Tinputs", absl::Span({DT_FLOAT})}, {"Toutputs", absl::Span({DT_FLOAT})}, {"ancestors", absl::Span({})}, - {"key", "host_compute_channel_F1_O1"}, + {"key", "host_compute_channel_F1_F1_O1"}, {"shape_inference_graph", shape_inference_graph}, {"shapes", absl::Span({})}, {"_outside_compilation_subgraph", "O1"}, @@ -2146,17 +2160,17 @@ TEST(EncapsulateSubgraphsTest, Node* key_constant = KeyPlaceholder("F1", b2.opts().WithName("F1_key_placeholder")); Node* recv1 = - RecvAtHost(ops::NodeOut(key_constant, 0), "F1", "O1", {DT_FLOAT}, + RecvAtHost(ops::NodeOut(key_constant, 0), "F1", "F1", "O1", {DT_FLOAT}, b2.opts().WithAttr(kXlaHasHostTransferAttrName, true)); Node* e = Unary(recv1, b2.opts() .WithName("E") .WithAttr("_encapsulate", "F1") .WithAttr("_outside", "O1")); Node* send = - SendFromHost(ops::NodeOut(key_constant, 0), "F1", "O1", {e}, + SendFromHost(ops::NodeOut(key_constant, 0), "F1", "F1", "O1", {e}, b2.opts().WithAttr(kXlaHasHostTransferAttrName, true)); Node* recv2 = - RecvAtHost(ops::NodeOut(key_constant, 0), "F1", "O2", {DT_FLOAT}, + RecvAtHost(ops::NodeOut(key_constant, 0), "F1", "F1", "O2", {DT_FLOAT}, b2.opts().WithAttr(kXlaHasHostTransferAttrName, true)); /*Node* g =*/Unary(recv2, b2.opts() .WithName("G") @@ -2223,20 +2237,21 @@ TEST(EncapsulateSubgraphsTest, OutsideCompilationClusterDependency) { GraphDefBuilder shape1(GraphDefBuilder::kFailImmediately); Node* key_constant = KeyPlaceholder("F1", shape1.opts()); Node* recv2 = - RecvAtHost(ops::NodeOut(key_constant, 0), "F1", "O1", {DT_FLOAT}, + RecvAtHost(ops::NodeOut(key_constant, 0), "F1", "F1", "O1", {DT_FLOAT}, shape1.opts().WithAttr(kXlaHasHostTransferAttrName, true)); Node* e = Unary(ops::NodeOut(recv2, 0), shape1.opts() .WithName("E") .WithAttr("_encapsulate", "F1") .WithAttr("_outside", "O1")); - SendFromHost(ops::NodeOut(key_constant, 0), "F1", "O1", {e}, + SendFromHost(ops::NodeOut(key_constant, 0), "F1", "F1", "O1", {e}, shape1.opts().WithAttr(kXlaHasHostTransferAttrName, true)); TF_EXPECT_OK( - AddGraphDefToFunctionLibrary(shape1, "F1_O1", &library_expected)); + AddGraphDefToFunctionLibrary(shape1, "F1_F1_O1", &library_expected)); } NameAttrList shape_inference_graph; - shape_inference_graph.set_name("_outside_compilation_shape_inference_F1_O1"); + shape_inference_graph.set_name( + "_outside_compilation_shape_inference_F1_F1_O1"); *library_expected.add_function() = FunctionDefHelper::Create( "F1", {"a_0_arg:float", "b_0_arg:float"}, {"e_0_retval_retval:float", "h_0_retval_retval:float"}, {}, @@ -2250,7 +2265,7 @@ TEST(EncapsulateSubgraphsTest, OutsideCompilationClusterDependency) { {{"Tinputs", absl::Span({DT_FLOAT})}, {"Toutputs", absl::Span({DT_FLOAT})}, {"ancestors", absl::Span({})}, - {"key", "host_compute_channel_F1_O1"}, + {"key", "host_compute_channel_F1_F1_O1"}, {"shape_inference_graph", shape_inference_graph}, {"shapes", absl::Span({})}, {"_outside_compilation_subgraph", "O1"}, @@ -2262,7 +2277,7 @@ TEST(EncapsulateSubgraphsTest, OutsideCompilationClusterDependency) { {{"Tinputs", absl::Span({DT_FLOAT})}, {"Toutputs", absl::Span({})}, {"ancestors", absl::Span({})}, - {"key", "host_compute_channel_F1_O2"}, + {"key", "host_compute_channel_F1_F1_O2"}, {"shape_inference_graph", NameAttrList()}, {"shapes", absl::Span({})}, {"_outside_compilation_subgraph", "O2"}, @@ -2276,7 +2291,7 @@ TEST(EncapsulateSubgraphsTest, OutsideCompilationClusterDependency) { {{"Tinputs", absl::Span({DT_FLOAT})}, {"Toutputs", absl::Span({})}, {"ancestors", absl::Span({})}, - {"key", "host_compute_channel_F1_O3"}, + {"key", "host_compute_channel_F1_F1_O3"}, {"shape_inference_graph", NameAttrList()}, {"shapes", absl::Span({})}, {"_outside_compilation_subgraph", "O3"}, @@ -2299,17 +2314,17 @@ TEST(EncapsulateSubgraphsTest, OutsideCompilationClusterDependency) { Node* key_constant = KeyPlaceholder("F1", b2.opts().WithName("F1_key_placeholder")); Node* recv1 = - RecvAtHost(ops::NodeOut(key_constant, 0), "F1", "O1", {DT_FLOAT}, + RecvAtHost(ops::NodeOut(key_constant, 0), "F1", "F1", "O1", {DT_FLOAT}, b2.opts().WithAttr(kXlaHasHostTransferAttrName, true)); Node* e = Unary(recv1, b2.opts() .WithName("E") .WithAttr("_encapsulate", "F1") .WithAttr("_outside", "O1")); Node* send = - SendFromHost(ops::NodeOut(key_constant, 0), "F1", "O1", {e}, + SendFromHost(ops::NodeOut(key_constant, 0), "F1", "F1", "O1", {e}, b2.opts().WithAttr(kXlaHasHostTransferAttrName, true)); Node* recv2 = - RecvAtHost(ops::NodeOut(key_constant, 0), "F1", "O2", {DT_FLOAT}, + RecvAtHost(ops::NodeOut(key_constant, 0), "F1", "F1", "O2", {DT_FLOAT}, b2.opts().WithAttr(kXlaHasHostTransferAttrName, true)); Node* g = Unary(recv2, b2.opts() .WithName("G") @@ -2317,7 +2332,7 @@ TEST(EncapsulateSubgraphsTest, OutsideCompilationClusterDependency) { .WithAttr("_outside", "O2") .WithControlInput(e)); Node* recv3 = - RecvAtHost(ops::NodeOut(key_constant, 0), "F1", "O3", {DT_FLOAT}, + RecvAtHost(ops::NodeOut(key_constant, 0), "F1", "F1", "O3", {DT_FLOAT}, b2.opts().WithAttr(kXlaHasHostTransferAttrName, true)); /*Node* i =*/Binary(recv3, e, b2.opts() @@ -2373,20 +2388,21 @@ TEST(EncapsulateSubgraphsTest, OutsideCompilationNoInputsOrOutputs) { GraphDefBuilder shape1(GraphDefBuilder::kFailImmediately); Node* key_constant = KeyPlaceholder("F1", shape1.opts()); Node* recv2 = - RecvAtHost(ops::NodeOut(key_constant, 0), "F1", "O1", {DT_FLOAT}, + RecvAtHost(ops::NodeOut(key_constant, 0), "F1", "F1", "O1", {DT_FLOAT}, shape1.opts().WithAttr(kXlaHasHostTransferAttrName, true)); Node* e = Unary(ops::NodeOut(recv2, 0), shape1.opts() .WithName("E") .WithAttr("_encapsulate", "F1") .WithAttr("_outside", "O1")); - SendFromHost(ops::NodeOut(key_constant, 0), "F1", "O1", {e}, + SendFromHost(ops::NodeOut(key_constant, 0), "F1", "F1", "O1", {e}, shape1.opts().WithAttr(kXlaHasHostTransferAttrName, true)); TF_EXPECT_OK( - AddGraphDefToFunctionLibrary(shape1, "F1_O1", &library_expected)); + AddGraphDefToFunctionLibrary(shape1, "F1_F1_O1", &library_expected)); } NameAttrList shape_inference_graph; - shape_inference_graph.set_name("_outside_compilation_shape_inference_F1_O1"); + shape_inference_graph.set_name( + "_outside_compilation_shape_inference_F1_F1_O1"); *library_expected.add_function() = FunctionDefHelper::Create( "F1", {"a_0_arg:float", "b_0_arg:float"}, {"e_0_retval_retval:float", "f_0_retval_retval:float"}, {}, @@ -2400,7 +2416,7 @@ TEST(EncapsulateSubgraphsTest, OutsideCompilationNoInputsOrOutputs) { {{"Tinputs", absl::Span({DT_FLOAT})}, {"Toutputs", absl::Span({DT_FLOAT})}, {"ancestors", absl::Span({})}, - {"key", "host_compute_channel_F1_O1"}, + {"key", "host_compute_channel_F1_F1_O1"}, {"shape_inference_graph", shape_inference_graph}, {"shapes", absl::Span({})}, {"_outside_compilation_subgraph", "O1"}, @@ -2420,14 +2436,14 @@ TEST(EncapsulateSubgraphsTest, OutsideCompilationNoInputsOrOutputs) { Node* key_constant = KeyPlaceholder("F1", b2.opts().WithName("F1_key_placeholder")); Node* recv = - RecvAtHost(ops::NodeOut(key_constant, 0), "F1", "O1", {DT_FLOAT}, + RecvAtHost(ops::NodeOut(key_constant, 0), "F1", "F1", "O1", {DT_FLOAT}, b2.opts().WithAttr(kXlaHasHostTransferAttrName, true)); Node* e = Unary(recv, b2.opts() .WithName("E") .WithAttr("_encapsulate", "F1") .WithAttr("_outside", "O1")); Node* send = - SendFromHost(ops::NodeOut(key_constant, 0), "F1", "O1", {e}, + SendFromHost(ops::NodeOut(key_constant, 0), "F1", "F1", "O1", {e}, b2.opts().WithAttr(kXlaHasHostTransferAttrName, true)); Node* s = Sequencer( b2.opts().WithName("F1_sequencer").WithControlInputs({recv, send}), @@ -2482,21 +2498,22 @@ TEST(EncapsulateSubgraphsTest, OutsideCompilationShapeInference) { GraphDefBuilder shape(GraphDefBuilder::kFailImmediately); Node* key_constant = KeyPlaceholder("F1", shape.opts()); Node* recv = RecvAtHost( - ops::NodeOut(key_constant, 0), "F1", "O1", {DT_FLOAT, DT_FLOAT}, + ops::NodeOut(key_constant, 0), "F1", "F1", "O1", {DT_FLOAT, DT_FLOAT}, shape.opts().WithAttr(kXlaHasHostTransferAttrName, true)); Node* e = BinaryUnknownShape(recv, ops::NodeOut(recv, 1), shape.opts() .WithName("E") .WithAttr("_encapsulate", "F1") .WithAttr("_outside", "O1")); - SendFromHost(ops::NodeOut(key_constant, 0), "F1", "O1", {e}, + SendFromHost(ops::NodeOut(key_constant, 0), "F1", "F1", "O1", {e}, shape.opts().WithAttr(kXlaHasHostTransferAttrName, true)); TF_EXPECT_OK( - AddGraphDefToFunctionLibrary(shape, "F1_O1", &library_expected)); + AddGraphDefToFunctionLibrary(shape, "F1_F1_O1", &library_expected)); } NameAttrList shape_inference_graph; - shape_inference_graph.set_name("_outside_compilation_shape_inference_F1_O1"); + shape_inference_graph.set_name( + "_outside_compilation_shape_inference_F1_F1_O1"); *library_expected.add_function() = test::function::XTimesTwo(); *library_expected.add_function() = FunctionDefHelper::Create( "F1", {"b_0_arg:float", "c_0_arg:float"}, {"f_0_retval_retval:float"}, {}, @@ -2513,7 +2530,7 @@ TEST(EncapsulateSubgraphsTest, OutsideCompilationShapeInference) { {{"Tinputs", absl::Span({DT_FLOAT, DT_FLOAT})}, {"Toutputs", absl::Span({DT_FLOAT})}, {"ancestors", absl::Span({})}, - {"key", "host_compute_channel_F1_O1"}, + {"key", "host_compute_channel_F1_F1_O1"}, {"shape_inference_graph", shape_inference_graph}, {"shapes", absl::Span({})}, {"_outside_compilation_subgraph", "O1"}, @@ -2534,7 +2551,7 @@ TEST(EncapsulateSubgraphsTest, OutsideCompilationShapeInference) { Node* key_constant = KeyPlaceholder("F1", b2.opts().WithName("F1_key_placeholder")); Node* recv = RecvAtHost( - ops::NodeOut(key_constant, 0), "F1", "O1", {DT_FLOAT, DT_FLOAT}, + ops::NodeOut(key_constant, 0), "F1", "F1", "O1", {DT_FLOAT, DT_FLOAT}, b2.opts().WithAttr(kXlaHasHostTransferAttrName, true)); Node* e = BinaryUnknownShape(recv, ops::NodeOut(recv, 1), b2.opts() @@ -2542,9 +2559,10 @@ TEST(EncapsulateSubgraphsTest, OutsideCompilationShapeInference) { .WithControlInputs({recv}) .WithAttr("_encapsulate", "F1") .WithAttr("_outside", "O1")); - Node* send = SendFromHost(ops::NodeOut(key_constant, 0), "F1", "O1", {e}, - b2.opts().WithControlInput(e).WithAttr( - kXlaHasHostTransferAttrName, true)); + Node* send = + SendFromHost(ops::NodeOut(key_constant, 0), "F1", "F1", "O1", {e}, + b2.opts().WithControlInput(e).WithAttr( + kXlaHasHostTransferAttrName, true)); Node* s = Sequencer( b2.opts().WithName("F1_sequencer").WithControlInputs({recv, send}), diff --git a/tensorflow/compiler/jit/encapsulate_util.cc b/tensorflow/compiler/jit/encapsulate_util.cc index ae0912c3f23..650f0669ce1 100644 --- a/tensorflow/compiler/jit/encapsulate_util.cc +++ b/tensorflow/compiler/jit/encapsulate_util.cc @@ -315,6 +315,9 @@ const char kOutsideCompilationOriginalNodeAttrName[] = const char kOutsideCompilationSrcOutputAttrName[] = "_xla_oc_to_oc_src_output"; const char kXlaControlDependenciesWithinXlaClusterAttrName[] = "_xla_control_dependencies_within_xla_cluster"; +const char kXlaIsLiftedArgAttrName[] = "_xla_is_lifted_arg"; +const char kXlaLiftedArgOutsideCompilationAttrName[] = "_xla_lifted_arg_oc"; +const char kXlaOutsideCompilationInputsAttrName[] = "_xla_oc_inputs"; Status PerformStaticShapeInferenceBeforeEncapsulation(Graph* g) { // Perform shape inference. diff --git a/tensorflow/compiler/jit/encapsulate_util.h b/tensorflow/compiler/jit/encapsulate_util.h index c873c2a888c..6c9becd963a 100644 --- a/tensorflow/compiler/jit/encapsulate_util.h +++ b/tensorflow/compiler/jit/encapsulate_util.h @@ -60,6 +60,23 @@ extern const char kOutsideCompilationSrcOutputAttrName[]; // (node names). extern const char kXlaControlDependenciesWithinXlaClusterAttrName[]; +// Attribute indicating that this node is an outside compilation node which is +// lifted out of If/While/function node. Attribute value will always be boolean +// value "true". +extern const char kXlaIsLiftedArgAttrName[]; + +// Attribute indicating that this node is a Placeholder node for an _Arg node +// lifted out of If/While/function node. Attribute value will be a string, which +// is the outside compilation cluster name sending the lifted arg node to host. +extern const char kXlaLiftedArgOutsideCompilationAttrName[]; + +// Attribute indicating that this is an IdentityN node receiving inputs for a +// outside compilation Placeholder node (the original outside compilation node +// is moved out of TPU comutation, and we left a Placeholder node there). +// Attribute value will be a string, which is the outside compilation cluster +// name for the outside compilation Placeholder node. +extern const char kXlaOutsideCompilationInputsAttrName[]; + // Information for XLA computation. struct XlaClusterInfo { // Add an explicitly-defined default constructor for this class. diff --git a/tensorflow/compiler/jit/extract_outside_compilation_pass.cc b/tensorflow/compiler/jit/extract_outside_compilation_pass.cc index 0667de9d230..3c52c140d64 100644 --- a/tensorflow/compiler/jit/extract_outside_compilation_pass.cc +++ b/tensorflow/compiler/jit/extract_outside_compilation_pass.cc @@ -472,6 +472,163 @@ Status ResetDeviceOrdinalToPlaceholderValue(Graph* g) { return Status::OK(); } +Status PostprocessLiftedArgs(Graph* g, FunctionLibraryDefinition* fld) { + std::unordered_map outside_compilation_attr_to_node; + for (Node* n : g->op_nodes()) { + bool is_lifted_arg; + string outside_compilation_attr; + if (GetNodeAttr(n->def(), kXlaIsLiftedArgAttrName, &is_lifted_arg).ok() && + GetNodeAttr(n->def(), "_xla_outside_compilation", + &outside_compilation_attr) + .ok()) { + TF_RET_CHECK(n->IsIdentity() || n->type_string() == "Placeholder"); + outside_compilation_attr_to_node[outside_compilation_attr] = n; + } + } + + for (Node* n : g->op_nodes()) { + if (!HasNodeAttr(n->def(), kXlaHasHostTransferAttrName)) { + continue; + } + + if (n->type_string() == "While") { + // Check if there is any lifted args in body function. + NameAttrList body_func; + TF_RETURN_IF_ERROR(GetNodeAttr(n->def(), "body", &body_func)); + const FunctionDef* body_fdef = fld->Find(body_func.name()); + TF_RET_CHECK(body_fdef); + bool has_lifted_args = false; + for (const NodeDef& ndef : body_fdef->node_def()) { + if (ndef.op() == "Placeholder" && + ndef.attr().find(kXlaLiftedArgOutsideCompilationAttrName) != + ndef.attr().end()) { + has_lifted_args = true; + break; + } + } + if (!has_lifted_args) { + continue; + } + + // Gather all lifted args. + std::unique_ptr fbody; + TF_RETURN_IF_ERROR(FunctionDefToBodyHelper( + *body_fdef, AttrSlice(&body_func.attr()), fld, &fbody)); + Graph* body_graph = fbody->graph; + std::vector> + lifted_arg_node_and_outside_compilation_node; + for (Node* n : body_graph->op_nodes()) { + string oc_cluster; + if (n->type_string() == "Placeholder" && + GetNodeAttr(n->def(), kXlaLiftedArgOutsideCompilationAttrName, + &oc_cluster) + .ok()) { + TF_RET_CHECK(outside_compilation_attr_to_node.find(oc_cluster) != + outside_compilation_attr_to_node.end()); + lifted_arg_node_and_outside_compilation_node.push_back( + {n, outside_compilation_attr_to_node.at(oc_cluster)}); + } + } + + // Append lifted args' types to While node's T attribute. + std::vector dtypes; + TF_RETURN_IF_ERROR(GetNodeAttr(n->def(), "T", &dtypes)); + int original_arg_count = dtypes.size(); + for (auto i : lifted_arg_node_and_outside_compilation_node) { + DataType dtype; + TF_RET_CHECK(i.second->IsIdentity() || + i.second->type_string() == "Placeholder"); + if (i.second->IsIdentity()) { + TF_RETURN_IF_ERROR(GetNodeAttr(i.second->def(), "T", &dtype)); + } else { + TF_RETURN_IF_ERROR(GetNodeAttr(i.second->def(), "dtype", &dtype)); + } + dtypes.push_back(dtype); + } + n->ClearAttr("T"); + n->AddAttr("T", dtypes); + + // Add edges from outside compilation nodes to While node. + for (int i = original_arg_count; i < dtypes.size(); i++) { + Node* outside_compilation_node = + lifted_arg_node_and_outside_compilation_node[i - original_arg_count] + .second; + g->AddEdge(outside_compilation_node, 0, n, i); + } + + // In body_graph, create new _Arg/_Retval nodes, and replace lifted arg + // nodes with the new _Arg nodes. + for (int i = original_arg_count; i < dtypes.size(); i++) { + NodeDefBuilder arg_builder(absl::StrCat("arg_", i), "_Arg"); + arg_builder.Attr("T", dtypes[i]); + arg_builder.Attr("index", i); + NodeDef arg_def; + TF_RETURN_IF_ERROR(arg_builder.Finalize(&arg_def)); + Status s; + Node* arg_node = body_graph->AddNode(arg_def, &s); + TF_RETURN_IF_ERROR(s); + + NodeDefBuilder ret_builder(absl::StrCat("ret_", i), "_Retval"); + ret_builder.Attr("T", dtypes[i]); + ret_builder.Attr("index", i); + ret_builder.Input(arg_node->name(), 0, dtypes[i]); + NodeDef ret_def; + TF_RETURN_IF_ERROR(ret_builder.Finalize(&ret_def)); + Node* ret_node = body_graph->AddNode(ret_def, &s); + TF_RETURN_IF_ERROR(s); + body_graph->AddEdge(arg_node, 0, ret_node, 0); + + Node* lifted_arg_node = + lifted_arg_node_and_outside_compilation_node[i - original_arg_count] + .first; + std::vector out_edges(lifted_arg_node->out_edges().begin(), + lifted_arg_node->out_edges().end()); + for (const Edge* e : out_edges) { + if (e->IsControlEdge()) { + body_graph->AddControlEdge(arg_node, e->dst()); + } else { + body_graph->AddEdge(arg_node, 0, e->dst(), e->dst_input()); + } + } + + body_graph->RemoveNode(lifted_arg_node); + } + FunctionDef rewritten_body_fdef; + TF_RETURN_IF_ERROR(GraphToFunctionDef(*body_graph, body_func.name(), + &rewritten_body_fdef)); + TF_RETURN_IF_ERROR( + fld->ReplaceFunction(body_func.name(), rewritten_body_fdef)); + + // In cond_graph, add new _Arg nodes. + NameAttrList cond_func; + TF_RETURN_IF_ERROR(GetNodeAttr(n->def(), "cond", &cond_func)); + const FunctionDef* cond_fdef = fld->Find(cond_func.name()); + TF_RET_CHECK(cond_fdef); + std::unique_ptr cond_fbody; + TF_RETURN_IF_ERROR(FunctionDefToBodyHelper( + *cond_fdef, AttrSlice(&cond_func.attr()), fld, &cond_fbody)); + Graph* cond_graph = cond_fbody->graph; + for (int i = original_arg_count; i < dtypes.size(); i++) { + NodeDefBuilder arg_builder(absl::StrCat("arg_", i), "_Arg"); + arg_builder.Attr("T", dtypes[i]); + arg_builder.Attr("index", i); + NodeDef arg_def; + TF_RETURN_IF_ERROR(arg_builder.Finalize(&arg_def)); + Status s; + cond_graph->AddNode(arg_def, &s); + TF_RETURN_IF_ERROR(s); + } + FunctionDef rewritten_cond_fdef; + TF_RETURN_IF_ERROR(GraphToFunctionDef(*cond_graph, cond_func.name(), + &rewritten_cond_fdef)); + TF_RETURN_IF_ERROR( + fld->ReplaceFunction(cond_func.name(), rewritten_cond_fdef)); + } + } + + return Status::OK(); +} + // For an XLA computation, builds host side graph given all outside compilation // graphs inside it. The host side graph contains: // 1) a "sequencer" node (we will add control edge between XlaRecvAtHost and @@ -600,6 +757,9 @@ Status ConstructHostGraph( TF_RETURN_IF_ERROR(PostprocessEdgesBetweenOutsideCompilations( &host_graph, outside_compilation_attr_name)); + // Postprocess lifted arg nodes. + TF_RETURN_IF_ERROR(PostprocessLiftedArgs(&host_graph, fld)); + if (VLOG_IS_ON(4)) { DumpGraphToFile(absl::StrCat("extract_outside_compilation_host_graph_for_", xla_cluster_name), @@ -1483,7 +1643,8 @@ Status RewriteOutsideCompilationSubgraphFn::operator()( std::unique_ptr* graph, std::vector* input_permutation, std::vector* output_permutation, NodeDef* node_def) { string old_name = node_def->op(); - string new_name = absl::StrCat(xla_cluster_name_, "_", old_name); + string new_name = + absl::StrCat(xla_cluster_name_, "_", new_function_name_, "_", old_name); node_def->set_op(new_name); node_def->set_name(new_name); @@ -1632,7 +1793,8 @@ Status ExtractOutsideCompilationForFunction( // Encapsulate outside_compilation cluster into function call node. std::unique_ptr graph_out; RewriteOutsideCompilationSubgraphFn rewrite_fn( - xla_cluster_attr_name, outside_compilation_attr_name, xla_cluster_name); + xla_cluster_attr_name, outside_compilation_attr_name, xla_cluster_name, + new_func_name); TF_RETURN_IF_ERROR(EncapsulateSubgraphsInFunctions( outside_compilation_attr_name, *fbody->graph, rewrite_fn, /*reuse_existing_functions=*/true, &graph_out, fld)); diff --git a/tensorflow/compiler/jit/extract_outside_compilation_pass.h b/tensorflow/compiler/jit/extract_outside_compilation_pass.h index 0a29fdaa5c8..5c86cc45316 100644 --- a/tensorflow/compiler/jit/extract_outside_compilation_pass.h +++ b/tensorflow/compiler/jit/extract_outside_compilation_pass.h @@ -46,10 +46,11 @@ class RewriteOutsideCompilationSubgraphFn { RewriteOutsideCompilationSubgraphFn( const string& xla_cluster_attr_name, const string& outside_compilation_attr_name, - const string& xla_cluster_name) + const string& xla_cluster_name, const string& new_function_name) : xla_cluster_attr_name_(xla_cluster_attr_name), outside_compilation_attr_name_(outside_compilation_attr_name), - xla_cluster_name_(xla_cluster_name) {} + xla_cluster_name_(xla_cluster_name), + new_function_name_(new_function_name) {} Status operator()(const std::vector&, std::unique_ptr* graph, @@ -60,6 +61,7 @@ class RewriteOutsideCompilationSubgraphFn { string xla_cluster_attr_name_; string outside_compilation_attr_name_; string xla_cluster_name_; + string new_function_name_; }; // For an XLA computation function, replace all outside compilations with diff --git a/tensorflow/compiler/jit/extract_outside_compilation_pass_test.cc b/tensorflow/compiler/jit/extract_outside_compilation_pass_test.cc index 2717487c78e..2ee2e20f74d 100644 --- a/tensorflow/compiler/jit/extract_outside_compilation_pass_test.cc +++ b/tensorflow/compiler/jit/extract_outside_compilation_pass_test.cc @@ -57,7 +57,7 @@ TEST(RewriteOutsideCompilationSubgraphFnTest, Basic) { add_node->AddAttr(kXlaConnectedToXlaComputationAttrName, "cluster"); add_node->AddAttr(kXlaConnectedFromXlaComputationAttrName, "cluster"); - RewriteOutsideCompilationSubgraphFn rewrite_fn("_xla", "_oc", "cluster"); + RewriteOutsideCompilationSubgraphFn rewrite_fn("_xla", "_oc", "cluster", ""); std::vector arg_source_tensors; NodeDef call_node_def; call_node_def.set_op("0"); @@ -72,7 +72,7 @@ TEST(RewriteOutsideCompilationSubgraphFnTest, Basic) { for (Node *n : g->nodes()) { EXPECT_NE(n->type_string(), "_Arg"); } - Node *recv_at_host = node_name_image["outside_compilation_cluster_0_recv"]; + Node *recv_at_host = node_name_image["outside_compilation_cluster__0_recv"]; EXPECT_NE(recv_at_host, nullptr); std::vector recv_at_host_dtypes; TF_CHECK_OK( @@ -85,7 +85,7 @@ TEST(RewriteOutsideCompilationSubgraphFnTest, Basic) { for (Node *n : g->nodes()) { EXPECT_NE(n->type_string(), "_Retval"); } - Node *send_from_host = node_name_image["outside_compilation_cluster_0_send"]; + Node *send_from_host = node_name_image["outside_compilation_cluster__0_send"]; EXPECT_NE(send_from_host, nullptr); std::vector send_from_host_dtypes; TF_CHECK_OK( @@ -118,7 +118,7 @@ TEST(RewriteOutsideCompilationSubgraphFnTest, Basic) { TF_CHECK_OK(GetNodeAttr(AttrSlice(&call_node_def.attr()), "shape_inference_graph", &shape_inference_graph)); EXPECT_EQ(shape_inference_graph.name(), - "_outside_compilation_shape_inference_cluster_0"); + "_outside_compilation_shape_inference_cluster__0"); } TEST(RewriteOutsideCompilationSubgraphFnTest, NoSendFromHost) { @@ -128,7 +128,7 @@ TEST(RewriteOutsideCompilationSubgraphFnTest, NoSendFromHost) { std::unique_ptr g(new Graph(OpRegistry::Global())); TF_CHECK_OK(s.ToGraph(g.get())); - RewriteOutsideCompilationSubgraphFn rewrite_fn("_xla", "_oc", "cluster"); + RewriteOutsideCompilationSubgraphFn rewrite_fn("_xla", "_oc", "cluster", ""); std::vector arg_source_tensors; NodeDef call_node_def; call_node_def.set_op("0"); @@ -139,9 +139,9 @@ TEST(RewriteOutsideCompilationSubgraphFnTest, NoSendFromHost) { // Check key placeholder and RecvAtHost is present, but SendFromHost is not. Node *key_placeholder = node_name_image["cluster_key_placeholder"]; EXPECT_NE(key_placeholder, nullptr); - Node *recv_at_host = node_name_image["outside_compilation_cluster_0_recv"]; + Node *recv_at_host = node_name_image["outside_compilation_cluster__0_recv"]; EXPECT_NE(recv_at_host, nullptr); - Node *send_from_host = node_name_image["outside_compilation_cluster_0_send"]; + Node *send_from_host = node_name_image["outside_compilation_cluster__0_send"]; EXPECT_EQ(send_from_host, nullptr); } @@ -154,7 +154,7 @@ TEST(RewriteOutsideCompilationSubgraphFnTest, NoRecvAtHost) { std::unique_ptr g(new Graph(OpRegistry::Global())); TF_CHECK_OK(s.ToGraph(g.get())); - RewriteOutsideCompilationSubgraphFn rewrite_fn("_xla", "_oc", "cluster"); + RewriteOutsideCompilationSubgraphFn rewrite_fn("_xla", "_oc", "cluster", ""); std::vector arg_source_tensors; NodeDef call_node_def; call_node_def.set_op("0"); @@ -165,9 +165,9 @@ TEST(RewriteOutsideCompilationSubgraphFnTest, NoRecvAtHost) { // Check key placeholder and SendFromHost is present, but RecvAtHost is not. Node *key_placeholder = node_name_image["cluster_key_placeholder"]; EXPECT_NE(key_placeholder, nullptr); - Node *recv_at_host = node_name_image["outside_compilation_cluster_0_recv"]; + Node *recv_at_host = node_name_image["outside_compilation_cluster__0_recv"]; EXPECT_EQ(recv_at_host, nullptr); - Node *send_from_host = node_name_image["outside_compilation_cluster_0_send"]; + Node *send_from_host = node_name_image["outside_compilation_cluster__0_send"]; EXPECT_NE(send_from_host, nullptr); } @@ -178,7 +178,7 @@ TEST(RewriteOutsideCompilationSubgraphFnTest, NoKeyPlaceholder) { std::unique_ptr g(new Graph(OpRegistry::Global())); TF_CHECK_OK(s.ToGraph(g.get())); - RewriteOutsideCompilationSubgraphFn rewrite_fn("_xla", "_oc", "cluster"); + RewriteOutsideCompilationSubgraphFn rewrite_fn("_xla", "_oc", "cluster", ""); std::vector arg_source_tensors; NodeDef call_node_def; call_node_def.set_op("0"); @@ -189,9 +189,9 @@ TEST(RewriteOutsideCompilationSubgraphFnTest, NoKeyPlaceholder) { // Check key placeholder/RecvAtHost/SendFromHost are not present. Node *key_placeholder = node_name_image["cluster_key_placeholder"]; EXPECT_EQ(key_placeholder, nullptr); - Node *recv_at_host = node_name_image["outside_compilation_cluster_0_recv"]; + Node *recv_at_host = node_name_image["outside_compilation_cluster__0_recv"]; EXPECT_EQ(recv_at_host, nullptr); - Node *send_from_host = node_name_image["outside_compilation_cluster_0_send"]; + Node *send_from_host = node_name_image["outside_compilation_cluster__0_send"]; EXPECT_EQ(send_from_host, nullptr); } @@ -210,7 +210,7 @@ TEST(RewriteOutsideCompilationSubgraphFnTest, ShapesInferred) { const0_node->AddAttr(kXlaInferredShapesAttrName, std::vector{shape}); - RewriteOutsideCompilationSubgraphFn rewrite_fn("_xla", "_oc", "cluster"); + RewriteOutsideCompilationSubgraphFn rewrite_fn("_xla", "_oc", "cluster", ""); std::vector arg_source_tensors; NodeDef call_node_def; call_node_def.set_op("0"); diff --git a/tensorflow/opensource_only.files b/tensorflow/opensource_only.files index 8dae36dd4b2..ea3ced0a4fb 100644 --- a/tensorflow/opensource_only.files +++ b/tensorflow/opensource_only.files @@ -1,273 +1,273 @@ -tensorflow/third_party/systemlibs/nsync.BUILD -tensorflow/third_party/systemlibs/absl_py.absl.flags.BUILD -tensorflow/third_party/systemlibs/google_cloud_cpp.google.cloud.bigtable.BUILD -tensorflow/third_party/systemlibs/build_defs.bzl.tpl -tensorflow/third_party/systemlibs/curl.BUILD -tensorflow/third_party/systemlibs/cython.BUILD -tensorflow/third_party/systemlibs/astor.BUILD -tensorflow/third_party/systemlibs/jsoncpp.BUILD -tensorflow/third_party/systemlibs/png.BUILD -tensorflow/third_party/systemlibs/pcre.BUILD -tensorflow/third_party/systemlibs/grpc.BUILD -tensorflow/third_party/systemlibs/protobuf.BUILD -tensorflow/third_party/systemlibs/double_conversion.BUILD -tensorflow/third_party/systemlibs/six.BUILD -tensorflow/third_party/systemlibs/zlib.BUILD -tensorflow/third_party/systemlibs/lmdb.BUILD -tensorflow/third_party/systemlibs/sqlite.BUILD -tensorflow/third_party/systemlibs/gast.BUILD -tensorflow/third_party/systemlibs/absl_py.BUILD -tensorflow/third_party/systemlibs/boringssl.BUILD -tensorflow/third_party/systemlibs/BUILD.tpl -tensorflow/third_party/systemlibs/BUILD -tensorflow/third_party/systemlibs/termcolor.BUILD -tensorflow/third_party/systemlibs/gif.BUILD -tensorflow/third_party/systemlibs/protobuf.bzl -tensorflow/third_party/systemlibs/snappy.BUILD -tensorflow/third_party/systemlibs/googleapis.BUILD -tensorflow/third_party/systemlibs/opt_einsum.BUILD -tensorflow/third_party/systemlibs/google_cloud_cpp.BUILD -tensorflow/third_party/systemlibs/re2.BUILD -tensorflow/third_party/systemlibs/swig.BUILD -tensorflow/third_party/systemlibs/syslibs_configure.bzl -tensorflow/third_party/systemlibs/absl_py.absl.testing.BUILD -tensorflow/third_party/pprof.BUILD -tensorflow/third_party/toolchains/remote/execution.bzl.tpl -tensorflow/third_party/toolchains/remote/BUILD.tpl -tensorflow/third_party/toolchains/remote/BUILD -tensorflow/third_party/toolchains/remote/configure.bzl -tensorflow/third_party/toolchains/cpus/py3/BUILD -tensorflow/third_party/toolchains/cpus/py/BUILD +tensorflow/contrib/tpu/profiler/pip_package/BUILD +tensorflow/contrib/tpu/profiler/pip_package/setup.py +tensorflow/contrib/tpu/profiler/pip_package/README +tensorflow/contrib/tpu/profiler/pip_package/build_pip_package.sh +tensorflow/contrib/tpu/profiler/pip_package/cloud_tpu_profiler/main.py +tensorflow/contrib/tpu/profiler/pip_package/cloud_tpu_profiler/__init__.py +tensorflow/contrib/mpi/BUILD +tensorflow/stream_executor/build_defs.bzl +tensorflow/python/autograph/core/config.py +tensorflow/tools/ci_build/remote/BUILD +tensorflow/tools/pip_package/README +tensorflow/tools/pip_package/MANIFEST.in +tensorflow/tools/pip_package/simple_console.py +tensorflow/tools/pip_package/build_pip_package.sh +tensorflow/tools/pip_package/check_load_py_test.py +tensorflow/tools/pip_package/pip_smoke_test.py +tensorflow/tools/pip_package/simple_console_for_windows.py +tensorflow/tools/pip_package/setup.py +tensorflow/tools/pip_package/BUILD +tensorflow/tools/lib_package/concat_licenses.sh +tensorflow/tools/lib_package/libtensorflow_test.c +tensorflow/tools/lib_package/LibTensorFlowTest.java +tensorflow/tools/lib_package/BUILD +tensorflow/tools/lib_package/libtensorflow_test.sh +tensorflow/tools/lib_package/README.md +tensorflow/tools/lib_package/libtensorflow_java_test.sh +tensorflow/tools/def_file_filter/def_file_filter_configure.bzl +tensorflow/tools/def_file_filter/BUILD +tensorflow/tools/def_file_filter/BUILD.tpl +tensorflow/tools/def_file_filter/def_file_filter.py.tpl +tensorflow/third_party/mkl/MKL_LICENSE +tensorflow/third_party/mkl/LICENSE +tensorflow/third_party/mkl/BUILD +tensorflow/third_party/mkl/mkl.BUILD +tensorflow/third_party/mkl/build_defs.bzl +tensorflow/third_party/backports_weakref.BUILD +tensorflow/third_party/toolchains/clang6/BUILD +tensorflow/third_party/toolchains/clang6/README.md +tensorflow/third_party/toolchains/clang6/repo.bzl +tensorflow/third_party/toolchains/clang6/CROSSTOOL.tpl +tensorflow/third_party/toolchains/clang6/clang.BUILD +tensorflow/third_party/toolchains/preconfig/ubuntu16.04/tensorrt5/build_defs.bzl +tensorflow/third_party/toolchains/preconfig/ubuntu16.04/tensorrt5/BUILD +tensorflow/third_party/toolchains/preconfig/ubuntu16.04/clang/BUILD +tensorflow/third_party/toolchains/preconfig/ubuntu16.04/clang/cc_toolchain_config.bzl +tensorflow/third_party/toolchains/preconfig/ubuntu16.04/clang/dummy_toolchain.bzl +tensorflow/third_party/toolchains/preconfig/ubuntu16.04/gcc7_manylinux2010-nvcc-cuda10.0/BUILD +tensorflow/third_party/toolchains/preconfig/ubuntu16.04/gcc7_manylinux2010-nvcc-cuda10.0/cc_toolchain_config.bzl +tensorflow/third_party/toolchains/preconfig/ubuntu16.04/cuda10.0-cudnn7/cuda/BUILD +tensorflow/third_party/toolchains/preconfig/ubuntu16.04/cuda10.0-cudnn7/cuda/build_defs.bzl +tensorflow/third_party/toolchains/preconfig/ubuntu16.04/py3/BUILD +tensorflow/third_party/toolchains/preconfig/ubuntu14.04/tensorrt5/BUILD +tensorflow/third_party/toolchains/preconfig/ubuntu14.04/tensorrt5/build_defs.bzl +tensorflow/third_party/toolchains/preconfig/ubuntu14.04/py3/BUILD +tensorflow/third_party/toolchains/preconfig/ubuntu14.04/cuda10.0-cudnn7/cuda/build_defs.bzl +tensorflow/third_party/toolchains/preconfig/ubuntu14.04/cuda10.0-cudnn7/cuda/BUILD +tensorflow/third_party/toolchains/preconfig/ubuntu14.04/gcc-nvcc-cuda10.0/BUILD +tensorflow/third_party/toolchains/preconfig/ubuntu14.04/gcc-nvcc-cuda10.0/cc_toolchain_config.bzl +tensorflow/third_party/toolchains/preconfig/generate/workspace.bzl +tensorflow/third_party/toolchains/preconfig/generate/containers.bzl +tensorflow/third_party/toolchains/preconfig/generate/generate.bzl +tensorflow/third_party/toolchains/preconfig/generate/archives.bzl +tensorflow/third_party/toolchains/preconfig/generate/BUILD +tensorflow/third_party/toolchains/preconfig/centos6/py/BUILD +tensorflow/third_party/toolchains/preconfig/centos6/cuda10.0-cudnn7/cuda/BUILD +tensorflow/third_party/toolchains/preconfig/centos6/cuda10.0-cudnn7/cuda/build_defs.bzl +tensorflow/third_party/toolchains/preconfig/centos6/gcc7-nvcc-cuda10.0/BUILD +tensorflow/third_party/toolchains/preconfig/centos6/gcc7-nvcc-cuda10.0/cc_toolchain_config.bzl +tensorflow/third_party/toolchains/preconfig/centos6/tensorrt5/build_defs.bzl +tensorflow/third_party/toolchains/preconfig/centos6/tensorrt5/BUILD +tensorflow/third_party/toolchains/preconfig/centos6/gcc7/cc_toolchain_config.bzl +tensorflow/third_party/toolchains/preconfig/centos6/gcc7/dummy_toolchain.bzl +tensorflow/third_party/toolchains/preconfig/centos6/gcc7/BUILD +tensorflow/third_party/toolchains/preconfig/centos6/py3/BUILD +tensorflow/third_party/toolchains/preconfig/win_1803/bazel_025/BUILD +tensorflow/third_party/toolchains/preconfig/win_1803/py36/BUILD +tensorflow/third_party/toolchains/preconfig/win_1803/BUILD tensorflow/third_party/toolchains/cpus/arm/arm_compiler_configure.bzl tensorflow/third_party/toolchains/cpus/arm/CROSSTOOL.tpl tensorflow/third_party/toolchains/cpus/arm/BUILD +tensorflow/third_party/toolchains/cpus/py3/BUILD +tensorflow/third_party/toolchains/cpus/py/BUILD +tensorflow/third_party/toolchains/remote/configure.bzl +tensorflow/third_party/toolchains/remote/BUILD.tpl +tensorflow/third_party/toolchains/remote/BUILD +tensorflow/third_party/toolchains/remote/execution.bzl.tpl tensorflow/third_party/toolchains/BUILD -tensorflow/third_party/toolchains/preconfig/ubuntu16.04/py3/BUILD -tensorflow/third_party/toolchains/preconfig/ubuntu16.04/clang/cc_toolchain_config.bzl -tensorflow/third_party/toolchains/preconfig/ubuntu16.04/clang/BUILD -tensorflow/third_party/toolchains/preconfig/ubuntu16.04/clang/dummy_toolchain.bzl -tensorflow/third_party/toolchains/preconfig/ubuntu16.04/gcc7_manylinux2010-nvcc-cuda10.0/cc_toolchain_config.bzl -tensorflow/third_party/toolchains/preconfig/ubuntu16.04/gcc7_manylinux2010-nvcc-cuda10.0/BUILD -tensorflow/third_party/toolchains/preconfig/ubuntu16.04/cuda10.0-cudnn7/cuda/build_defs.bzl -tensorflow/third_party/toolchains/preconfig/ubuntu16.04/cuda10.0-cudnn7/cuda/BUILD -tensorflow/third_party/toolchains/preconfig/ubuntu16.04/tensorrt5/build_defs.bzl -tensorflow/third_party/toolchains/preconfig/ubuntu16.04/tensorrt5/BUILD -tensorflow/third_party/toolchains/preconfig/win_1803/bazel_025/BUILD -tensorflow/third_party/toolchains/preconfig/win_1803/BUILD -tensorflow/third_party/toolchains/preconfig/win_1803/py36/BUILD -tensorflow/third_party/toolchains/preconfig/generate/containers.bzl -tensorflow/third_party/toolchains/preconfig/generate/workspace.bzl -tensorflow/third_party/toolchains/preconfig/generate/archives.bzl -tensorflow/third_party/toolchains/preconfig/generate/generate.bzl -tensorflow/third_party/toolchains/preconfig/generate/BUILD -tensorflow/third_party/toolchains/preconfig/centos6/py3/BUILD -tensorflow/third_party/toolchains/preconfig/centos6/py/BUILD -tensorflow/third_party/toolchains/preconfig/centos6/gcc7/cc_toolchain_config.bzl -tensorflow/third_party/toolchains/preconfig/centos6/gcc7/BUILD -tensorflow/third_party/toolchains/preconfig/centos6/gcc7/dummy_toolchain.bzl -tensorflow/third_party/toolchains/preconfig/centos6/gcc7-nvcc-cuda10.0/cc_toolchain_config.bzl -tensorflow/third_party/toolchains/preconfig/centos6/gcc7-nvcc-cuda10.0/BUILD -tensorflow/third_party/toolchains/preconfig/centos6/cuda10.0-cudnn7/cuda/build_defs.bzl -tensorflow/third_party/toolchains/preconfig/centos6/cuda10.0-cudnn7/cuda/BUILD -tensorflow/third_party/toolchains/preconfig/centos6/tensorrt5/build_defs.bzl -tensorflow/third_party/toolchains/preconfig/centos6/tensorrt5/BUILD -tensorflow/third_party/toolchains/preconfig/ubuntu14.04/py3/BUILD -tensorflow/third_party/toolchains/preconfig/ubuntu14.04/gcc-nvcc-cuda10.0/cc_toolchain_config.bzl -tensorflow/third_party/toolchains/preconfig/ubuntu14.04/gcc-nvcc-cuda10.0/BUILD -tensorflow/third_party/toolchains/preconfig/ubuntu14.04/cuda10.0-cudnn7/cuda/build_defs.bzl -tensorflow/third_party/toolchains/preconfig/ubuntu14.04/cuda10.0-cudnn7/cuda/BUILD -tensorflow/third_party/toolchains/preconfig/ubuntu14.04/tensorrt5/build_defs.bzl -tensorflow/third_party/toolchains/preconfig/ubuntu14.04/tensorrt5/BUILD -tensorflow/third_party/toolchains/clang6/repo.bzl -tensorflow/third_party/toolchains/clang6/CROSSTOOL.tpl -tensorflow/third_party/toolchains/clang6/BUILD -tensorflow/third_party/toolchains/clang6/clang.BUILD -tensorflow/third_party/toolchains/clang6/README.md -tensorflow/third_party/farmhash.BUILD -tensorflow/third_party/git/BUILD.tpl -tensorflow/third_party/git/git_configure.bzl -tensorflow/third_party/git/BUILD -tensorflow/third_party/cub.BUILD -tensorflow/third_party/gpus/cuda_configure.bzl -tensorflow/third_party/gpus/rocm/build_defs.bzl.tpl -tensorflow/third_party/gpus/rocm/BUILD.tpl -tensorflow/third_party/gpus/rocm/BUILD -tensorflow/third_party/gpus/rocm/rocm_config.h.tpl -tensorflow/third_party/gpus/rocm_configure.bzl -tensorflow/third_party/gpus/find_cuda_config.py +tensorflow/third_party/gpus/BUILD +tensorflow/third_party/gpus/crosstool/clang/bin/crosstool_wrapper_driver_rocm.tpl +tensorflow/third_party/gpus/crosstool/clang/bin/crosstool_wrapper_driver_is_not_gcc.tpl tensorflow/third_party/gpus/crosstool/LICENSE tensorflow/third_party/gpus/crosstool/windows/msvc_wrapper_for_nvcc.py.tpl -tensorflow/third_party/gpus/crosstool/clang/bin/crosstool_wrapper_driver_is_not_gcc.tpl -tensorflow/third_party/gpus/crosstool/clang/bin/crosstool_wrapper_driver_rocm.tpl tensorflow/third_party/gpus/crosstool/BUILD.tpl tensorflow/third_party/gpus/crosstool/BUILD -tensorflow/third_party/gpus/cuda/build_defs.bzl.tpl tensorflow/third_party/gpus/cuda/LICENSE +tensorflow/third_party/gpus/cuda/BUILD.tpl tensorflow/third_party/gpus/cuda/BUILD.windows.tpl tensorflow/third_party/gpus/cuda/cuda_config.h.tpl -tensorflow/third_party/gpus/cuda/BUILD.tpl tensorflow/third_party/gpus/cuda/BUILD -tensorflow/third_party/gpus/BUILD -tensorflow/third_party/common.bzl -tensorflow/third_party/mlir/tblgen.bzl -tensorflow/third_party/mlir/bindings/python/BUILD -tensorflow/third_party/mlir/BUILD -tensorflow/third_party/mlir/mlir_configure.bzl -tensorflow/third_party/mlir/test/BUILD -tensorflow/third_party/tflite_mobilenet_quant.BUILD -tensorflow/third_party/linenoise.BUILD -tensorflow/third_party/curl.BUILD -tensorflow/third_party/mkl_dnn/LICENSE -tensorflow/third_party/mkl_dnn/mkldnn.BUILD -tensorflow/third_party/fft2d/LICENSE -tensorflow/third_party/fft2d/fft2d.BUILD -tensorflow/third_party/fft2d/fft2d.h -tensorflow/third_party/fft2d/fft.h -tensorflow/third_party/fft2d/BUILD -tensorflow/third_party/ngraph/LICENSE -tensorflow/third_party/ngraph/build_defs.bzl -tensorflow/third_party/ngraph/tbb.BUILD -tensorflow/third_party/ngraph/ngraph.BUILD -tensorflow/third_party/ngraph/nlohmann_json.BUILD -tensorflow/third_party/ngraph/BUILD -tensorflow/third_party/ngraph/ngraph_tf.BUILD -tensorflow/third_party/ngraph/NGRAPH_LICENSE -tensorflow/third_party/grpc/BUILD +tensorflow/third_party/gpus/cuda/build_defs.bzl.tpl +tensorflow/third_party/gpus/rocm/rocm_config.h.tpl +tensorflow/third_party/gpus/rocm/BUILD +tensorflow/third_party/gpus/rocm/BUILD.tpl +tensorflow/third_party/gpus/rocm/build_defs.bzl.tpl +tensorflow/third_party/gpus/cuda_configure.bzl +tensorflow/third_party/gpus/find_cuda_config.py +tensorflow/third_party/gpus/rocm_configure.bzl +tensorflow/third_party/snappy.BUILD tensorflow/third_party/cython.BUILD -tensorflow/third_party/icu/udata.patch -tensorflow/third_party/astor.BUILD -tensorflow/third_party/jsoncpp.BUILD -tensorflow/third_party/sycl/crosstool/BUILD -tensorflow/third_party/llvm/llvm.autogenerated.BUILD -tensorflow/third_party/llvm/expand_cmake_vars.py -tensorflow/third_party/llvm/llvm.bzl -tensorflow/third_party/llvm/BUILD -tensorflow/third_party/png.BUILD -tensorflow/third_party/arm_neon_2_x86_sse.BUILD -tensorflow/third_party/codegen.BUILD -tensorflow/third_party/enum34.BUILD -tensorflow/third_party/kafka/config.patch -tensorflow/third_party/kafka/BUILD -tensorflow/third_party/pcre.BUILD -tensorflow/third_party/mpi/BUILD -tensorflow/third_party/mpi/.gitignore -tensorflow/third_party/clang_toolchain/BUILD -tensorflow/third_party/clang_toolchain/download_clang.bzl -tensorflow/third_party/clang_toolchain/cc_configure_clang.bzl -tensorflow/third_party/tflite_ovic_testdata.BUILD -tensorflow/third_party/repo.bzl -tensorflow/third_party/png_fix_rpi.patch -tensorflow/third_party/py/python_configure.bzl -tensorflow/third_party/py/BUILD.tpl -tensorflow/third_party/py/BUILD -tensorflow/third_party/py/numpy/BUILD -tensorflow/third_party/double_conversion.BUILD -tensorflow/third_party/six.BUILD -tensorflow/third_party/zlib.BUILD -tensorflow/third_party/lmdb.BUILD -tensorflow/third_party/nanopb.BUILD -tensorflow/third_party/pybind11.BUILD -tensorflow/third_party/android/android.bzl.tpl -tensorflow/third_party/android/BUILD -tensorflow/third_party/android/android_configure.BUILD.tpl -tensorflow/third_party/android/android_configure.bzl -tensorflow/third_party/tflite_mobilenet_float.BUILD -tensorflow/third_party/sqlite.BUILD -tensorflow/third_party/tensorrt/build_defs.bzl.tpl -tensorflow/third_party/tensorrt/LICENSE -tensorflow/third_party/tensorrt/tensorrt_configure.bzl -tensorflow/third_party/tensorrt/tensorrt/include/tensorrt_config.h.tpl -tensorflow/third_party/tensorrt/BUILD.tpl -tensorflow/third_party/tensorrt/BUILD -tensorflow/third_party/gast.BUILD -tensorflow/third_party/mpi_collectives/BUILD -tensorflow/third_party/libxsmm.BUILD -tensorflow/third_party/eigen.BUILD -tensorflow/third_party/com_google_absl.BUILD -tensorflow/third_party/eigen3/LICENSE -tensorflow/third_party/eigen3/gpu_packet_math.patch -tensorflow/third_party/eigen3/BUILD -tensorflow/third_party/eigen3/unsupported/Eigen/MatrixFunctions -tensorflow/third_party/eigen3/unsupported/Eigen/SpecialFunctions +tensorflow/third_party/farmhash.BUILD +tensorflow/third_party/eigen3/Eigen/Cholesky +tensorflow/third_party/eigen3/Eigen/QR +tensorflow/third_party/eigen3/Eigen/LU +tensorflow/third_party/eigen3/Eigen/Core +tensorflow/third_party/eigen3/Eigen/SVD +tensorflow/third_party/eigen3/Eigen/Eigenvalues +tensorflow/third_party/eigen3/unsupported/Eigen/CXX11/FixedPoint tensorflow/third_party/eigen3/unsupported/Eigen/CXX11/Tensor tensorflow/third_party/eigen3/unsupported/Eigen/CXX11/src/FixedPoint/PacketMathAVX512.h -tensorflow/third_party/eigen3/unsupported/Eigen/CXX11/src/FixedPoint/MatMatProduct.h -tensorflow/third_party/eigen3/unsupported/Eigen/CXX11/src/FixedPoint/MatMatProductAVX2.h tensorflow/third_party/eigen3/unsupported/Eigen/CXX11/src/FixedPoint/TypeCastingAVX512.h tensorflow/third_party/eigen3/unsupported/Eigen/CXX11/src/FixedPoint/PacketMathAVX2.h -tensorflow/third_party/eigen3/unsupported/Eigen/CXX11/src/FixedPoint/TypeCastingAVX2.h -tensorflow/third_party/eigen3/unsupported/Eigen/CXX11/src/FixedPoint/MatMatProductNEON.h +tensorflow/third_party/eigen3/unsupported/Eigen/CXX11/src/FixedPoint/MatMatProduct.h tensorflow/third_party/eigen3/unsupported/Eigen/CXX11/src/FixedPoint/FixedPointTypes.h tensorflow/third_party/eigen3/unsupported/Eigen/CXX11/src/FixedPoint/MatVecProduct.h -tensorflow/third_party/eigen3/unsupported/Eigen/CXX11/FixedPoint +tensorflow/third_party/eigen3/unsupported/Eigen/CXX11/src/FixedPoint/MatMatProductNEON.h +tensorflow/third_party/eigen3/unsupported/Eigen/CXX11/src/FixedPoint/TypeCastingAVX2.h +tensorflow/third_party/eigen3/unsupported/Eigen/CXX11/src/FixedPoint/MatMatProductAVX2.h tensorflow/third_party/eigen3/unsupported/Eigen/CXX11/ThreadPool -tensorflow/third_party/eigen3/Eigen/QR -tensorflow/third_party/eigen3/Eigen/SVD -tensorflow/third_party/eigen3/Eigen/LU -tensorflow/third_party/eigen3/Eigen/Cholesky -tensorflow/third_party/eigen3/Eigen/Eigenvalues -tensorflow/third_party/eigen3/Eigen/Core -tensorflow/third_party/BUILD -tensorflow/third_party/termcolor.BUILD -tensorflow/third_party/gif.BUILD -tensorflow/third_party/tflite_mobilenet.BUILD -tensorflow/third_party/__init__.py -tensorflow/third_party/mkl/LICENSE -tensorflow/third_party/mkl/build_defs.bzl -tensorflow/third_party/mkl/mkl.BUILD -tensorflow/third_party/mkl/MKL_LICENSE -tensorflow/third_party/mkl/BUILD -tensorflow/third_party/nccl/build_defs.bzl.tpl -tensorflow/third_party/nccl/LICENSE -tensorflow/third_party/nccl/archive.patch -tensorflow/third_party/nccl/nccl_configure.bzl -tensorflow/third_party/nccl/archive.BUILD -tensorflow/third_party/nccl/BUILD -tensorflow/third_party/nccl/system.BUILD.tpl -tensorflow/third_party/snappy.BUILD +tensorflow/third_party/eigen3/unsupported/Eigen/SpecialFunctions +tensorflow/third_party/eigen3/unsupported/Eigen/MatrixFunctions +tensorflow/third_party/eigen3/gpu_packet_math.patch +tensorflow/third_party/eigen3/LICENSE +tensorflow/third_party/eigen3/BUILD +tensorflow/third_party/systemlibs/build_defs.bzl.tpl +tensorflow/third_party/systemlibs/absl_py.BUILD +tensorflow/third_party/systemlibs/curl.BUILD +tensorflow/third_party/systemlibs/termcolor.BUILD +tensorflow/third_party/systemlibs/absl_py.absl.flags.BUILD +tensorflow/third_party/systemlibs/grpc.BUILD +tensorflow/third_party/systemlibs/swig.BUILD +tensorflow/third_party/systemlibs/protobuf.bzl +tensorflow/third_party/systemlibs/protobuf.BUILD +tensorflow/third_party/systemlibs/BUILD +tensorflow/third_party/systemlibs/google_cloud_cpp.BUILD +tensorflow/third_party/systemlibs/astor.BUILD +tensorflow/third_party/systemlibs/six.BUILD +tensorflow/third_party/systemlibs/opt_einsum.BUILD +tensorflow/third_party/systemlibs/absl_py.absl.testing.BUILD +tensorflow/third_party/systemlibs/boringssl.BUILD +tensorflow/third_party/systemlibs/nsync.BUILD +tensorflow/third_party/systemlibs/google_cloud_cpp.google.cloud.bigtable.BUILD +tensorflow/third_party/systemlibs/gif.BUILD +tensorflow/third_party/systemlibs/pcre.BUILD +tensorflow/third_party/systemlibs/BUILD.tpl +tensorflow/third_party/systemlibs/snappy.BUILD +tensorflow/third_party/systemlibs/gast.BUILD +tensorflow/third_party/systemlibs/cython.BUILD +tensorflow/third_party/systemlibs/double_conversion.BUILD +tensorflow/third_party/systemlibs/zlib.BUILD +tensorflow/third_party/systemlibs/jsoncpp.BUILD +tensorflow/third_party/systemlibs/re2.BUILD +tensorflow/third_party/systemlibs/lmdb.BUILD +tensorflow/third_party/systemlibs/googleapis.BUILD +tensorflow/third_party/systemlibs/png.BUILD +tensorflow/third_party/systemlibs/syslibs_configure.bzl +tensorflow/third_party/systemlibs/sqlite.BUILD tensorflow/third_party/python_runtime/BUILD -tensorflow/third_party/googleapis.BUILD -tensorflow/third_party/opt_einsum.BUILD -tensorflow/third_party/wrapt.BUILD +tensorflow/third_party/sycl/crosstool/BUILD +tensorflow/third_party/ngraph/LICENSE +tensorflow/third_party/ngraph/tbb.BUILD +tensorflow/third_party/ngraph/BUILD +tensorflow/third_party/ngraph/ngraph.BUILD +tensorflow/third_party/ngraph/build_defs.bzl +tensorflow/third_party/ngraph/NGRAPH_LICENSE +tensorflow/third_party/ngraph/ngraph_tf.BUILD +tensorflow/third_party/ngraph/nlohmann_json.BUILD +tensorflow/third_party/clang_toolchain/download_clang.bzl +tensorflow/third_party/clang_toolchain/BUILD +tensorflow/third_party/clang_toolchain/cc_configure_clang.bzl +tensorflow/third_party/mlir/BUILD +tensorflow/third_party/mlir/mlir_configure.bzl +tensorflow/third_party/mlir/bindings/python/BUILD +tensorflow/third_party/mlir/test/BUILD +tensorflow/third_party/mlir/tblgen.bzl +tensorflow/third_party/gast.BUILD +tensorflow/third_party/llvm/BUILD +tensorflow/third_party/llvm/expand_cmake_vars.py +tensorflow/third_party/llvm/llvm.autogenerated.BUILD +tensorflow/third_party/llvm/llvm.bzl +tensorflow/third_party/icu/udata.patch +tensorflow/third_party/fft2d/fft2d.h +tensorflow/third_party/fft2d/BUILD +tensorflow/third_party/fft2d/fft.h +tensorflow/third_party/fft2d/LICENSE +tensorflow/third_party/fft2d/fft2d.BUILD +tensorflow/third_party/nccl/archive.BUILD +tensorflow/third_party/nccl/LICENSE +tensorflow/third_party/nccl/system.BUILD.tpl +tensorflow/third_party/nccl/nccl_configure.bzl +tensorflow/third_party/nccl/build_defs.bzl.tpl +tensorflow/third_party/nccl/archive.patch +tensorflow/third_party/nccl/BUILD tensorflow/third_party/boringssl/BUILD -tensorflow/third_party/protobuf/BUILD -tensorflow/third_party/backports_weakref.BUILD +tensorflow/third_party/mpi/.gitignore +tensorflow/third_party/mpi/BUILD +tensorflow/third_party/tensorrt/LICENSE +tensorflow/third_party/tensorrt/BUILD +tensorflow/third_party/tensorrt/build_defs.bzl.tpl +tensorflow/third_party/tensorrt/BUILD.tpl +tensorflow/third_party/tensorrt/tensorrt_configure.bzl +tensorflow/third_party/tensorrt/tensorrt/include/tensorrt_config.h.tpl +tensorflow/third_party/kafka/config.patch +tensorflow/third_party/kafka/BUILD +tensorflow/third_party/android/BUILD +tensorflow/third_party/android/android.bzl.tpl +tensorflow/third_party/android/android_configure.bzl +tensorflow/third_party/android/android_configure.BUILD.tpl tensorflow/third_party/tflite_smartreply.BUILD +tensorflow/third_party/mkl_dnn/LICENSE +tensorflow/third_party/mkl_dnn/mkldnn.BUILD +tensorflow/third_party/pcre.BUILD +tensorflow/third_party/pybind11.BUILD +tensorflow/third_party/opt_einsum.BUILD +tensorflow/third_party/linenoise.BUILD +tensorflow/third_party/sqlite.BUILD +tensorflow/third_party/common.bzl +tensorflow/third_party/com_google_absl.BUILD +tensorflow/third_party/pprof.BUILD +tensorflow/third_party/BUILD +tensorflow/third_party/tflite_mobilenet_quant.BUILD +tensorflow/third_party/wrapt.BUILD +tensorflow/third_party/lmdb.BUILD +tensorflow/third_party/git/BUILD.tpl +tensorflow/third_party/git/BUILD +tensorflow/third_party/git/git_configure.bzl +tensorflow/third_party/protobuf/BUILD +tensorflow/third_party/enum34.BUILD +tensorflow/third_party/tflite_mobilenet.BUILD +tensorflow/third_party/py/BUILD +tensorflow/third_party/py/BUILD.tpl +tensorflow/third_party/py/numpy/BUILD +tensorflow/third_party/py/python_configure.bzl +tensorflow/third_party/termcolor.BUILD +tensorflow/third_party/png_fix_rpi.patch tensorflow/third_party/swig.BUILD -tensorflow/compat_template.__init__.py -tensorflow/tools/lib_package/libtensorflow_test.sh -tensorflow/tools/lib_package/libtensorflow_java_test.sh -tensorflow/tools/lib_package/libtensorflow_test.c -tensorflow/tools/lib_package/concat_licenses.sh -tensorflow/tools/lib_package/LibTensorFlowTest.java -tensorflow/tools/lib_package/BUILD -tensorflow/tools/lib_package/README.md -tensorflow/tools/pip_package/check_load_py_test.py -tensorflow/tools/pip_package/simple_console.py -tensorflow/tools/pip_package/pip_smoke_test.py -tensorflow/tools/pip_package/BUILD -tensorflow/tools/pip_package/simple_console_for_windows.py -tensorflow/tools/pip_package/build_pip_package.sh -tensorflow/tools/pip_package/README -tensorflow/tools/pip_package/setup.py -tensorflow/tools/pip_package/MANIFEST.in -tensorflow/tools/ci_build/remote/BUILD -tensorflow/tools/def_file_filter/def_file_filter.py.tpl -tensorflow/tools/def_file_filter/BUILD.tpl -tensorflow/tools/def_file_filter/BUILD -tensorflow/tools/def_file_filter/def_file_filter_configure.bzl -tensorflow/api_template.__init__.py -tensorflow/contrib/tpu/profiler/pip_package/BUILD -tensorflow/contrib/tpu/profiler/pip_package/cloud_tpu_profiler/__init__.py -tensorflow/contrib/tpu/profiler/pip_package/cloud_tpu_profiler/main.py -tensorflow/contrib/tpu/profiler/pip_package/build_pip_package.sh -tensorflow/contrib/tpu/profiler/pip_package/README -tensorflow/contrib/tpu/profiler/pip_package/setup.py -tensorflow/contrib/mpi/BUILD -tensorflow/python/autograph/core/config.py -tensorflow/virtual_root_template_v2.__init__.py -tensorflow/__init__.py -tensorflow/stream_executor/build_defs.bzl +tensorflow/third_party/astor.BUILD +tensorflow/third_party/grpc/BUILD +tensorflow/third_party/curl.BUILD +tensorflow/third_party/arm_neon_2_x86_sse.BUILD +tensorflow/third_party/png.BUILD +tensorflow/third_party/googleapis.BUILD +tensorflow/third_party/mpi_collectives/BUILD +tensorflow/third_party/nanopb.BUILD +tensorflow/third_party/gif.BUILD +tensorflow/third_party/double_conversion.BUILD +tensorflow/third_party/six.BUILD +tensorflow/third_party/tflite_mobilenet_float.BUILD +tensorflow/third_party/repo.bzl +tensorflow/third_party/codegen.BUILD +tensorflow/third_party/cub.BUILD +tensorflow/third_party/jsoncpp.BUILD +tensorflow/third_party/tflite_ovic_testdata.BUILD +tensorflow/third_party/__init__.py +tensorflow/third_party/libxsmm.BUILD +tensorflow/third_party/zlib.BUILD +tensorflow/third_party/eigen.BUILD tensorflow/api_template_v1.__init__.py tensorflow/compat_template_v1.__init__.py +tensorflow/compat_template.__init__.py +tensorflow/api_template.__init__.py +tensorflow/__init__.py +tensorflow/virtual_root_template_v2.__init__.py tensorflow/virtual_root_template_v1.__init__.py \ No newline at end of file