Skip to content

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

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看板

Delete Ref & VectorRef and add GetDataSafely !22997

  • Report abuse
!22997 已合并 3月 13, 2020 由 saxon_zh@saxon_zh 创建
#<User:0x00007fedf8079f20>
  • 概览 0
  • 提交 10
  • 变更 37

Created by: chenwhql

This PR revome two invalid error check interface, and add a valid error check interface:

not change the code logic, only enhances the error message

RemoveRef & VectorRef check (remove safe_ref.h)

Ref & VectorRef are used to safely obtain the data pointed to by a pointer. Before * ptr, they will check whether the pointer is nullptr. but...

  • The code used these two interface get data from ptr, almost no error messages
  • use Ref & VectorRef cannot tell users the actual error pointer
  • use Ref & VectorRef cannot tell users the actual error file & line number
  • More than 100 places used

example:

int* a = nullptr;
paddle::operators::detail::Ref(a);
----------------------
Error Message Summary:
----------------------
Error:
[Hint: ptr should not be null.] at (/work/paddle/paddle/fluid/operators/detail/safe_ref.h:28)
  • no error message!
  • error ptr value name is a, not ptr!
  • error file & line are enforce_test.cc:369, not safe_ref.h:28!

Add GET_DATA_SAFELY

  • A new error check interface in enforce.h to replace Ref & VectorRef, resolve all above problems!
  • You only need use GET_DATA_SAFELY macro, and pass in 3 key word, you can get a complete and accurate error message
  • The error message using the new interface is like follows:
int* a = nullptr;
GET_DATA_SAFELY(a, "Input", "X", "dummy");
----------------------
Error Message Summary:
----------------------
InvalidArgumentError: Unable to get int data of Input X in operator dummy. Possible reasons are:
  1. The X is not the Input of operator dummy;
  2. The X has no corresponding variable passed in;
  3. The X corresponding variable is not initialized.
  [Hint: pointer a should not be null.] at (/work/paddle/paddle/fluid/platform/enforce_test.cc:383)
指派人
分配到
审核者
Request review from
无
里程碑
无
分配里程碑
工时统计
标识: paddlepaddle/Paddle!22997
Source branch: github/fork/chenwhql/easyuse/del_ref_vectorref
渝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