在rk3399(rockpi 4b)上部署Tengine AI框架(GPU)测试(linux-4.4)

  • 构建可用的环境
    由于瑞芯微提供的bsp中的内核版本为4.4,所以各个开发板的厂家提供的长期维护的内核版本也是4.4,

在5.3.x的环境下只是跑起来了opengl 但是opencl始终无法运行起来,

因为手里面只有rockpi4b的板子,rockpi目前没有找到支持opencl的系统,我在网上找到了firefly的ubuntu18.04的系统,这个系统已经移植好了opencl1.2,可以直接使用,

只是后面想进行一些个性化的更改可能会受限,不过目前可以用于进行一些测试

如下在上面进行了glmark2的测试,

opencl1.2也显示是可用的

  • 部署 Tengine AI 框架(GPU)

Tengine的编译看
这里

编译Tengine with ACL

Tengine是通过调用Arm Compute Library(ACL)进行GPU加速。

首先编译ACL
#编译ACL
root@firefly:/home/gpu# git clone https://github.com/ARM-software/ComputeLibrary.git
#切换19.02分支
root@firefly:/home/gpu/ComputeLibrary# git checkout -b v19.02 v19.02
#编译
scons Werror=1 -j4 debug=0 asserts=0 neon=0 opencl=1 embed_kernels=1 os=linux arch=arm64-v8a

然后在Tengine中使能ACL
#修改default/arm64_linux_native.config文件
root@firefly:/home/gpu/tengine# vi default_config/arm64_linux_native.config
 
#The following option is used for building acl or not. [y/n]
#option value [y/n]
BUILD_ACL=y
 
#The following option are used for setting acl only if turning on the BUILD_ACL option
ACL_ROOT=/home/gpu/ComputeLibrary
#注意ACL的路径
 
#执行编译
root@firefly:/home/gpu/tengine# ./linux_build.sh default_config/arm64_linux_native.config

测试!

首先来看一下没有GPU的情况下,tengine默认使用的是2*A72的大核进行测试的,以mobilenet_ssd的模型进行测试

可以看到CPU的占用情况,以及执行50次的平均耗时为170.881ms

然后以GPU+1*A53的情况下进行测试

#设置gpu的频率未固定的最大值
root@firefly:/home/gpu/tengine/examples/build# echo "performance" > /sys/devices/platform/ff9a0000.gpu/devfreq/ff9a0000.gpu/governor
#查看一下
root@firefly:/home/gpu/tengine/examples/build# cat /sys/devices/platform/ff9a0000.gpu/devfreq/ff9a0000.gpu/cur_freq
800000000
root@firefly:/home/gpu/tengine/examples/build#
 
# disable gpu run concat,     avoid frequent data transfer between cpu and gpu
root@firefly:/home/gpu/tengine/examples/build# export GPU_CONCAT=0
 
# enable gpu fp16
root@firefly:/home/gpu/tengine/examples/build# export ACL_FP16=1
 
# repeat count to run mssd,     get avg time
root@firefly:/home/gpu/tengine/examples/build# export REPEAT_COUNT=50
 
# run acl graph on NHWC layout
root@firefly:/home/gpu/tengine/examples/build# export ACL_NHWC=1
 
#把opencl的系统库添加到系统环境中
root@firefly:/home/gpu/tengine/install/lib# export LD_LIBRARY_PATH=/home/gpu/tengine/install/lib/
 
#执行 -d acl_opencl to use gpu, taskset 0x1 to bind CPU0(A53)
root@firefly:/home/gpu/tengine/examples/build# taskset 0x1 ./mobilenet_ssd/MSSD -d acl_opencl

你可能感兴趣的:(瑞芯微rk3399)