aboutsummaryrefslogtreecommitdiffhomepage
path: root/tensorflow/core/grappler/optimizers/arithmetic_optimizer_test.cc
diff options
context:
space:
mode:
Diffstat (limited to 'tensorflow/core/grappler/optimizers/arithmetic_optimizer_test.cc')
-rw-r--r--tensorflow/core/grappler/optimizers/arithmetic_optimizer_test.cc94
1 files changed, 4 insertions, 90 deletions
diff --git a/tensorflow/core/grappler/optimizers/arithmetic_optimizer_test.cc b/tensorflow/core/grappler/optimizers/arithmetic_optimizer_test.cc
index 60fb47f51a..9f471302c7 100644
--- a/tensorflow/core/grappler/optimizers/arithmetic_optimizer_test.cc
+++ b/tensorflow/core/grappler/optimizers/arithmetic_optimizer_test.cc
@@ -38,8 +38,8 @@ TEST_F(ArithmeticOptimizerTest, NoOp) {
ArithmeticOptimizer optimizer;
GraphDef output;
- Status status = optimizer.Optimize(nullptr, item, &output);
- TF_EXPECT_OK(status);
+ Status s = optimizer.Optimize(nullptr, item, &output);
+ TF_EXPECT_OK(s);
EXPECT_EQ(item.graph.node_size(), output.node_size());
for (int i = 0; i < item.graph.node_size(); ++i) {
@@ -66,10 +66,6 @@ TEST_F(ArithmeticOptimizerTest, OpDedupping) {
GraphDef output;
Status status = optimizer.Optimize(nullptr, item, &output);
TF_EXPECT_OK(status);
- // Run the optimizer twice to make sure the rewrite is idempotent.
- item.graph.Swap(&output);
- status = optimizer.Optimize(nullptr, item, &output);
- TF_EXPECT_OK(status);
EXPECT_EQ(2, output.node_size());
const NodeDef& new_c1 = output.node(0);
@@ -95,10 +91,6 @@ TEST_F(ArithmeticOptimizerTest, OpDedupCommutative) {
GraphDef output;
Status status = optimizer.Optimize(nullptr, item, &output);
TF_EXPECT_OK(status);
- // Run the optimizer twice to make sure the rewrite is idempotent.
- item.graph.Swap(&output);
- status = optimizer.Optimize(nullptr, item, &output);
- TF_EXPECT_OK(status);
EXPECT_EQ(4, output.node_size());
const NodeDef& new_c1 = output.node(0);
@@ -154,17 +146,13 @@ TEST_F(ArithmeticOptimizerTest, SimplifyInvolutionsWithChain) {
GraphDef output;
Status status = optimizer.Optimize(nullptr, item, &output);
TF_EXPECT_OK(status);
- // Run the optimizer twice to make sure the rewrite is idempotent.
- item.graph.Swap(&output);
- status = optimizer.Optimize(nullptr, item, &output);
- TF_EXPECT_OK(status);
EXPECT_EQ(6, output.node_size());
EXPECT_EQ("squeeze", output.node(5).input(0));
EXPECT_EQ("c", output.node(2).input(0));
}
-TEST_F(ArithmeticOptimizerTest, TrivialSumsSimple) {
+TEST_F(ArithmeticOptimizerTest, SimplifyReplaceTrivialSums) {
tensorflow::Scope s = tensorflow::Scope::NewRootScope();
Output x = ops::Const(s.WithOpName("x"), {1.0f, 2.0f}, {1, 2});
Output add = ops::Add(s.WithOpName("add"), x, x);
@@ -177,10 +165,6 @@ TEST_F(ArithmeticOptimizerTest, TrivialSumsSimple) {
GraphDef output;
Status status = optimizer.Optimize(nullptr, item, &output);
TF_EXPECT_OK(status);
- // Run the optimizer twice to make sure the rewrite is idempotent.
- item.graph.Swap(&output);
- status = optimizer.Optimize(nullptr, item, &output);
- TF_EXPECT_OK(status);
EXPECT_EQ(5, output.node_size());
const NodeDef& new_const = output.node(3);
@@ -194,61 +178,7 @@ TEST_F(ArithmeticOptimizerTest, TrivialSumsSimple) {
EXPECT_EQ("add_mul", new_id.input(0));
}
-TEST_F(ArithmeticOptimizerTest, TrivialSumsRepeatedAdd) {
- // Test case from b/69059093.
- tensorflow::Scope s = tensorflow::Scope::NewRootScope();
- Output p = ops::Placeholder(s, DT_FLOAT, ops::Placeholder::Shape({10, 10}));
- Output add = ops::Add(s.WithOpName("Add"), p, p);
- Output add1 = ops::Add(s.WithOpName("Add_1"), p, p);
- Output add4 = ops::Add(s.WithOpName("Add_4"), add, add1);
- Output add5 = ops::Add(s.WithOpName("Add_5"), add, add1);
- Output add6 = ops::Add(s.WithOpName("Add_6"), add4, add5);
- Output id = ops::Identity(s.WithOpName("id"), add6);
-
- GrapplerItem item;
- TF_CHECK_OK(s.ToGraphDef(&item.graph));
- ArithmeticOptimizer optimizer;
- GraphDef output;
- Status status = optimizer.Optimize(nullptr, item, &output);
- TF_EXPECT_OK(status);
- // Run the optimizer twice to make sure the rewrite is idempotent.
- item.graph.Swap(&output);
- status = optimizer.Optimize(nullptr, item, &output);
- TF_EXPECT_OK(status);
-
- EXPECT_EQ(11, output.node_size());
- const NodeDef& new_id = output.node(4);
- EXPECT_EQ("id", new_id.name());
- EXPECT_EQ("Add_6_mul", new_id.input(0));
-
- // Add4 and add5 get deduped, and we rewrite each of the 3 remaining add nodes
- // of the form Add(x,x) into Mul(Const(2), x).
- const NodeDef& new_add_4_const = output.node(5);
- EXPECT_EQ("Add_4_const", new_add_4_const.name());
- EXPECT_EQ("^Add", new_add_4_const.input(0));
- const NodeDef& new_add_4_mul = output.node(6);
- EXPECT_EQ("Add_4_mul", new_add_4_mul.name());
- EXPECT_EQ("Add_4_const", new_add_4_mul.input(0));
- EXPECT_EQ("Add_mul", new_add_4_mul.input(1));
-
- const NodeDef& new_add_6_const = output.node(7);
- EXPECT_EQ("Add_6_const", new_add_6_const.name());
- EXPECT_EQ("^Add_4_mul", new_add_6_const.input(0));
- const NodeDef& new_add_6_mul = output.node(8);
- EXPECT_EQ("Add_6_mul", new_add_6_mul.name());
- EXPECT_EQ("Add_6_const", new_add_6_mul.input(0));
- EXPECT_EQ("Add_4_mul", new_add_6_mul.input(1));
-
- const NodeDef& new_add_const = output.node(9);
- EXPECT_EQ("Add_const", new_add_const.name());
- EXPECT_EQ("^Placeholder", new_add_const.input(0));
- const NodeDef& new_add_mul = output.node(10);
- EXPECT_EQ("Add_mul", new_add_mul.name());
- EXPECT_EQ("Add_const", new_add_mul.input(0));
- EXPECT_EQ("Placeholder", new_add_mul.input(1));
-}
-
-TEST_F(ArithmeticOptimizerTest, HoistFactor) {
+TEST_F(ArithmeticOptimizerTest, SimplifyHoistFactor) {
tensorflow::Scope s = tensorflow::Scope::NewRootScope();
Output x = ops::Const(s.WithOpName("x"), {1.0f, 2.0f}, {1, 2});
Output y1 = ops::Const(s.WithOpName("y1"), {3.0f, 4.0f}, {1, 2});
@@ -265,10 +195,6 @@ TEST_F(ArithmeticOptimizerTest, HoistFactor) {
GraphDef output;
Status status = optimizer.Optimize(nullptr, item, &output);
TF_EXPECT_OK(status);
- // Run the optimizer twice to make sure the rewrite is idempotent.
- item.graph.Swap(&output);
- status = optimizer.Optimize(nullptr, item, &output);
- TF_EXPECT_OK(status);
EXPECT_EQ(9, output.node_size());
const NodeDef& new_add = output.node(8);
@@ -299,10 +225,6 @@ TEST_F(ArithmeticOptimizerTest, FuseConjAndTranspose) {
GraphDef output;
Status status = optimizer.Optimize(nullptr, item, &output);
TF_EXPECT_OK(status);
- // Run the optimizer twice to make sure the rewrite is idempotent.
- item.graph.Swap(&output);
- status = optimizer.Optimize(nullptr, item, &output);
- TF_EXPECT_OK(status);
EXPECT_EQ(7, output.node_size());
EXPECT_EQ("trans_fused", output.node(6).name());
@@ -350,10 +272,6 @@ TEST_F(ArithmeticOptimizerTest, FuseTransposeAndConj) {
GraphDef output;
Status status = optimizer.Optimize(nullptr, item, &output);
TF_EXPECT_OK(status);
- // Run the optimizer twice to make sure the rewrite is idempotent.
- item.graph.Swap(&output);
- status = optimizer.Optimize(nullptr, item, &output);
- TF_EXPECT_OK(status);
EXPECT_EQ(7, output.node_size());
EXPECT_EQ("conj_fused", output.node(6).name());
@@ -386,10 +304,6 @@ TEST_F(ArithmeticOptimizerTest, FoldTransposeIntoMatMul) {
GraphDef output;
Status status = optimizer.Optimize(nullptr, item, &output);
TF_EXPECT_OK(status);
- // Run the optimizer twice to make sure the rewrite is idempotent.
- item.graph.Swap(&output);
- status = optimizer.Optimize(nullptr, item, &output);
- TF_EXPECT_OK(status);
EXPECT_EQ(7, output.node_size());
EXPECT_EQ("matmul_fused", output.node(6).name());