Skip to content

  • 体验新版
    • 正在加载...
  • 登录
  • PaddlePaddle
  • Paddle
  • 合并请求
  • !22778

P
Paddle
  • 项目概览

PaddlePaddle / Paddle
大约 2 年 前同步成功

通知 2325
Star 20933
Fork 5424
  • 代码
    • 文件
    • 提交
    • 分支
    • Tags
    • 贡献者
    • 分支图
    • Diff
  • Issue 1423
    • 列表
    • 看板
    • 标记
    • 里程碑
  • 合并请求 543
  • Wiki 0
    • Wiki
  • 分析
    • 仓库
    • DevOps
  • 项目成员
  • Pages
P
Paddle
  • 项目概览
    • 项目概览
    • 详情
    • 发布
  • 仓库
    • 仓库
    • 文件
    • 提交
    • 分支
    • 标签
    • 贡献者
    • 分支图
    • 比较
  • Issue 1,423
    • Issue 1,423
    • 列表
    • 看板
    • 标记
    • 里程碑
  • 合并请求 543
    • 合并请求 543
  • Pages
  • 分析
    • 分析
    • 仓库分析
    • DevOps
  • Wiki 0
    • Wiki
  • 成员
    • 成员
  • 收起侧边栏
  • 动态
  • 分支图
  • 创建新Issue
  • 提交
  • Issue看板

improve efficiency of runtime InferVarType !22778

  • Report abuse
!22778 已合并 2月 27, 2020 由 saxon_zh@saxon_zh 创建
#<User:0x00007fedf5cd4cf0>
  • 概览 0
  • 提交 18
  • 变更 58

Created by: liu-plus-wei

RuntimeInferVarType两个主要的性能瓶颈: 1. RuntimeInferVarTypeContext 的构造函数在整合Input和Output来适配静态图接口导致的高频unordered_map, vector的构造和析构 【改动】 将原有的InferVarTypeContext接口根据使用场景是Input还是Output做了拆分:

  • SetType = > SetOutputType
  • GetType => GetInputType
  • ...

对于检查Input中是否存在/都是 某type类型的逻辑,抽象出新的接口在Context内部实现:

  • InputTypeAnyOf
  • InputTypeAllOf

通过拆分、新增接口达到动态图、静态图可以根据各自原有数据结构来实现接口逻辑的目的,动态图无需通过数据拷贝来适配静态图逻辑。

【遗留问题】

  1. 一定程度上增加了InferVarType 逻辑实现的限制,改动之后逻辑更多在Context内部实现,不建议OP定制逻辑直接操作Input、Output内部的Var List
  2. 暂时还保留了进行拆分的原有API,原有API改为在RuntimeInferVarType 中不可用
  3. save_op 中使用SetType函数操作了非Input/Output中的Var - 直接创建了新的Var,因为这个原因,暂时在RuntimeInferVartype中保留了SetType函数,不做任何操作,跟此次修改前逻辑保持一致。

2. PassInDtypeAndVarTypeToOutput ()operator中返回unordered_map导致的map反复创建和析构 【改动】 本次的改动比较简单粗暴,将创建的映射表改为static,由返回拷贝改为返回引用

指派人
分配到
审核者
Request review from
无
里程碑
无
分配里程碑
工时统计
标识: paddlepaddle/Paddle!22778
Source branch: github/fork/liu-plus-wei/infer_var_type
渝ICP备2023009037号

京公网安备11010502055752号

网络110报警服务 Powered by GitLab CE v13.7
开源知识
Git 入门 Pro Git 电子书 在线学 Git
Markdown 基础入门 IT 技术知识开源图谱
帮助
使用手册 反馈建议 博客
《GitCode 隐私声明》 《GitCode 服务条款》 关于GitCode
Powered by GitLab CE v13.7