Paddle
Paddle copied to clipboard
【热身打卡】开发框架,从编译 paddle 开始
各位参加飞桨开发者,大家好,欢迎大家参加飞桨社区贡献!有一些小伙伴有意愿参与,但不知道如何开始,飞桨团队特地推出了本次热身打卡活动,从编译开始,熟悉飞桨框架开发~ 参与热身打卡活动并按照邮件模板格式将截图发送至 [email protected],即可获得精美的飞桨黑客松周边礼品!数量有限,赶快行动起来吧!
热身打卡活动简介
在飞桨框架二次开发中,编译 paddle 是一个重要环节,也是很多任务(如API开发、算子性能优化、数据类型扩展等)的前置条件。本次热身打卡活动,要求参与者通过 github 拉取 PaddlePaddle/Paddle 仓库代码,并参考 源码编译教程 完成 paddle 编译,截图编译成功的界面后,参考如下格式向 [email protected] 发送邮件,打卡成功后即可获得精美的飞桨黑客松周边礼品!
注:完成全部打卡任务即可获得飞桨开源社区定制马克杯。本次热身打卡活动对硬件没有要求!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包 | ![]() |
| 运行单元测试 | ![]() |
礼品发放
- 打卡确认后,你会收到一封回复邮件,收集你的邮寄地址,请提供准确的邮件地址,以便小礼品可以飞速送到你的手上!
- 在编译过程中有任何的问题或建议,都可以提交 issue,注明 PaddlePaddle Hackathon,经飞桨团队确认是 bug 或有效建议后,可额外获得一个小礼品。
- 将本次活动或活动奖品分享到社交平台(如B站、微博、小红书、朋友圈等),截图发在QQ/微信群或邮件中,也有机会获得更多周边礼品哦~
优秀作品
- 常见IDE利用Docker完美查看Paddle源码跳转 @sanbuphy
- 【利用 AI Studio 完成 PaddlePaddle 编译】2024 版 @MarcusRYZ
参与飞桨框架贡献
如果你已经顺利完成了打卡,具备了基础的框架开发知识,你就可以参与飞桨社区丰富的开发任务,为一个大型开源项目做贡献,同时收获飞桨社区开发者的认可与各种福利。传送门:
- [ ] https://github.com/PaddlePaddle/Paddle/issues/48019
- [ ] https://github.com/PaddlePaddle/Paddle/issues/42571
- [ ] https://github.com/PaddlePaddle/community/tree/master/pfcc#good-first-issue
windows下 实现类似linux下 ”time 命令“ 显示命令执行时间,可使用以下脚本保存为timecmd.bat ,例如:timecmd.bat dir /a
@echo off
@setlocal
::
set start=%time%
::
:: Runs your command
cmd /c %*
::
set end=%time%
set options="tokens=1-4 delims=:.,"
for /f %options% %%a in ("%start%") do set start_h=%%a&set /a start_m=100%%b %% 100&set /a start_s=100%%c %% 100&set /a start_ms=100%%d %% 100
for /f %options% %%a in ("%end%") do set end_h=%%a&set /a end_m=100%%b %% 100&set /a end_s=100%%c %% 100&set /a end_ms=100%%d %% 100
::
set /a hours=%end_h%-%start_h%
set /a mins=%end_m%-%start_m%
set /a secs=%end_s%-%start_s%
set /a ms=%end_ms%-%start_ms%
if %ms% lss 0 set /a secs = %secs% - 1 & set /a ms = 100%ms%
if %secs% lss 0 set /a mins = %mins% - 1 & set /a secs = 60%secs%
if %mins% lss 0 set /a hours = %hours% - 1 & set /a mins = 60%mins%
if %hours% lss 0 set /a hours = 24%hours%
if 1%ms% lss 100 set ms=0%ms%
::
:: Mission accomplished
set /a totalsecs = %hours%*3600 + %mins%*60 + %secs%
echo command took %hours%:%mins%:%secs%.%ms% (%totalsecs%.%ms%s total)
请问修改了实现的代码,要跑单测的话必须二次编译吗?感觉这样还是挺影响开发效率呢
@zhengow 目前是这样的,我们也在尝试加速编译和提升开发效率的方法。
使用AI Studio编译Paddle的文档Paddle文档 中 四,安装whl库 pip install Paddle/python/dist/paddlepaddle-0.0.0-cp37-cp37m-linux_x86_64.whl 命令错误,处于Paddle/build路径下,应该使用pip3.7 install /python/dist/paddlepaddle-0.0.0-cp37-cp37m-linux_x86_64.whl命令
gitlab经常连不上,ubuntu系统毫无办法。然后AI studio我用QQ邮箱发了过了一天了还是没回复QAQ 本来bug多久麻烦,这下更雪上加霜了
编译到89%报错了,develop里面有没有定义的函数 [ 89%] Building CXX object paddle/fluid/eager/api/generated/fluid_generated/forwards/CMakeFiles/dygraph_function.dir/dygraph_forward_functions1.cc.o /home/dhy/Paddle-develop/paddle/fluid/eager/api/generated/fluid_generated/forwards/dygraph_forward_functions1.cc: In function ‘paddle::experimental::Tensor rsqrt_dygraph_function(const paddle::experimental::Tensor&, const AttributeMap&)’: /home/dhy/Paddle-develop/paddle/fluid/eager/api/generated/fluid_generated/forwards/dygraph_forward_functions1.cc:58:40: error: ‘rsqrtGradNodeCompat’ was not declared in this scope 58 | auto grad_node = std::shared_ptr<rsqrtGradNodeCompat>(new rsqrtGradNodeCompat(1, 1));
编译过程由于程序使用过多内存或其他系统资源而导致系统终止

