又在全志d1开发板上玩ncnn
2022-03-28
转载自知乎用户 nihui 原文链接,原文写于 2021-07-03
又在全志d1开发板上玩ncnn
可在不修改本文章内容和banner图前提下,转载本文
一、0x0 工具链变得更好了#
距上次在全志d1开发板上玩ncnn,已经过去了5个月
在此期间,ncnn收到perfxlab和腾讯犀牛鸟开源人才的学生有关riscv vector的优化
但更重要的是,平头哥收到了社区的反馈,提供了新版工具链
- 支持了 risc-v vector intrinsic v1.0
- 修复了 release 模式编译 ncnn 时的非法指令问题
https://occ.t-head.cn/community/download?id=3987221940543754240
旧版本工具链的 gcc 比较笨,经常做些负优化,于是试试全新的工具链
二、0x1 配置新的 cmake toolchain#
- arch 参数要用 v0p7,不能用默认的 v,否则会生成非法指令
- 删除 -DRVV_SPEC_0_7,开启 ncnn 的 rvv-1.0 intrinsic 代码
- 删除 -D__riscv_zfh=1,arch 参数的 zfh 中已经指代
放在 ncnn/toolchains/c906-v222.toolchain.cmake
三、0x2 工具链修复#
因为 rvv-0.7 缺少某些指令支持,遇到一些 rvv-1.0 的代码会生成 unknown op
因此要修改下工具链头文件
打开 Xuantie-900-gcc-linux-5.10.4-glibc-x86_64-V2.2.2/lib/gcc/riscv64-unknown-linux-gnu/10.2.0/include/riscv_vector.h
- 找到以下三行
- 注释掉
- 找到文件末尾的三个 #endif,添加以下兼容代码,保存
四、下载和编译ncnn#
这次可以用 release 编译啦!
五、新旧工具链的性能测试对比#
六、0x5 欢迎关注 ncnn github,加qq群交流!#
https://github.com/Tencent/ncnn
qq群在 ncnn github 首页 readme 中~
Related Issues not found
Please login GitHub to create issue