Skip to content

【热身打卡】开发框架,从编译 paddle 开始 #45347

@Ligoml

Description

@Ligoml

各位参加飞桨开发者,大家好,欢迎大家参加飞桨社区贡献!有一些小伙伴有意愿参与,但不知道如何开始,飞桨团队特地推出了本次热身打卡活动,从编译开始,熟悉飞桨框架开发~
参与热身打卡活动并按照邮件模板格式将截图发送至 ext_paddle_oss@baidu.com

热身打卡活动简介

在飞桨框架二次开发中,编译 paddle 是一个重要环节,也是很多任务(如API开发、算子性能优化、数据类型扩展等)的前置条件。本次热身打卡活动,要求参与者通过 github 拉取 PaddlePaddle/Paddle 仓库代码,并参考 源码编译教程 完成 paddle 编译,截图编译成功的界面后,参考如下格式向 ext_paddle_oss@baidu.com 发送邮件。

注:本次热身打卡活动对硬件没有要求!CPU/GPU 均可,赶快行动起来吧~也可 申请AI Studio开发资源

编译流程

1. 增加时间戳

即在命令最开始加上time,以【Linux下从源码编译】文档的【使用Docker编译】为例,

【9.执行cmake】和【10.执行编译】增加时间戳的命令为:

  • CPU版本的cmake:time cmake .. -DPY_VERSION=3.8 -DWITH_GPU=OFF
  • GPU版本的cmake:time cmake .. -DPY_VERSION=3.8 -DWITH_GPU=ON
  • 执行编译:time make -j$(nproc),举例有4核,即time make -j4

2. 初次编译/二次编译

初次编译时间较长,二次编译因为有编译缓存的存在,时间会缩短,对日常开发来说,二次编译时间才是影响开发效率的。让我们来感受下修改不同文件的二次编译时间。

  • 修改底层的头文件:paddle/fluid/platform/enforce.h
  • 修改Op的cc文件:paddle/fluid/operators/rank_loss_op.cc
  • 修改python文件:python/paddle/tensor/math.py

二次编译方式:对应文件加一个空行/空格保存退出后,然后执行编译命令time make -j$(nproc),二次编译不再需要执行cmake。

3. 安装whl包

参考【Linux下从源码编译】文档的【使用Docker编译】【11. 寻找whl包】【12. 安装whl包】

4. 运行单元测试

不同的编译选项,能编译出不同的功能,对应的编译时间也各不相同。可以参考编译选项表,尝试打开WITH_TESTING=ON编译出单元测试,并正确运行一个单测。

  • 重新运行cmake命令:cmake .. -DPY_VERSION=3.8 -DWITH_GPU=OFF -DWITH_TESTING=ON(在原来的cmake命令后加入-DWITH_TESTING=ON
  • 执行编译命令make -j$(nproc)
  • 安装第三方依赖pip3.8 install -r ../python/requirements.txt
  • 进入build目录,运行单元测试:参考【飞桨API python端开发指南】之【运行单元测试】,执行ctest -R test_logsumexp运行logsumexp的单测。

邮件格式

标题: [Hackathon 热身打卡]

内容:

飞桨团队你好,

【GitHub ID】:XXX

【打卡内容】:初次编译/二次编译/安装whl包/运行单元测试

【打卡截图】:

如:

标题: [Hackathon 热身打卡]

内容:

飞桨团队你好,

【GitHub ID】:paddle-hack

【打卡内容】:初次编译&二次编译&安装whl包&运行单元测试

【打卡截图】:

硬件
编译方式 参考【Linux下从源码编译】文档的【使用Docker编译】(源码编译文档 有多种编译方式,请大家填写本次编译参考的文档)
cmake命令和时间 命令:time cmake .. -DPY_VERSION=3.8 -DWITH_GPU=OFF
时间:注意要将commit号截图进来哦
初次编译命令和时间 命令:time make -j20 (写一下大家用几核哦)
时间:以下时间仅作为示例,不代表真实的初次编译时间
二次编译时间 时间:以下时间仅作为示例,不代表真实的二次编译时间
paddle/fluid/platform/enforce.h

paddle/fluid/operators/rank_loss_op.cc

python/paddle/tensor/math.py
安装whl包
运行单元测试

优秀作品

参与飞桨框架贡献

如果你已经顺利完成了打卡,具备了基础的框架开发知识,你就可以参与飞桨社区丰富的开发任务,为一个大型开源项目做贡献,同时收获飞桨社区开发者的认可与各种福利。传送门:

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

Status

In Progress

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions