-
Notifications
You must be signed in to change notification settings - Fork 5.6k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
How to use phi C++ API in a standalone cmake project? #43965
Comments
您好,我们已经收到了您的问题,会安排技术人员尽快解答您的问题,请耐心等待。请您再次检查是否提供了清晰的问题描述、复现代码、环境&版本、报错信息等。同时,您也可以通过查看官网API文档、常见问题、历史Issue、AI社区来寻求解答。祝您生活愉快~ Hi! We've received your issue and please be patient to get responded. We will arrange technicians to answer your questions as soon as possible. Please make sure that you have posted enough message to demo your request. You may also check out the API,FAQ,Github Issue and AI community to get the answer.Have a nice day! |
目前是link core_avx.so,phi目前还没有独立成库,后续才会拆分 目前我们有相应的自定义算子和自定义kernel机制,您看下是不是可以参考: https://www.paddlepaddle.org.cn/documentation/docs/zh/guides/custom_op/new_cpp_op_cn.html https://www.paddlepaddle.org.cn/documentation/docs/zh/dev_guides/custom_device_docs/index_cn.html |
好的, 我看到了如何配置 cmake , 感谢您的回复 |
我发现如果不使用构建时使用的环境添加下面的依赖, 而使用别的路径(conda 环境下相同版本的 package), 构建的 exe 运行时失败, 失败来自于 glog 和 gflags 但是这种接口的使用场景本来就应该是不必编译 paddle 源码而直接使用分发的 wheel包的
|
您这边具体是想写什么样的功能:
|
我希望尝试一下 使用 phi 接口实现
其中的一些测试会使用到
前面遇到的编译问题应该是配置不太对, 应该是不需要 link glog/gflags 动/静态库, 只需要它们的头文件, 目前可以编译了🎉, 感谢帮助 |
请教一个额外的问题, 看起来 phi 实现了类似于 torch dispatcher 的机制(这句话可能有误), 但是似乎只是对注册的 kernel 使用, 请问是否可有可能实现下面的机制 python 层调用
通过 C++ dispatcher或者类似机制选择 我在之前提过类似的 issue |
如果您是第三种使用方式,目前paddle理论上也可以使用,但我们还没有做过比较广泛的验证,也没有推广,所以可能会有一些问题,昨天我试了一下,发现一个问题,修复了一下,您看下这里面的示例是您要的吗? |
paddle目前phi的实现和torch的dispatcher有所差别,phi只会进行一次kernel查找,找到kernel执行,不会有多层的分发 看您写的例子似乎就是想使用这样的API 目前是可以的,您可以参照上面链接PR中的示例,在C++函数中调用paddle::gather_nd使用,输入是paddle::Tensor |
上图中的API在paddle的安装目录中有,我们当前这个机制可以在自定义算子中使用,您可以参考这节文档:https://www.paddlepaddle.org.cn/documentation/docs/zh/guides/custom_op/new_cpp_op_cn.html#pythonc-api |
我有遇到 #43977 处理的问题, 目前实现
是ok的! 请问我可以自定义
里面的
的实现吗? |
这样做似乎是没有意义的, 我会尝试一下注册外部 kernel, 感谢帮助👍🏼 |
所以您还是要将框架原有的运算,替换为您自定义的运算? 这种目前还不支持,后面可以考虑下让自定义kernel的机制更灵活,在外部实现之后,替换内部原有的kernel 请问具体是什么样的场景需要将一个标准运算替换为自定义的运算,并且还不能通过自定义新的API实现(比如您可以新增一个custom_abs自定义算子),可以展开介绍下吗? |
不客气,您可以试试通过自定义算子在外部新增一个custom_abs |
我在尝试将 lazy-tensr 的机制引入到 paddle 中(pytorch 中已经有比较完善的支持, 比如 https://github.com/pytorch/xla/ ), 这需要推迟 算子的执行, 但是在目前 paddle 只支持自定义 kernel 的情况下操作会受到一些限制 感觉paddle目前的想法是所有后端都是以 kernel 为基础的, 但是一些 custom-device 未必如此, pytorch 的 dispatcher 机制使得支持 lazy-tensor/functorch 以及自由拓展后端变得更加灵活, paddle 目前则达不到这样的效果, 如果 可以实现 API 层面的 dispatch 而不仅仅只处理 kernel, 也许可以激发更多新的想法(比如完全脱离静态图的动转静trace方案, 以及一些 torch 里面的使用 https://pytorch.org/tutorials/advanced/dispatcher.html#going-beyond-autograd) 遇到的一些具体的问题
|
请提出你的问题 Please ask your question
HI, 请问在安装 paddlepaddle 的 wheel 包后如何在独立的 cmake 项目中使用 phi 的C++ 接口(而不需要编译 paddle 的源码), 比如注册一些外部 kernel, 请问有如何配置的例子吗?
另外似乎 wheel 包里面只导出了头文件, 比如这个路径
请问是需要 link
core_avx.so
吗, 还是存在 phi 相关的动态库?The text was updated successfully, but these errors were encountered: