一、注册:

在tensorflow/compiler/jit/jit_compilation_pass_registration.cc对jit相关的优化器进行统一的注册。举例:

  REGISTER_OPTIMIZATION(OptimizationPassRegistry::POST_REWRITE_FOR_EXEC, 10, MarkForCompilationPass);其中POST_REWRITE_FOR_EXEC指阶段。10指该阶段中该OPTIMIZATION第几个被调用。MarkForCompilationPass是需要注册的图优化Pass。

REGISTER_OPTIMIZATION 宏函数展开:

  class OptimizationPassRegistration {public:OptimizationPassRegistration(OptimizationPassRegistry::Grouping grouping,int phase,std::unique_ptr<GraphOptimizationPass> pass,string optimization_pass_name) {pass->set_name(optimization_pass_name);OptimizationPassRegistry::Global()->Register(grouping, phase,std::move(pass));}};}  // namespace optimization_registration#define REGISTER_OPTIMIZATION(grouping, phase, optimization) \REGISTER_OPTIMIZATION_UNIQ_HELPER(__COUNTER__, grouping, phase, optimization)#define REGISTER_OPTIMIZATION_UNIQ_HELPER(ctr, grouping, phase, optimization) \REGISTER_OPTIMIZATION_UNIQ(ctr, grouping, phase, optimization)#define REGISTER_OPTIMIZATION_UNIQ(ctr, grouping, phase, optimization)         \static ::tensorflow::optimization_registration::OptimizationPassRegistration \register_optimization_##ctr(                                             \grouping, phase,                                                     \::std::unique_ptr<::tensorflow::GraphOptimizationPass>(              \new optimization()),                                             \#optimization)}  // namespace tensorflow

其实对每个调用REGISTER_OPTIMIZATION的优化器都构造了一个 static的该类的optimization。
然后将上述的optimization都放在std::map<Grouping, GraphOptimizationPasses> groups_;
其中Grouping就是多个阶段,GraphOptimizationPasses就是该阶段调用的哪些优化器。
跟Op的注册机制相似。

二、调用:

core/common_runtime/direct_session.cc
1652:  TF_RETURN_IF_ERROR(OptimizationPassRegistry::Global()->RunGrouping(core/distributed_runtime/graph_mgr.cc
197:  TF_RETURN_IF_ERROR(OptimizationPassRegistry::Global()->RunGrouping(core/common_runtime/graph_execution_state.cc
609:  TF_RETURN_IF_ERROR(OptimizationPassRegistry::Global()->RunGrouping(
621:  TF_RETURN_IF_ERROR(OptimizationPassRegistry::Global()->RunGrouping(
829:  TF_RETURN_IF_ERROR(OptimizationPassRegistry::Global()->RunGrouping(

在图的不同阶段会运行不同的优化器。

四个阶段:

    enum Grouping {PRE_PLACEMENT,          // after cost model assignment, before placement.POST_PLACEMENT,         // after placement.POST_REWRITE_FOR_EXEC,  // after re-write using feed/fetch endpoints.POST_PARTITIONING,      // after partitioning};

【XLA】一、【构图阶段】图优化器的注册和执行相关推荐

  1. 优化器是怎么得到执行计划的?

    https://dev.mysql.com/doc/internals/en/optimizer-tracing.html 首先我们要启用优化器的追踪(默认是关闭的): SHOW VARIABLES ...

  2. mysql+优化器+软解析_MySQL执行计划 - osc_93u9qofu的个人空间 - OSCHINA - 中文开源技术交流社区...

    执行计划,SQL语句过来,会先解析,词法解析,语法解析,之后生成执行计划,计划上会算出使用全盘扫秒还是依靠索引, mysql不缓冲执行计划,oracle有 体系结构 1.优化器--->执行计划 ...

  3. 如何编写快速高效的SQL查询(一)——MySQL8.0优化器查询优化处理与样例

    当希望MySQL能够以更高的性能运行查询时,最好的办法就是弄清楚MySQL是如何优化和执行查询的.一旦理解了这一点,很多查询优化工作实际上就是遵循一些原则让优化器能够按照预想的合理的方式运行. MyS ...

  4. [参考文档] [翻译]Oracle 12c R2优化器白皮书

    [参考文档] [翻译]Oracle 12c R2优化器白皮书 原文链接: http://www.oracle.com/technetwor ... edb-12c-1963236.pdf 第一版翻译链 ...

  5. DeepSpeed零冗余优化器Zero Redundancy Optimizer

    零冗余优化器 内容 零概述 培训环境 启用零优化 训练 1.5B 参数 GPT-2 模型 训练 10B 参数 GPT-2 模型 使用 ZeRO-Infinity 训练万亿级模型 使用 ZeRO-Inf ...

  6. Oracle优化04-Optimizer优化器

    思维导图 Optimizer概述 RBORule Based Optimizer RBO概述 案例说明 CBOCost Based Optimizer CBO概述 案例说明 全表扫描 索引扫描 思维导 ...

  7. 大规模神经网络最新文献综述:训练高效DNN、节省内存使用、优化器设计

    ©作者 | Julia Gusak等 编辑 | 杜伟.泽南 来源 | 机器之心 在本综述论文中,研究者解释了不同技术的工作原理.评估和比较,还分析了一些实现这些技术的框架. 现代深度学习和人工智能技术 ...

  8. MySQL优化器选错索引情况

    MySQL优化器选错索引情况 1. 优化器选错索引 2. 优化器的逻辑 3. 索引选择异常和处理 1. 优化器选错索引 之前MySQL架构以及执行sql查询语句介绍过MySQL优化器可以帮助我们优化s ...

  9. Oracle 12c数据库优化器统计信息收集的最佳实践

    Oracle 12c数据库优化器统计信息收集的最佳实践 转载自     沃趣科技(ID:woqutech) 作者         刘金龙(译) 原文链接   http://www.oracle.com ...

最新文章

  1. Trie树检索字符串
  2. PHOTOSHOP中3D下拉菜单为灰色如何设置
  3. GWT(Google Web Tookit) Eclipse Plugin的zip下载地址(同时提供GWT Designer下载地址)
  4. python制作射击游戏_零基础用Python开发的第一个小游戏——太空射击
  5. 关于用C#编写ActiveX控件1
  6. 二叉搜索树-php实现 插入删除查找等操作
  7. linux 贡献内存,Microsoft为Linux 5.12贡献完整性子系统更新
  8. 用html 数据库登陆界面设计,登录界面代码_登录界面设计代码_vs登录界面代码-Guide信息网...
  9. 网吧服务器ip地址修改,BXP服务器下的网吧ip地址怎么更改
  10. 如何在Word中打印奖状?按下这个键,就可以批量制作、打印奖状
  11. html如何转换成中文,html中文乱码怎么解决怎么造成如何避免中文乱码
  12. 计算机在材料科学领域有哪些应用,计算机在材料科学中的应用分析
  13. uniapp开发微信小程序教程(一)
  14. java读取本地图片并在网页显示
  15. 如何让laravel框架下出现vender文件夹
  16. HTB-Cursed Secret Party
  17. 带财神和白搭胡牌算法
  18. IDEA打包时clean报错
  19. 工作6年,谈谈我对“算法岗”的理解
  20. Kafka之Controller(Broker的领导者)

热门文章

  1. html5 制作 蓝色按钮,一组黑色质感的蓝色荧光3D按钮和单选按钮
  2. Silicon Labs EFR32 RF射频测试-RAILTEST
  3. 解题报告 (十) 单调栈
  4. Java学习——复习 第八天 Swing程序设计、AWT绘图、事件监听
  5. VC编译器与GCC编译器的区别
  6. Voyager的安装及配置文件
  7. 两大热门技术碰撞 论区块链在物联网中的应用
  8. 有哪些小巧舒适的蓝牙耳机?推荐几款小巧且舒适的蓝牙耳机
  9. 我的编程奋斗历程[四部曲之三]-成为金子篇
  10. 湖南发现外星智慧创造人类证据(图)