众所周知,Android终端基本都配有GPU;无论手机还是VR,AR设备,GPU在其中扮演了越来越重要的地位。

当我们拿到一款GPU时,我们最关心的就是性能了。

不服跑个分。跑分是目前最常见的测试性能的方式。

1)我们最熟悉的GPU benchmark测试就是曼哈顿3.0\3.1测试了;

2)安兔兔的3D测试也是一个不错的例子,但是注意应用版本,不同版本总分是不同的。

可以说这个方法基本还是可靠的,但是缺点也是存在的:

1)GPU Benchmark的测试会尽量排除CPU带来的影响,但实际游戏中很可能并非如此,因此跑分与实际的运行环境表现迥异。另外与台式机不同,台式机中显卡游戏测试比较成熟,3A大作中耗CPU的,耗GPU的,耗RAM的都能找到一堆。但Android生态上就很难找到类似场景;(这个问题不在这篇文章讨论,会在后续文章中介绍)

2)在了解了具体参数之后,我们希望在本地能验证一下GPU具体的性能。可惜曼哈顿虽好,但是要翻墙,对于我们本地测试就非常麻烦。安兔兔负载不均衡,可能并不适合单一场景下的帧率和功耗测试;最重要的,如果GPU能力不强,比如高通8909平台,则安兔兔则可能仅有2,3帧的样子,根本无法有效测试正常场景下的表现。

基于上面的考虑,我们接下来介绍4个简单的Android GPU本地性能测试工具。

1. GPU渲染评估初期本地测试:Flatland**

在最初选定设备时(例如使用不成熟的驱动程序时),使用预定义(固定)的时钟和工作负载来测量每秒渲染的帧数 (fps)。这可以让我们清楚地了解硬件功能。

为了在规格设计阶段便于推究设备性能,可使用Flatland 工具。Flatland 依靠固定时钟,并显示可通过基于合成的工作负载实现的吞吐量。Flatland 使用 gralloc 缓冲区来模拟多窗口情景,用 GL 填充窗口,然后测量合成情况。

8909 vs 18xx测试结果分析:(提高GPU频率结果相当,因为GPU大部分情况是在高频跑的),可见8909仅适用于720P大小 ,而18xx可最大适用于1080P大小(尽管在SurfaceView->Home仍可能会有一点超时)。测试阶段为渲染,和合成无关,对于1881甚至必须关屏测试。

https://source.android.com/devices/graphics/implement

2. GPU合成评估本地测试:SurfaceComposition

绘制完成之后,我们也要考虑合成的情况,尽管我们一般采用HWC合成,但是GPU合成在某些场景下仍然是不可避免的。(但这一步的重要性低于flatten)

路径:android/frameworks/base/tests/SurfaceComposition
功能:测试保证在58fps以内的最大合成Surface的数量(格式可选)。
命令:手动打开应用测试或者使用cts测试方式
am instrument -w -r android.surfacecomposition/android.test.InstrumentationTestRunner
结果:
INSTRUMENTATION_STATUS: surface-allocation-performance-median-sps=112.55279399895551
INSTRUMENTATION_STATUS: surface-compoistion-bandwidth-gbps=0.9486905799147451
INSTRUMENTATION_STATUS: surface-compoistion-peformance-sps=4.7642438127286955
这次是测试通过的结果,代表可支持4.76层RGBA的合成(58fps以上),带宽0.94Gb/s

评估阶段结束,我们进入开发阶段。

3. OpenGLES 本地测试:fillrate、angeles、gl2_basic gl2_yuv

  1. fillrate
    比较简单,就是循环绘制draw的命令,迭代多次分别绘制1次,2次…32次的吞吐量,可测试GPU是否带起成功。

  2. gl2_basic
    非常简单,就是循环绘制一个三角形,60fps, Malit82x大约156M下46%的GPU利用率。因为负载比较均衡,因此可用于测试GPU功耗问题。

  3. angeles
    以50fps的帧率,malit82x下624M下81-90%的利用率。
    负载不均衡,可在一定程度上进行压力测试,但没有deqp中压力测试效果好,因此其可以实现624M下GPU利用率99%-100%

  4. gl2_yuv
    另外一个常用case,可用于测试YUV数据显示于屏幕之上,NV12各种格式测试,这个场景应用非常多,我将在另外一篇文章中单独介绍。

4. GPU API测试工具(同时支持压力测试):DEQP

如果我们是OEM厂商,则我们同时还要关注GPU的兼容性与稳定性。这就需要Deqp模块了。(CTS也会测试相应API)

Deqp支持LINUX,WINDOW,ANDROID等平台,该文档仅介绍Android平台,具体可见下面链接:https://source.android.com/devices/graphics/testing
编译
目录:external/deqp
编译:mma –j12

环境准备:
安装APK:
adb –d install –r com.drawelements.deqp.apk

运行测试

  1. 准备:
    adb –d forward tcp:50016 tcp:50016
    adb –d shell am start –n com.drawelements.deqp/.execserver.ServiceStarter

  2. 执行测试:
    1)测试全部GLES2的API
    am start -n com.drawelements.deqp/android.app.NativeActivity -e cmdLine “deqp --deqp-case=dEQP-GLES2.* --deqp-log-filename=/sdcard/dEQP-Log.qpa --deqp-crashhandler=enable --deqp-watchdog=enable --deqp-gl-config-name=rgba8888d24s8”
    2)压力测试:–deqp-test-iteration-count可以修改,GPU利用率可达99-100%
    am start -n com.drawelements.deqp/android.app.NativeActivity -e cmdLine “deqp --deqp-case=dEQP-GLES2.stress.long.* --deqp-log-filename=/sdcard/dEQP-stress.qpa --deqp-watchdog=disable --deqp-gl-config-name=rgba8888d24s8 --deqp-test-iteration-count=500”
    3)旋转屏幕测试
    增加 --deqp-screen-rotation=90

结果分析
目前结果是文本文档,转换成csv或html格式需要编译linux或window版本。但仍然还可以分析一下结果。
• 通过可包括 Pass、NotSupported、QualityWarning 和 CompatibilityWarning。
• 失败可包括 Fail、ResourceError、Crash、Timeout 和 InternalError。

综上,如果你是OEM厂商,这些工具都会对你有帮助。如果你是终端厂商且GPU能力较强,则只有第3个工具对你有用,毕竟其他你也不用关心,如果GPU能力差些,则1, 2,3都会对你有所帮助。