这个问题我后来解决了,但是还出现了问题,就是编译的时候发现有一个函数没有在文件里面定义,然后我就只能放弃了。 这个情况我在你们的热身打卡网页的评论区反应了,还附上了报错的信息,我的ID是:Humanity
------------------ 原始邮件 ------------------ 发件人: "PaddlePaddle/Paddle" @.>; 发送时间: 2023年3月18日(星期六) 中午12:27 @.>; @.@.>; 主题: Re: [PaddlePaddle/Paddle] 【热身打卡】开发框架,从编译 paddle 开始 (Issue #45347)
编译过程由于程序使用过多内存或其他系统资源而导致系统终止
— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you commented.Message ID: @.***>
这个情况我在你们的热身打卡网页的评论区反应了,还附上了报错的信息
请问网页的评论区在哪儿?可以 附上链接,或者直接提一个新的issue。 @HumanityCSU
在编译过程中有任何的问题或建议,都可以提交 issue,注明 PaddlePaddle Hackathon,经飞桨团队确认是 bug 或有效建议后,可额外获得一个小礼品。
这个情况我在你们的热身打卡网页的评论区反应了,还附上了报错的信息
请问网页的评论区在哪儿?可以 附上链接,或者直接提一个新的issue。 @HumanityCSU
在编译过程中有任何的问题或建议,都可以提交 issue,注明 PaddlePaddle Hackathon,经飞桨团队确认是 bug 或有效建议后,可额外获得一个小礼品。
我已经在paddle仓库上提交了这个issue,这是地址:https://github.com/PaddlePaddle/Paddle/issues/51824
就是这个rsqGradNodeCompat函数没有定义,我还特意到文件里面去翻了一下源码,确实没有定义这个函数才引起的报错(这张截图显示的2 weeks ago说明我很早就提交了这个问题了) ------------------ 原始邮件 ------------------ 发件人: "PaddlePaddle/Paddle" @.>; 发送时间: 2023年3月20日(星期一) 下午4:06 @.>; @.@.>; 主题: Re: [PaddlePaddle/Paddle] 【热身打卡】开发框架,从编译 paddle 开始 (Issue #45347)
这个情况我在你们的热身打卡网页的评论区反应了,还附上了报错的信息
请问网页的评论区在哪儿?可以 附上链接,或者直接提一个新的issue。 @HumanityCSU
在编译过程中有任何的问题或建议,都可以提交 issue,注明 PaddlePaddle Hackathon,经飞桨团队确认是 bug 或有效建议后,可额外获得一个小礼品。
— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you were mentioned.Message ID: @.***>
使用AI Studio编译Paddle的文档Paddle文档 中 四,安装whl库 pip install Paddle/python/dist/paddlepaddle-0.0.0-cp37-cp37m-linux_x86_64.whl 命令错误,处于Paddle/build路径下,应该使用pip3.7 install /python/dist/paddlepaddle-0.0.0-cp37-cp37m-linux_x86_64.whl命令
十分感谢指出问题,已修改。
我记得我当时是在虚拟机linux环境下编译的报错,不是在AI Studio环境下,我也没有收到AI Studio的授权(我不是很清楚这个是不是叫授权,反正我当时没拿到,然后我就只能用自己本地新建一个Ubuntu系统的虚拟机弄了)
------------------ 原始邮件 ------------------ 发件人: @.>; 发送时间: 2023年3月20日(星期一) 下午4:25 收件人: @.>; 抄送: @.>; @.>; 主题: Re: [PaddlePaddle/Paddle] 【热身打卡】开发框架,从编译 paddle 开始 (Issue #45347)
使用AI Studio编译Paddle的文档Paddle文档 中 四,安装whl库 pip install Paddle/python/dist/paddlepaddle-0.0.0-cp37-cp37m-linux_x86_64.whl 命令错误,处于Paddle/build路径下,应该使用pip3.7 install /python/dist/paddlepaddle-0.0.0-cp37-cp37m-linux_x86_64.whl命令
十分感谢指出问题,已修改。
— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you were mentioned.Message ID: @.***>
我记得我当时是在虚拟机linux环境下编译的报错,不是在AI Studio环境下,我也没有收到AI Studio的授权(我不是很清楚这个是不是叫授权,反正我当时没拿到,然后我就只能用自己本地新建一个Ubuntu系统的虚拟机弄了) … ------------------ 原始邮件 ------------------ 发件人: @.>; 发送时间: 2023年3月20日(星期一) 下午4:25 收件人: @.>; 抄送: @.>; @.>; 主题: Re: [PaddlePaddle/Paddle] 【热身打卡】开发框架,从编译 paddle 开始 (Issue #45347) 使用AI Studio编译Paddle的文档Paddle文档 中 四,安装whl库 pip install Paddle/python/dist/paddlepaddle-0.0.0-cp37-cp37m-linux_x86_64.whl 命令错误,处于Paddle/build路径下,应该使用pip3.7 install /python/dist/paddlepaddle-0.0.0-cp37-cp37m-linux_x86_64.whl命令 十分感谢指出问题,已修改。 — Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you were mentioned.Message ID: @.***>
我已经通过AI Studio编译成功了,本地编译容易内存爆满,加油!
我也没有收到AI Studio的授权
@HumanityCSU 可以查下2023/3/6的邮件(是否进垃圾箱或者过滤了),PM有给回复信息的。
他回答说我没有在实习名单里面,那肯定啊,我还没有过那个热身打卡,肯定没有进实习名单吧,我就是想向他申请AI Studio的资源的,后面他没有再回复过我了
------------------ 原始邮件 ------------------ 发件人: "PaddlePaddle/Paddle" @.>; 发送时间: 2023年3月21日(星期二) 中午12:00 @.>; @.@.>; 主题: Re: [PaddlePaddle/Paddle] 【热身打卡】开发框架,从编译 paddle 开始 (Issue #45347)
我也没有收到AI Studio的授权
@HumanityCSU 可以查下2023/3/6的邮件(是否进垃圾箱或者过滤了),PM有给回复信息的。
— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you were mentioned.Message ID: @.***>
@luotao1 二次编译时为什么会触发 phi 库的重编呢,我只改了 paddle/cinn/hlir/framework/instruction.h 中的一行代码而已。
二次编译时为什么会触发 phi 库的重编呢,我只改了 paddle/cinn/hlir/framework/instruction.h 中的一行代码而已。
@6clc @zhhsplendid 麻烦看一下,按理说,PHI不应该依赖CINN的
@luotao1 二次编译时为什么会触发 phi 库的重编呢,我只改了 paddle/cinn/hlir/framework/instruction.h 中的一行代码而已。
方便提供一下你的cmake指令吗?本地测试你的PR的commit修改,二次make未复现该问题。
@luotao1 二次编译时为什么会触发 phi 库的重编呢,我只改了 paddle/cinn/hlir/framework/instruction.h 中的一行代码而已。
方便提供一下你的cmake指令吗?本地测试你的PR的commit修改,二次make未复现该问题。
@6clc cmake 命令如下:
export CCACHE_DIR=/workspace/.ccache
export CACHE_DIR=/workspace/.cache
cmake .. -DWITH_GPU=ON \
-DPY_VERSION=3.9 \
-DWITH_TESTING=ON \
-DCINN_ONLY=OFF \
-DWITH_CINN=ON
time make -j24
@luotao1 二次编译时为什么会触发 phi 库的重编呢,我只改了 paddle/cinn/hlir/framework/instruction.h 中的一行代码而已。
方便提供一下你的cmake指令吗?本地测试你的PR的commit修改,二次make未复现该问题。
@6clc cmake 命令如下:
export CCACHE_DIR=/workspace/.ccache export CACHE_DIR=/workspace/.cache cmake .. -DWITH_GPU=ON \ -DPY_VERSION=3.9 \ -DWITH_TESTING=ON \ -DCINN_ONLY=OFF \ -DWITH_CINN=ON time make -j24
你在本地是稳定复现这个情况吗?我在你PR的commit前make一遍,在你的PR上再make没有触发phi的编译。要是你那里还是有这个问题,我再去看看其他人是不是也这样。
已经过去好几个月啦,我都忘了当时是个啥情况了
------------------ 原始邮件 ------------------ 发件人: "PaddlePaddle/Paddle" @.>; 发送时间: 2023年8月10日(星期四) 下午4:04 @.>; @.@.>; 主题: Re: [PaddlePaddle/Paddle] 【热身打卡】开发框架,从编译 paddle 开始 (Issue #45347)
@luotao1 二次编译时为什么会触发 phi 库的重编呢,我只改了 paddle/cinn/hlir/framework/instruction.h 中的一行代码而已。
方便提供一下你的cmake指令吗?本地测试你的PR的commit修改,二次make未复现该问题。
@6clc cmake 命令如下: export CCACHE_DIR=/workspace/.ccache export CACHE_DIR=/workspace/.cache cmake .. -DWITH_GPU=ON \ -DPY_VERSION=3.9 \ -DWITH_TESTING=ON \ -DCINN_ONLY=OFF \ -DWITH_CINN=ON time make -j24
你在本地是稳定复现这个情况吗?我在你PR的commit前make一遍,在你的PR上再make没有触发phi的编译。要是你那里还是有这个问题,我再去看看其他人是不是也这样。
— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you were mentioned.Message ID: @.***>
@luotao1您好, 我在编译的时候当运行到“Performing build step for 'extern_xxhash'”时会报如下错误:
[ 9%] Performing build step for 'extern_xxhash' sed: couldn't open temporary file /paddle/third_party/xxhash/sedlZVZ0L: Permission denied CMakeFiles/extern_xxhash.dir/build.make:112: recipe for target 'third_party/xxhash/src/extern_xxhash-stamp/extern_xxhash-build' failed
查了下是CMakeFiles/extern_xxhash.dir/build.make这个文件112行sed的时候报错:
cd /paddle/third_party/xxhash && sed -i "s/-Wstrict-prototypes -Wundef/-Wstrict-prototypes -Wundef -fPIC/g" /paddle/third_party/xxhash/Makefile && make lib
请问若要修复是手动修改build.make,使得sed后先保存为某个文件,再用此文件覆盖/paddle/third_party/xxhash/Makefile吗? 不知我这是否是个例情况T . T
@yoyoIcy 你可以网上搜一下Performing build step for的解决方案,应该和你编译环境有关系。你是使用什么环境编译的?
@luotao1 mac上面拉了docker 镜像registry.baidubce.com/paddlepaddle/paddle:latest-dev编译的,我sed后另存为再覆盖先能执行过去了。遇到了新的问题c++: fatal error: Killed signal terminated program cc1plus,docker分配4个G内存不够?
把docker desktop里的resources->memory调成5G继续执行了
@luotao1您好, 我在编译的时候当运行到“Performing build step for 'extern_xxhash'”时会报如下错误:
[ 9%] Performing build step for 'extern_xxhash' sed: couldn't open temporary file /paddle/third_party/xxhash/sedlZVZ0L: Permission denied CMakeFiles/extern_xxhash.dir/build.make:112: recipe for target 'third_party/xxhash/src/extern_xxhash-stamp/extern_xxhash-build' failed
查了下是CMakeFiles/extern_xxhash.dir/build.make这个文件112行sed的时候报错:
cd /paddle/third_party/xxhash && sed -i "s/-Wstrict-prototypes -Wundef/-Wstrict-prototypes -Wundef -fPIC/g" /paddle/third_party/xxhash/Makefile && make lib
请问若要修复是手动修改build.make,使得sed后先保存为某个文件,再用此文件覆盖/paddle/third_party/xxhash/Makefile吗? 不知我这是否是个例情况T . T
是docker VirtioFS的问题,将docker的file sharing配置改为gRPC Fuse可以编译通过,或者将sed升级版本到4.8以上 https://forums.docker.com/t/sed-couldnt-open-temporary-file-xyz-permission-denied-when-using-virtiofs/125473/4 https://discourse.pi-hole.net/t/sed-couldnt-open-temporary-file-etc-pihole-sed/65159
你好,在尝试编译的时候出现了找不到UINT64_MAX的问题(环境为Windows)
飞腾+麒麟v10+昆仑K100环境中编译 PaddlePaddle 报错
详见:ISSUE #64903
二次编译时发现没有底层的头文件:paddle/fluid/platform/enforce.h 和 Op的cc文件:paddle/fluid/operators/rank_loss_op.cc 这正常吗?还有之前 cmake 提示有一些 backward op 缺失,cmake 和 make 都通过了



paddle/fluid/operators/rank_loss_op.cc
python/paddle/tensor/math.py

