×
分享到微信

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

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

【FAQ】多个kernel要分别跑在MLU370三种型号的卡上,编译的时候要如何指定? 三叶虫2022-11-18 17:14:54 回复 查看 技术答疑
【FAQ】多个kernel要分别跑在MLU370三种型号的卡上,编译的时候要如何指定?
分享到:

答:

这个问题可以参考《Cambricon BANG C/C++ 编程指南》了解cncc的异构混合编译流程,也可以参考CNToolkit安装后的samples,路径为/usr/local/neuware/samples/BANG

举例子有个Kernel叫foo,保存在foo.mlu文件中,假设希望编译出的二进制同时支持MLU270/MLU290/MLU370,那么编译时指定多个架构

cncc --bang-mlu-arch=mtp_270 --bang-mlu-arch=mtp_290 --bang-mlu-arch=mtp_372 -fPIC -c foo.mlu -o foo.o

那么foo.mlu会用三个架构选项分别编译成cnbin并合并为cnfatbin保存在foo.o中,foo.o可以和CPU端的二进制使用gcc链接,假设当前在MLU370卡上执行了foo<<<>>>()函数调用,CNRT会根据当前硬件型号解析cnfatbin从中选择mtp_372架构的cnbin执行

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