如何评估移动GPU性能:以及4个需要了解的Android GPU 本地性能测试工具相关推荐

  1. linux硬件性能,Linux运维知识:Linux下的硬件性能测试工具汇总

    本文主要向大家介绍了Linux运维知识的Linux下的硬件性能测试工具汇总,通过具体的内容向大家展现,希望对的大家学习Linux运维知识有所帮助. 在购买计算机之后,我们都希望能充分了解它们的硬件性能 ...

  2. iPhone 6s GPU性能为何能够有大幅提升

    摘要: 今年在iPhone 6s的A9芯片中苹果公司仍然非常重视提高GPU性能,而且和上一代相比A9的GPU性能确实提升不少.从第一代iPhone 还有它们使用的三星开发的SoC来看,可以说苹果公司简 ...

  3. 手机GPU性能评估指标

    评价指标:单位时间计算浮点数 浮点类型 FP16 FP32 FP64 浮点数计算速度GFps指标 一般默认是32位浮点数 单位 gfps 每秒计算10亿次浮点数 tfps 每秒计算1万亿次浮点数 一些 ...

  4. Mali GPU性能调优方法

    http://blog.csdn.net/MyArrow/article/details/17752101 1. 使用DS-5 Streamline定位瓶颈 DS-5 Streamline要求GPU驱 ...

  5. 【体系结构】使用Roofline model 分析GPU性能

    Roofline model 评估深度学习模型在GPU上运行的性能 本文使用Roofline model方式评估GeForce RTX 2060和TITAN V两款GPU上分别运行AlexNet以及V ...

  6. GPU性能优化之CUDA调优指南

    GPU性能优化之CUDA调优指南 GPU性能优化之CUDA调优指南 1 整体性能优化策略 2 最大化利用率 2.1 应用程序层次 2.2 设备层次 2.3 多处理器层次 2.3.1 占用率计算 3 最 ...

  7. R语言使用randomForest包构建随机森林模型(Random forests)、使用importance函数查看特征重要度、使用table函数计算混淆矩阵评估分类模型性能、包外错误估计OOB

    R语言使用randomForest包中的randomForest函数构建随机森林模型(Random forests).使用importance函数查看特征重要度.使用table函数计算混淆矩阵评估分类 ...

  8. R语言使用rpart包构建决策树模型、使用prune函数进行树的剪枝、交叉验证预防过拟合、plotcp可视化复杂度、rpart.plot包可视化决策树、使用table函数计算混淆矩阵评估分类模型性能

    R语言使用rpart包构建决策树模型.使用prune函数进行树的剪枝.使用10折交叉验证选择预测误差最低的树来预防过拟合.plotcp可视化决策树复杂度.rpart.plot包可视化最终决策树.使用t ...

  9. R语言使用R基础安装中的glm函数构建乳腺癌二分类预测逻辑回归模型、分类预测器(分类变量)被自动替换为一组虚拟编码变量、summary函数查看检查模型、使用table函数计算混淆矩阵评估分类模型性能

    R语言使用R基础安装中的glm函数构建乳腺癌二分类预测逻辑回归模型(Logistic regression).分类预测器(分类变量)被自动替换为一组虚拟编码变量.summary函数查看检查模型.使用t ...

最新文章

  1. 一个三本程序猿的大厂逆袭之路
  2. 为物联网产业化发展提供坚实保障
  3. Python入门100题 | 第072题
  4. 『数据中心』降低PUE值4种方法
  5. Git无法检测到文件名大小写的更改
  6. git只提交一张图片_Git 图形化操作之合并提交记录
  7. 罗斯文2007(Northwind 2007)数据库、Access 2007 样列数据库分析[转]
  8. android中如何通过代码检测是否有root权限?
  9. openstack_Facebook的WebScaleSQL,思科投资OpenStack等
  10. 免费下载pro puppet 2高清pdf,需要的抓紧
  11. ASP.NET MVC4 IN ACTION学习笔记-第六波[Ajax in ASP.NET MVC][3/3]
  12. arduino交通灯编程代码_Arduino初初教程3 (交通灯)
  13. flame linux mac,Autodesk版蓝宝石插件 GenArts Sapphire V10.0 (Mac/Linux)
  14. Fragment、FragmentActivity、Fragment生命周期及Fragment组件穿透
  15. 腾讯云数据库TDSQL——数据库迁移备份与恢复
  16. 浙江海洋大学计算机考研资料汇总
  17. 百度hacked事件看谷歌real-time search
  18. 二维码(生成以及扫一扫)
  19. 安卓手机去水印哪个好用
  20. 解决Win10桌面右键卡顿一直转圈圈的问题

热门文章

  1. java web 项目—活动管理系统说明(附源码)
  2. Uncaught TypeError:Illegal invocation
  3. Xcode快捷键汇总
  4. 使用阿里云的ip地址查询服务-使用免费版
  5. Python爬虫||Xpath-以豆瓣电视剧为例
  6. C语言 float转存char数组 互转
  7. 【最强最全车牌识别算法】支持13种中文车牌识别的云端API部署(可直接获取源码使用)
  8. JavaScript之迭代器
  9. iOS 高德地图 地理围栏
  10. Windows - RAID 1 阵列搭建