Skip to content

  • 体验新版
    • 正在加载...
  • 登录
  • PaddlePaddle
  • Paddle
  • Issue
  • #3943

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看板
已关闭
开放中
Opened 9月 07, 2017 by saxon_zh@saxon_zhGuest

是否应该移除对device_id的假设,以及类似use_gpu这样的bool变量

Created by: shijiaxin

Paddle中的变量device_id,在-1的时候表示CPU,在大于等于0的时候表示GPU,这样带来很大的限制,就是很难再支持除了Nvidia GPU和CPU之外的其他设备,也难以支持不同的实现方式。而且这样的需求还是很多的,比如让Paddle支持FPGA,ASIC芯片,AMD的GPU。

现在已经被merge的关于intel-mkldnn的代码也碰到了类似的问题,它的数据存储格式与CPU的格式不一样,因此需要实现一个MKLDNNMatrix.h,device_id类型使用-2,这显然不大合理。

如果需要加入其它的设备如FPGA,有一个基本的需求是占用多个device_id,而0以上的device_id已经被假设为GPU了,很难再分配出多个device_id,(难道用-3到-xxx?)。

另一个问题也类似,就是Paddle假设设备除了CPU,就是Nvidia的GPU,因此使用了use_gpu这样的bool变量,而不是用一个枚举类型来表示设备类型,添加新的设备支持就会变得十分困难。

重构中的代码有DeviceContext这样的类型,看起来比较容易支持新的Device,但到了具体实现的时候仍会有bool类型的判断,代码如下,如果一个CPU的Place和一个FPGA的Place判断,就会被判定为相等:

bool places_are_same_class(const Place &p1, const Place &p2) {
  return is_gpu_place(p1) == is_gpu_place(p2);
}
指派人
分配到
无
里程碑
无
分配里程碑
工时统计
无
截止日期
无
标识: paddlepaddle/Paddle#3943
渝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