DS-5 Streamline分析GPU执行性能

    DS-5 Streamline是ARM提供的一个强大的图形化性能分析和抓取工具,其不仅可以用来做CPU的运行时性能分析,最主要的是还可以用来做Mali系列的GPU分析。甚至可以做基本上是Mali上面最强大的GPU性能分析工具。

环境搭建

    要想使用Streamline抓取性能必须配置kernel和配置gator。gator是运行在目标机器上的抓取代理,可以以ko的方式运行在内核空间或者以应用程序的方式运行在用户空间,区别是运行在内核空间可以抓取到更多类型的数据。

配置kernel

    在kernel4.4上开启如下配置:

    CONFIG_PROFILING

    CONFIG_PERF_EVENTS

    CONFIG_HIGH_RES_TIMERS

    CONFIG_MODULES

    MODULE_UNLOAD

    CONFIG_HW_PERF_EVENTS

    CONFIG_CPU_FREQ

    CONFIG_MALI_GATOR_SUPPORT

    CONFIG_ENABLE_DEFAULT_TRACERS

    CONFIG_GENERIC_TRACER or CONFIG_TRACING

    以上配置并不是左右的kernel config都包含,可以根据实际的情况选择类似的config开启

下载DS-5 Streamline安装

     https://developer.arm.com/products/software-development-tools/ds-5-development-studio/streamline

配置gator和Streamline

    本文为了方便起见,仅配置了用户空间的gator

界面如下:

     确保adb能够正常连接上,并且运行adb root进入root模式,否则可能出现配置gator错误。

     配置步骤:

     a. 点击左上角Target寻找目标机器

     b. 点击Target栏目下面类似眼睛图像的图标(Browse for a target)

     c. 在弹出的对话框中选择Setup Target,勾选Android,并选择对应的目标机器,点击install

     d. 在上一级的Connection Browser就可以看到包含gator Agent的机器了,Select它

     这样子就完成了gator agent的配置,并且连接上了DS-5 Streamline。

分析和抓取数据

     以在RK3399上CNN神经网络在OpenGL ES Shader上运行分析为例子。主要关心GPU 频率、算术管线负载、LS管线负载、纹理管线负载、Triple pipe Cycles、L1 Cache命中率、DDR访问的带宽吞吐等性能指标。

    选择Target中的芯片图标,从左边的列表里选择关注的抓取指标。

  

    然后点击,芯片图标旁红色的原点,开始抓取数据。抓取到数据图如下:

 选择时间窗口为1.0s进行分析。

 可以得出当前OpenGL ES代码运行CNN数据如下:

分析指令执行和负载

   帧率:19fps

   Fragment Shader计算比例:95.55%

   单个Shader算术管线运行指令数目:0.63G

   因此通过RK3399 Mali-T864 GPU结构换算后,单帧需要A指令数目:0.265G。可以与TensorFlow理论0.3GFlops计算对比。

   Triple pipe Cycles: 778M基本运行在满状态

   因此换算算术管线执行效率负载:86.2%  LS管线:6.0% T纹理管线:36.3%,性能瓶颈在于算术计算。应该优化Shader的执行代码。

分析带宽和cache命中率

    L2 Cache中每秒从memory中读取1.95G写出0.84G数据,单帧带宽消耗146M。对于RK3399双通道DDRC来说还是比较轻松的。带宽上不存在太大的影响。

    L1 Cache命中率可以由hits除以操作次数来换算,读取的操作命中率为95%,可以说是一个相当高的水平。

    A Pipeline Cycles等待总线空转的比例为:1.3% 也可以说是一个非常好的值。

    因此从带宽和cache命中率来看,性能的瓶颈不在于memory io上面。

总结

   DS-5 Streamline是一个利器,ARM要是不收费就好了。

猜你喜欢

转载自blog.csdn.net/smallhujiu/article/details/81110070