143282ad78cf4a4266fef823b27c4cf88c3ecd8fdA. Unique TensorFlower/* Copyright 2016 The TensorFlow Authors. All Rights Reserved. 243282ad78cf4a4266fef823b27c4cf88c3ecd8fdA. Unique TensorFlower 343282ad78cf4a4266fef823b27c4cf88c3ecd8fdA. Unique TensorFlowerLicensed under the Apache License, Version 2.0 (the "License"); 443282ad78cf4a4266fef823b27c4cf88c3ecd8fdA. Unique TensorFloweryou may not use this file except in compliance with the License. 543282ad78cf4a4266fef823b27c4cf88c3ecd8fdA. Unique TensorFlowerYou may obtain a copy of the License at 643282ad78cf4a4266fef823b27c4cf88c3ecd8fdA. Unique TensorFlower 743282ad78cf4a4266fef823b27c4cf88c3ecd8fdA. Unique TensorFlower http://www.apache.org/licenses/LICENSE-2.0 843282ad78cf4a4266fef823b27c4cf88c3ecd8fdA. Unique TensorFlower 943282ad78cf4a4266fef823b27c4cf88c3ecd8fdA. Unique TensorFlowerUnless required by applicable law or agreed to in writing, software 1043282ad78cf4a4266fef823b27c4cf88c3ecd8fdA. Unique TensorFlowerdistributed under the License is distributed on an "AS IS" BASIS, 1143282ad78cf4a4266fef823b27c4cf88c3ecd8fdA. Unique TensorFlowerWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1243282ad78cf4a4266fef823b27c4cf88c3ecd8fdA. Unique TensorFlowerSee the License for the specific language governing permissions and 1343282ad78cf4a4266fef823b27c4cf88c3ecd8fdA. Unique TensorFlowerlimitations under the License. 1443282ad78cf4a4266fef823b27c4cf88c3ecd8fdA. Unique TensorFlower==============================================================================*/ 1543282ad78cf4a4266fef823b27c4cf88c3ecd8fdA. Unique TensorFlower 1643282ad78cf4a4266fef823b27c4cf88c3ecd8fdA. Unique TensorFlower#include "tensorflow/core/common_runtime/optimization_registry.h" 1743282ad78cf4a4266fef823b27c4cf88c3ecd8fdA. Unique TensorFlower 1843282ad78cf4a4266fef823b27c4cf88c3ecd8fdA. Unique TensorFlowernamespace tensorflow { 1943282ad78cf4a4266fef823b27c4cf88c3ecd8fdA. Unique TensorFlower 2043282ad78cf4a4266fef823b27c4cf88c3ecd8fdA. Unique TensorFlower// static 2143282ad78cf4a4266fef823b27c4cf88c3ecd8fdA. Unique TensorFlowerOptimizationPassRegistry* OptimizationPassRegistry::Global() { 2243282ad78cf4a4266fef823b27c4cf88c3ecd8fdA. Unique TensorFlower static OptimizationPassRegistry* global_optimization_registry = 2343282ad78cf4a4266fef823b27c4cf88c3ecd8fdA. Unique TensorFlower new OptimizationPassRegistry; 2443282ad78cf4a4266fef823b27c4cf88c3ecd8fdA. Unique TensorFlower return global_optimization_registry; 2543282ad78cf4a4266fef823b27c4cf88c3ecd8fdA. Unique TensorFlower} 2643282ad78cf4a4266fef823b27c4cf88c3ecd8fdA. Unique TensorFlower 2743282ad78cf4a4266fef823b27c4cf88c3ecd8fdA. Unique TensorFlowervoid OptimizationPassRegistry::Register( 2843282ad78cf4a4266fef823b27c4cf88c3ecd8fdA. Unique TensorFlower Grouping grouping, int phase, std::unique_ptr<GraphOptimizationPass> pass) { 2943282ad78cf4a4266fef823b27c4cf88c3ecd8fdA. Unique TensorFlower groups_[grouping][phase].push_back(std::move(pass)); 3043282ad78cf4a4266fef823b27c4cf88c3ecd8fdA. Unique TensorFlower} 3143282ad78cf4a4266fef823b27c4cf88c3ecd8fdA. Unique TensorFlower 3243282ad78cf4a4266fef823b27c4cf88c3ecd8fdA. Unique TensorFlowerStatus OptimizationPassRegistry::RunGrouping( 3343282ad78cf4a4266fef823b27c4cf88c3ecd8fdA. Unique TensorFlower Grouping grouping, const GraphOptimizationPassOptions& options) { 3443282ad78cf4a4266fef823b27c4cf88c3ecd8fdA. Unique TensorFlower auto group = groups_.find(grouping); 3543282ad78cf4a4266fef823b27c4cf88c3ecd8fdA. Unique TensorFlower if (group != groups_.end()) { 3643282ad78cf4a4266fef823b27c4cf88c3ecd8fdA. Unique TensorFlower for (auto& phase : group->second) { 3743282ad78cf4a4266fef823b27c4cf88c3ecd8fdA. Unique TensorFlower VLOG(1) << "Running optimization phase " << phase.first; 3843282ad78cf4a4266fef823b27c4cf88c3ecd8fdA. Unique TensorFlower for (auto& pass : phase.second) { 3943282ad78cf4a4266fef823b27c4cf88c3ecd8fdA. Unique TensorFlower Status s = pass->Run(options); 4043282ad78cf4a4266fef823b27c4cf88c3ecd8fdA. Unique TensorFlower if (!s.ok()) return s; 4143282ad78cf4a4266fef823b27c4cf88c3ecd8fdA. Unique TensorFlower } 4243282ad78cf4a4266fef823b27c4cf88c3ecd8fdA. Unique TensorFlower } 4343282ad78cf4a4266fef823b27c4cf88c3ecd8fdA. Unique TensorFlower } 4443282ad78cf4a4266fef823b27c4cf88c3ecd8fdA. Unique TensorFlower return Status::OK(); 4543282ad78cf4a4266fef823b27c4cf88c3ecd8fdA. Unique TensorFlower} 4643282ad78cf4a4266fef823b27c4cf88c3ecd8fdA. Unique TensorFlower 4743282ad78cf4a4266fef823b27c4cf88c3ecd8fdA. Unique TensorFlower} // namespace tensorflow 48