×
分享到微信

打开微信,使用扫一扫进入页面后,点击右上角菜单,

点击“发送给朋友”或“分享到朋友圈”完成分享

自定义算子问题 cctcct2021-09-12 13:44:49 回复 2 查看 技术答疑 使用求助
自定义算子问题
分享到:

根据文档走自定义算子遇上问题,越看文档越困惑,找不出问题,恳请官方支持。


以添加自定义激活函数SiLU为例子,流程如下,

CNPlugin_root = /workspace/volume/private/sdk/Cambricon-CNPlugin-MLU270

neuware_root = /workspace/volume/private/sdk/cambricon_pytorch/neuware

pytorch_root = /workspace/volume/private/sdk/cambricon_pytorch/pytorch


(1) 按照文档添加SiLU的cpu/mlu实现,plugin_silu.cc plugin_silu_cpu.cc  plugin_silu_cpu.h  plugin_silu_kernel.h  plugin_silu_kernel.mlu,添加路径在{CNPlugin_root}/pluginops/plugin_silu_op文件夹,运行{CNPlugin_root}/build_cnplugin.sh编译脚本,能够在Makefile里面看到以下字段,表示能找到并编译源码

@echo "... pluginops/plugin_silu_op/plugin_silu.o"

@echo "... pluginops/plugin_silu_op/plugin_silu.i"

@echo "... pluginops/plugin_silu_op/plugin_silu.s"

@echo "... pluginops/plugin_silu_op/plugin_silu_cpu.o"

@echo "... pluginops/plugin_silu_op/plugin_silu_cpu.i"

echo "... pluginops/plugin_silu_op/plugin_silu_cpu.s"


(2) 因为CNPlugin编译完不知道怎么install,所以手动复制头文件和.so

cp {CNPlugin_root}/common/include/cnplugin.h {neuware_root}/include

cp {CNPlugin_root}/build/libcnplugin.so  {neuware_root}/lib64


(3) 参考yolov5的教程,在{pytorch_root}/src/catch/torch_mlu/tools/mlu_functions.yaml声明算子,在{pytorch_root}/src/catch/torch_mlu/csrc/aten/operators更新op_methods.cpp  op_methods.h添加cpu实现,添加warpper和kernel


(4) 编译pytorch,运行bash {pytorch_root}/../configure_pytorch.sh


(5) 重新启动虚拟环境


在python3里面运行torch.ops.torch_mlu.SiLU会报错RuntimeError: No such operator torch_mlu::SiLU


版权所有 © 2021 寒武纪 Cambricon.com 备案/许可证号:京ICP备17003415号-1
关闭