Khorina · 2月4日

Arm Mobile Studio 2023.5 推出 Frame Advisor

在 Arm® Mobile Studio 2023.5 的版本中伴随了 Frame Advisor 首个版本的推出,Frame Advisor 是一款基于帧的全新性能分析工具,有助于优化 Arm Immortalis™ 和 Mali™ GPU 的渲染工作负载。Frame Advisor 旨在提供性能反馈和最佳实践建议,其结果会自动与应用所提交的特定 API 可见工作负载相关联。如此一来,将减少解读硬件原始数据的工作量,从而简化应用优化的过程。

Frame Advisor 1.0 为早期访问版本,支持的功能集有限,主要侧重渲染通道的高效使用和几何图形资产的高效编码。这是应用 API 的两大关键使用场景,对 Arm GPU 的渲染效率非常重要。我们计划添加更多分析功能,从而涵盖绘制状态和着色器反馈等 API 特性。

image.png

推出 Frame Advisor 的缘由

Arm GPU 使用基于图块的渲染来处理渲染通道。也就是说每次渲染都要先处理几何图形,然后将图元分配到其所覆盖的屏幕空间小图块上。几何图形处理结束后,这些小图块会经过片段着色,随后才会被写入内存。

此方法的优势在于这些图块小到足以存储在 GPU 内部的本地 RAM 中,于是便能将片段着色的工作集保留在芯片上,而无需使用高能耗的外部 DRAM 带宽。不过,这种处理方式增加了特征分析的难度。

在使用基于图块的渲染时,每次绘制调用的处理工作量都会被分割成小块,并与其他绘制调用交错执行。此外,渲染通道通常采用管线化方式,并与其他并行运行的渲染通道重叠。因此,如果只依赖硬件数据源,例如使用 Arm Streamline 采集基于时间的描述,就很难获得明确的建议。硬件计数器可以让我们发现问题,但我们不一定能清楚该问题来自应用程序的哪个部分。Frame Advisor 就是要填补这个空白,提供与 API 相关的建议。

Frame Advisor 能提供哪些见解?

Frame Advisor 是一款深度分析器,能让我们清楚特定帧运行缓慢的原因。它可在使用 Streamline 分析器或引擎内分析器等其他工具识别出慢速帧区域后派上用场。

Frame Advisor 可采集问题区域的那几帧游戏画面,包括这些帧的所有 API 调用记录和跨 API 边界的数据,以及这些帧的 GPU 输出记录。这有助于在工具分析过程中切实掌握工作负载情况以及 GPU 对这些负载的处理方式。信息采集过程会对应用性能产生影响,但采集和分析所需数据的过程仅需几秒钟。

渲染图形

渲染通道是图形帧的主干,高效利用渲染通道能够确保我们受益于 GPU 内部的高能效片上图块内存。如果渲染通道未能充分利用基于图块的渲染,就难以节省内存带宽,从而导致性能下降。 

image.png

那么我们该如何判断渲染通道有没有得到高效处理呢?Frame Advisor 在采集帧时,会将该帧的渲染过程可视化,这可以帮助我们发现问题。

该工具可在渲染图中展示为创建最终渲染帧而执行的渲染操作概况,包括帧中渲染通道之间的数据流,以及纹理等资源的产生和消耗过程。这可以帮助我们了解数据在渲染通道之间的流动效率,从而发现实现优化的机会。

渲染图中,每个渲染通道都被表示为一个方框,输入和输出套接字包含在各个附件中。渲染开始时,输入附件会从 DRAM 读入图块内存。渲染结束后,输出附件会被写回 DRAM。访问这些内存的成本较高,应尽量避免。那我们如何才能做到这一点呢?

  1. 在进行任何绘制调用之前,渲染通道中的第一个命令应该清除任何输入附件或使之失效,除非我们有意将该附件作为该渲染通道的起点。这可以避免每次启动时从 DRAM 进行不必要的回读。同样,每个输出附件都必须作废,以避免存储到内存中。
  2. 此外,在渲染过程中,前一次渲染的输出附件可能会被读取为后一次渲染的输入附件,而中间并没有使用任何纹理。这些渲染通道可以合并为一个通道,以避免不必要地读写 DRAM。
  3. 当我们发现有些渲染通道没有在后续处理中被使用,就说明它们对最终渲染输出没有任何贡献,因而可将它们移除,以节省算力和带宽。

