aboutsummaryrefslogtreecommitdiffhomepage
path: root/tensorflow/core/grappler/op_types.cc
diff options
context:
space:
mode:
authorGravatar A. Unique TensorFlower <gardener@tensorflow.org>2018-10-08 09:06:04 -0700
committerGravatar TensorFlower Gardener <gardener@tensorflow.org>2018-10-08 09:10:28 -0700
commit5f308cb408eb46ec9af0546be6b9ae1d5166b185 (patch)
treef6da0324d24a19486ceee4d91989198099394a06 /tensorflow/core/grappler/op_types.cc
parent75f57a8b7836a1ed3cda8ba81c88f6caf15cf0c6 (diff)
Optimize PinToHostOptimizer by adding cache, also add PinToHostOptimizer to benchmarks.
original runtime: 4.83492736816 secs w/ cache runtime: 2.19033999443 secs PiperOrigin-RevId: 216195286
Diffstat (limited to 'tensorflow/core/grappler/op_types.cc')
-rw-r--r--tensorflow/core/grappler/op_types.cc22
1 files changed, 13 insertions, 9 deletions
diff --git a/tensorflow/core/grappler/op_types.cc b/tensorflow/core/grappler/op_types.cc
index 1b5a215987..cbf5c8e038 100644
--- a/tensorflow/core/grappler/op_types.cc
+++ b/tensorflow/core/grappler/op_types.cc
@@ -102,15 +102,19 @@ bool IsConjugateTranspose(const NodeDef& node) {
}
bool IsControlFlow(const NodeDef& node) {
- // clang-format off
- return node.op() == "ControlTrigger" ||
- node.op() == "Enter" ||
- node.op() == "Exit" ||
- node.op() == "LoopCond" ||
- node.op() == "Merge" ||
- node.op() == "NextIteration" ||
- node.op() == "Switch";
- // clang-format on
+ // TODO(williamchan): Add a microbenchmark to compare FlatSet vs. iterative
+ // string comparison.
+ static const gtl::FlatSet<string>* const kControFlowOps =
+ CHECK_NOTNULL((new gtl::FlatSet<string>{
+ "ControlTrigger",
+ "Enter",
+ "Exit",
+ "LoopCond",
+ "Merge",
+ "NextIteration",
+ "Switch",
+ }));
+ return kControFlowOps->count(node.op()) > 0;
}
bool IsConv2D(const NodeDef& node) { return node.op() == "Conv2D"; }