正文:
- 参照资料《A1000 FAD 神经网络模型部署指南-v20210413.pdf》下载、安装 Xtensa Xplorer IDE,在申请时尽量用公司或者学校的邮箱,本人用个人邮箱申请,两次被拒。
- 打开邮箱查看申请成功后,点击下载连接
- 下载对应系统的安装包
在Linux系统中如果点击,不下载。可以鼠标右键点击该下载文件 Copy link address,用 wget 下载
wget http://9509d611dcd657d602e7-d4584b85baaf09c8f82c50d7192a08c4.r96.cf2.rackcdn.com/Xplorer-8.0.15-linux-installer.bin
- 安装Xtensa Xplorer IDE ,添加license.lic,安装 XtensaTools_RI_2018 和 visionp6_hs1p,运行测试demo
资料《A1000 FAD 神经网络模型部署指南-v20210413.pdf》有详细的步骤 - 把 bsnn_tools docker 中的生成的文件拷到本地电脑
生成过程见 黑芝麻A1000 docker环境中使用 bsnntool 转换模型(六)的第5步,生成之后拷到本地PC端
将 docker 容器中 /workspace/tools/Net-FW 打包拷贝到本地PC目录
$ sudo docker cp 9ee317b36456:tools/Net-FW /xxx/heizhima/nn/model_zoo_dir1
$ mv Net-FW Net_Fw_package
$ sudo docker cp 9ee317b36456:/workspace/bsnn_space/bstnnx_test_result/test1/600_CodeGenerationStage /xxx/heizhima/nn/model_zoo_dir1/Net_Fw_package
- 修改脚本路径
修改 net_fw_setup.sh
$gedit Net_Fw_package/utilities/script/net_fw_setup.sh
修改 NET_FW_PATH , 为 Net_Fw_package 的绝对路径
$ cd Net_Fw_package/
$ pwd
/xxx/model_zoo_dir1/Net_Fw_package
export NET_FW_PATH="/xxx/model_zoo_dir1/Net_Fw_package"
修改 xtensa_setup.sh*
gedit Net_Fw_package/utilities/script/xtensa_setup.sh
$ sudo find / -name "xt-xcc"
find: ‘/run/user/1000/doc’: Permission denied
find: ‘/run/user/1000/gvfs’: Permission denied
/home/you_name/workspace/files/heizhima/nn/XtensaTools_RI_2018_0_linux/RI-2018.0-linux/XtensaTools/bin/xt-xcc
/home/you_name/xtensa/XtDevTools/install/tools/RI-2020.5-linux/XtensaTools/bin/xt-xcc
/home/you_name/xtensa/XtDevTools/install/tools/RI-2018.0-linux/XtensaTools/bin/xt-xcc
find: ‘/proc/20140/task/20140/net’: Invalid argument
find: ‘/proc/20140/net’: Invalid argument
第一个是XtensaTools_RI_2018_0_linux解压后的目录,第二个是RI-2020.5-linux,第三个是安装有visionp6_hs1p,选择第三个目录,修改
export XTENSA_TOOLS="/home/you_name/xtensa/XtDevTools/install/tools/RI-2018.0-linux/XtensaTools"
- 执行环境脚本
$ source ./utilities/script/xtensa_setup.sh
$ source ./utilities/script/net_fw_setup.sh
- 执行运行脚本
$ conda env list
$ conda activate yolov5
$ ./utilities/script/hw_test_gen.py -i 600_CodeGenerationStage/test1_mini_model.hw_test_config.json -o output/model
- 查看生成文件
- 把文件传送到A1000板子上
$adb push output/ /home/root
$adb push utilities/evb_util/ /usr/bin/
$adb shell
- A1000板子上测试
$cd /home/root/output/model
$export PATH=/usr/bin/evb_util/:$PATH
$./run_dsp.sh
- 测试结果分析
#测试时分别使用4个 MAC array
Number of MAC array: 4
Test Freq: 800
Info: GREG_F_DAG_CYCLE_COUNT value is 527466
Info: GREG_F_DAG_MAC_COUNT value is 30507
Info: GREG_F_DAG_AXI_RD value is 29525
Info: GREG_F_DAG_AXI_WR_COUNT value is 466538
Info: bstNetBusy timer is 560931
Info: bstRunNet timer is 572038
仿真测试报告是 1200_ReportGenerationStage/bst_model_perf_report.pdf
计算得到:
实测频率 = Test Freq / bstRunNet timer = 800 000 000 / 572038 = 1398.5 FPS
实测算力 = 2*orig_mac_cnt( 仿真报告 ) * 实测帧率 = 2 * 86704128 * 1398.5 = 0.24 Tops
NET引擎算力 = Mac array * frequeny * 2 = 4 * 4096 * 800 000 000 * 2 = 26.2 Tops
算力利用率 = 实测算力 / NET引擎算力 = 24.2 / 26.2 = 0.93%