通常情况下,对渲染通道的构建方式进行上述调整可以显著提高性能,而无需对屏幕上的对象进行任何更改。除此之外,Frame Advisor 能让我们更细致地查看屏幕上正在渲染的内容,并了解渲染的效率,从而有助于节省算力。

发现多余的绘制调用

处理绘制调用需要占用大量 CPU 资源,因此必须确保高效使用,并减少多余调用的次数。Frame Advisor 可以让我们查看渲染通道中的所有绘制调用,并逐一检查是否为帧缓冲区带来了明显变化。

如此一来,我们就很容易发现低效的渲染,比如那些在视锥体之外或被其他物体遮挡的绘制操作,这些情况可以通过应用软件进行优化。我们也可以使用一系列软件剔除技术来防止类似事情发生。此外,还能轻松发现许多单独绘制的相同对象,这样就可以将它们合并为一次绘制。这些都是减少 CPU 和 GPU 计算量的简便方法。

通过逐步查看绘制调用并观察帧缓冲区输出的变化,我们可以轻松了解不透明几何体是否被高效渲染。不透明物体应以从前到后的顺序进行渲染,也就是从最靠近镜头的物体开始,向远处渲染。如果对象是从前到后渲染的,GPU 就可以使用 Early ZS 测试来识别,并丢弃隐藏在其他对象后面的三角形。这样就可以在片段着色前省去不必要的工作。

检查几何体的绘制是否高效

通常情况下,当角色在屏幕的远处时,复杂的角色网格会消耗过多带宽和算力。此时网格中的三角形会变得非常小,以致于会开始造成严重的性能问题,并且通常收效甚微,几乎不会带来明显的视觉改善效果。Frame Advisor 会显示每次绘制调用所绘制的图元数。此外,你还可以根据图元数量对渲染通道中的所有对象进行排序。因此,可以毫不费力地找到场景中最复杂的物体,并研究是否可以将其简化。

image.png

在模型无法简化的情况下,必须确保模型的绘制效率。Frame Advisor 中的指标详情视图列出了当前所选绘图调用的一系列实际指标,例如:

  • “顶点效率评估”表明未使用的顶点是否被着色,这可能是由于着色过度,或对象网格的位置不佳导致的,进而导致顶点被多次处理。
  • “索引率”表示网格中每个三角形使用了多少个唯一顶点。理想情况下,这个数值应该接近一,表明每个顶点都能被三个三角形高效复用。最糟糕的情况是三,这表明每个三角形都使用了三个唯一的顶点。
  • “重复顶点”的数量如果与模型中的另一个顶点完全相同,就表示算力被浪费了。

image.png
image.png
image.png
image.png

学习并免费试用 Frame Advisor 功能

Frame Advisor 为 Arm Mobile Studio 安卓分析工具套件的一部分,供开发者免费使用。你可通过以下视频教程,了解 Frame Advisor 如何运作、学习以下功能,并获取免费下载链接:

  • 从一部联网的安卓设备上运行的移动游戏中采集一帧画面
  • 使用渲染图识别多余的渲染通道
  • 通过绘制调用来评估场景的构建方法
  • 查找场景中的复杂网格,并获得与其复杂原因有关的指标详情
  • 查找场景中的低效率网格并查看相关指标,从而采取优化操作

此外,你也可参阅Frame Advisor 用户指南,了解全部功能。

image.png

帮助我们改进 Frame Advisor

Frame Advisor 的首个版本只是一个开始,我们计划在接下来的几个版本中添加更多的功能和特性。与此同时,我们也乐见获取你们宝贵的建议与想法,帮助我们不断改进。比如,你是如何采集和分析画面的?你希望未来增加哪些功能?欢迎将你的反馈发送电子邮件至 mobilestudio@arm.com

温馨提示:由于这是这一新工具的首个版本,其中可能存在一些错误和已知问题。有关详情,请参阅 Arm Mobile Studio 发行说明。
作者:Julie Gaskin
文章来源:Arm社区

推荐阅读

使用 Arm SPE 进行芯片数据采集和性能分析
Helium 技术讲堂 | 克服 Amdahl 定律的影响
Helium 技术讲堂 | 循环缓冲区的使用
Helium 技术讲堂 | 数独、寄存器和相信的力量

欢迎大家点赞留言,更多Arm技术文章动态请关注极术社区Arm技术博客专栏欢迎添加极术小姐姐微信(id:aijishu20)加入技术交流群,请备注研究方向。
推荐阅读
关注数
23565
内容数
1017
Arm相关的技术博客,提供最新Arm技术干货,欢迎关注
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息