7.3. 智能视觉深度学习处理器算力测试
7.3.1. BM1684-SoC模式性能测试
在SE5上安装libsophon的开发包,开发包在SDK内的位置为 sophon-img_<data>_<hash>/bsp-debs/sophon-soc-libsophon-dev_<x.y.z>_arm64.deb 。
1sudo dpkg -i sophon-soc-libsophon-dev_*_arm64.deb
在SE5上执行 bm_version 命令,输出包含 sophon-soc-libsophon 和 sophon-soc-libsophon-dev ,且版本号一致标志安装成功。
将1684相关的tpu-kernel压缩包拷贝到SE5上,其对应在SDK内的位置为 tpu-kernel_<data>_<hash>/tpu-kernel-1684_v<x.y.z>-<hash>-<data>.tar.gz 。
在SE5上解压tpu-kernel压缩包,进入目录后执行更新固件命令。
1tar -xzvf tpu-kernel-1684_v<x.y.z>-<hash>-<data>.tar.gz
2cd tpu-kernel-1684_v<x.y.z>-<hash>-<data>/
3python3 ./scripts/load_firmware.py --firmware ./firmware/bm1684_ddr.bin_v<x.y.z>-<hash>-<data> --firmware_tcm ./firmware/bm1684_tcm.bin_v<x.y.z>-<hash>-<data> --device_id 0
执行成功之后会打印如下信息:

备注
不同版本的tpu-kernel显示的版本信息可能有所差异
进入测试文件目录,并编译可执行程序
1cd samples/
2g++ test_instruction_perf.cpp -lbmlib -lpthread -ldl -L/opt/sophon/libsophon-current/lib/ -I/opt/sophon/libsophon-current/include/ -std=c++11 -o test_instruction_perf
典型的测试命令及测试结果如下
场景 |
测试命令 |
测试结果 |
INT8 关闭winograd加速 |
./test_instruction_perf -d int8 |
![]() |
INT8 打开winograd加速 |
./test_instruction_perf -d int8 -w 1 |
![]() |
FP32 |
./test_instruction_perf -d fp32 |
![]() |
7.3.2. BM1684-PCIe模式性能测试
1. 在安装有SC5系列PCIe卡的x86主机上安装libsophon及其驱动,开发包在SDK的 libsophon_<data>_<hash> 目录下, 分别为 sophon-libsophon_<x.y.z>_amd64.deb , sophon-driver_<x.y.z>_amd64.deb , sophon-libsophon-dev_<x.y.z>_amd64.deb 。
1sudo dpkg -i sophon-*_amd64.deb
将1684相关的tpu-kernel压缩包拷贝到X86主机上,其对应在SDK内的位置为 tpu-kernel_<data>_<hash>/tpu-kernel-1684_v<x.y.z>-<hash>-<data>.tar.gz 。
在X86主机上解压tpu-kernel压缩包,进入目录后执行更新固件命令。
1tar -xzvf tpu-kernel-1684_v<x.y.z>-<hash>-<data>.tar.gz
2cd tpu-kernel-1684_v<x.y.z>-<hash>-<data>/
3python3 ./scripts/load_firmware.py --firmware ./firmware/bm1684_ddr.bin_v<x.y.z>-<hash>-<data> --firmware_tcm ./firmware/bm1684_tcm.bin_v<x.y.z>-<hash>-<data> --device_id 0
执行成功之后会打印如下信息:

备注
不同版本的tpu-kernel显示的版本信息可能有所差异
进入测试文件目录,并编译可执行程序
1cd samples/
2g++ test_instruction_perf.cpp -lbmlib -lpthread -ldl -L/opt/sophon/libsophon-current/lib/ -I/opt/sophon/libsophon-current/include/ -std=c++11 -o test_instruction_perf
典型的测试命令及测试结果如下
场景 |
测试命令 |
测试结果 |
INT8 关闭winograd加速 |
./test_instruction_perf -d int8 |
![]() |
INT8 打开winograd加速 |
./test_instruction_perf -d int8 -w 1 |
![]() |
FP32 |
./test_instruction_perf -d fp32 |
![]() |
7.3.3. BM1684X-SoC模式性能测试
备注
本文提供的工具适用于SoC模式下的BM1684X算力测试,测试时SoC使用的sophon-soc-libsophon-dev需要SDK23.03.01及以上版本(≥ 0.4.6)。
查看当前环境中sophon-soc-libsophon-dev版本是否大于等于0.4.6,执行
bm_version
查看输出内容中是否有sophon-soc-libsophon-dev
,并且其版本大于等于0.4.6;若不满足以上环境需求,需要在SoC上安装libsophon的开发包,开发包在SDK(SDK23.03.01及以上版本)内的位置为 sophon-img_<data>_<hash>/bsp-debs/sophon-soc-libsophon-dev_<x.y.z>_arm64.deb 。
sudo dpkg -i sophon-soc-libsophon-dev_*_arm64.deb
点击链接下载测试工具:https://sophon-file.sophon.cn/sophon-prod-s3/drive/23/10/16/10/tpu_perf_1684x_package.tgz 。
将下载的算力测试工具文件拷贝到目标设备。随后执行以下命令,完成测试工具的解压和编译:
tar -xvf tpu_perf_1684x_package.tar.xz
cd tpu_perf_1684x_package/
chmod +x mkBuild.sh
bash mkBuild.sh
请先保证在执行算力测试前使用
bm-smi
查看智能视觉深度学习处理器使用率为0,即Tpu-Util
为0%。随后执行以下命令,开始测试。
./build/tpu_test_instrutions <测试算法 计算精度>
无参数执行时测试程序将先输出当前支持的测试方式和计算精度,并默认当前测试算法为卷积算法、计算精度为INT8。
也可以参照下方的参数说明指定测试方式、计算精度:
测试算法 计算精度:
参数 |
测试算法 计算精度 |
INS_CONV DT_INT8 |
卷积运算 INT8 |
INS_CONV DT_FP16 |
卷积运算 FP16 |
INS_MAT_MUL DT_INT8 |
矩阵乘运算 INT8 |
INS_MAT_MUL DT_FP16 |
矩阵乘运算 FP16 |
INS_MAT_MUL DT_FP32 |
矩阵乘运算 FP32 |
INS_MAT_MUL DT_BFP16 |
矩阵乘运算 BFP16 |
测试结果
输出分析:
不同核心测试结果的分割线如下:
====================== core[0] test info: ======================
某一个核心的一次测试结果的信息如下,其中第一行表示是第几次测试,第二行表示测试的输入shape等信息,第三行表示测试的用时和计算的算力大小:
--case 0
conv param: input shape=(1 64 128 128), oc=64, kernel=(3 3), stride=(1 1), dilation=(1 1), insert=(0 0), pad=(1 1 1 1)
TPU total time= 376654(us) TPU avg time= 37.67(us) TPU compute capability= 32.07T
使用默认卷积算法和默认计算精度INT8运行时,多次测试的平均结果输出如下:
====================== core[0] average TPU compute capability: 31.9445T
典型测试命令及测试结果如下:
参数 |
测试命令 |
测试结果 |
INS_CONV DT_INT8 |
./build/tpu_test_instrutions INS_CONV DT_INT8 |
![]() |
INS_CONV DT_FP16 |
./build/tpu_test_instrutions INS_MAT_MUL DT_FP16 |
![]() |
INS_MAT_MUL DT_INT8 |
./build/tpu_test_instrutions INS_MAT_MUL DT_INT8 |
![]() |
INS_MAT_MUL DT_FP16 |
./build/tpu_test_instrutions INS_MAT_MUL DT_FP16 |
![]() |
INS_MAT_MUL DT_FP32 |
./build/tpu_test_instrutions INS_MAT_MUL DT_FP32 |
![]() |
INS_MAT_MUL DT_BFP16 |
./build/tpu_test_instrutions INS_MAT_MUL DT_BFP16 |
![]() |
7.3.4. BM1684X-PCIe模式性能测试
备注
本文提供的工具适用于PCIe模式下的BM1684X算力测试,测试时PCIe使用的sophon-soc-libsophon-dev需要SDK23.03.01及以上版本(≥ 0.4.6)。
查看当前环境中libsophon版本是否大于等于0.4.6,执行
ll /opt/sophon/libsophon-current
查看是否存在libsophon,并且其软连接的libsophon版本是否大于0.4.6;若不满足以上环境需求,需要在安装有智能视觉深度学习处理器卡的x86主机上安装libsophon及其驱动,开发包在SDK(SDK23.03.01及以上版本)的 libsophon_<data>_<hash> 目录下, 分别为 sophon-libsophon_<x.y.z>_amd64.deb , sophon-driver_<x.y.z>_amd64.deb , sophon-libsophon-dev_<x.y.z>_amd64.deb 。
sudo dpkg -i sophon-*_amd64.deb
点击链接下载测试工具: https://sophon-file.sophon.cn/sophon-prod-s3/drive/23/10/16/10/tpu_perf_1684x_package.tgz。
将下载的算力测试工具文件拷贝到目标设备。随后执行以下命令,完成测试工具的解压和编译:
tar -xvf tpu_perf_1684x_package.tar.xz
cd tpu_perf_1684x_package/
chmod +x mkBuild.sh
bash mkBuild.sh
请先保证在执行算力测试前使用
bm-smi
查看智能视觉深度学习处理器使用率为0,即Tpu-Util
为0%。随后执行以下命令,开始测试。
./build/tpu_test_instrutions <测试算法 计算精度> <测试核心>
无参数执行时测试程序将先输出当前支持的测试方式和计算精度,并默认当前测试算法为卷积算法、计算精度为INT8、测试核心为0号核心。
也可以参照下方的参数说明指定测试方式、计算精度和测试核心:
测试算法 计算精度:
参数 |
测试算法 计算精度 |
INS_CONV DT_INT8 |
卷积运算 INT8 |
INS_CONV DT_FP16 |
卷积运算 FP16 |
INS_MAT_MUL DT_INT8 |
矩阵乘运算 INT8 |
INS_MAT_MUL DT_FP16 |
矩阵乘运算 FP16 |
INS_MAT_MUL DT_FP32 |
矩阵乘运算 FP32 |
INS_MAT_MUL DT_BFP16 |
矩阵乘运算 BFP16 |
测试核心: 仅在PCIe模式下支持多核心测试,核心ID与
bm-smi
命令输出的ID一致。多核心测试命令如:./build/tpu_test_instrutions INS_CONV DT_INT8 2,3,4
,此命令即为在2,3,4号核心测试算力,测试算法为卷积运算,计算精度为INT8。
测试结果
输出分析:
不同核心测试结果的分割线如下:
====================== core[0] test info: ======================
某一个核心的一次测试结果的信息如下,其中第一行表示是第几次测试,第二行表示测试的输入shape等信息,第三行表示测试的用时和计算的算力大小:
--case 0
conv param: input shape=(1 64 128 128), oc=64, kernel=(3 3), stride=(1 1), dilation=(1 1), insert=(0 0), pad=(1 1 1 1)
TPU total time= 376654(us) TPU avg time= 37.67(us) TPU compute capability= 32.07T
使用默认卷积算法和默认计算精度INT8运行时,0号核心的多次测试的平均结果输出如下:
====================== core[0] average TPU compute capability: 31.9445T
典型测试命令及测试结果如下:
参数 |
测试命令 |
测试结果 |
INS_CONV DT_INT8 |
./build/tpu_test_instrutions INS_CONV DT_INT8 |
![]() |
INS_CONV DT_FP16 |
./build/tpu_test_instrutions INS_MAT_MUL DT_FP16 |
![]() |
INS_MAT_MUL DT_INT8 |
./build/tpu_test_instrutions INS_MAT_MUL DT_INT8 |
![]() |
INS_MAT_MUL DT_FP16 |
./build/tpu_test_instrutions INS_MAT_MUL DT_FP16 |
![]() |
INS_MAT_MUL DT_FP32 |
./build/tpu_test_instrutions INS_MAT_MUL DT_FP32 |
![]() |
INS_MAT_MUL DT_BFP16 |
./build/tpu_test_instrutions INS_MAT_MUL DT_BFP16 |
![]() |