原作者:edplowman
原帖地址:“What does the benchmark say?”
我曾多次被人问起,对基准测试有什么看法。我有个习惯,在写博文时喜欢引用一些应景的名人名言。对于这篇博文,我找到了一个非常贴切的引言。
这句出自企业领导顾问 Tom Peters:
“...我讨厌基准测试!基准测试很无聊!”
没错,在这一点上我跟 Tom 站在一边。但是,我们可能需要多一些理由 … 先回到 Tom:
“为什么说无聊呢?”
“因为我们选择目前的行业领袖,然后启动一个五年计划,目标是追上五年前的行业领袖,那可是五年之前。”
虽然这句话原本说的是企业领导和战略,但同样也适用于任何类型的性能基准测试。
过去 3 年中,我直接陷在 GPU 综合基准测试这一泥潭之中,而我 20 年职业生涯大多也与这有间接关系。我看到的一切似乎都归到一个结论,GPU 基准测试是上述说法的一个印证。它们只是着眼于性能的宏观子部分,但却向您宣称这是 GPU 的整体性能表现。
下面这个说法似乎符合逻辑:为了给最终消费者的购买决策提供有价值的参考,GPU 基准测试最好能够反映现实生活的使用案例。了解 GPU 能否在用户最爱的游戏内轻松呈现出色的图形效果,以及这些游戏能够以适当的 FPS 呈现多久时间,这些对消费者和 OEM 厂商而言都是有用的信息。然而,这些真的是目前流行基准测试所提供的数据吗?
桌面 GPU 基准测试经历了和目前移动 GPU 所处的相似演进过程。在最早的时候,它包含对架构每秒三角形数和每秒像素数评分的比较,极具理论性,而且有些模糊。稍后发展为实际的应用程序,全面测量每秒三角形数和每秒像素数;接着,任意旋转物体(旋转的圆环/甜甜圈、犹他茶壶和米罗的维纳斯像)登上舞台;然后又进入移动 GPU 基准测试舞台目前所处的阶段:基准测试包含专为测试 GPU 最大计算能力而设计的综合游戏场景。下一个发展阶段,也是 PC 市场目前所处的阶段,是比较运行实际内容(真实游戏)所获得的指标,然后据此评估每款 GPU 的优劣强弱。嗯,一个全新概念!真正使用人们所运行并关心的内容?令人震惊!
在进一步探讨之前,我觉得有必要解释一下当前基准测试并不能最好地体现 GPU 性能的原因。目前流行的基准测试宣称对 GPU 进行压力测试,从而发现它们在特定时段内提供的最大帧数。在许多方面,这似乎合情合理。为了产生效用,所有基准测试真正需要的只有一个数据,那就是对所有竞争产品运行相同的测试,而且 GPU 的最大计算性能也能纳入此类别中。
然而,目前 GPU 基准测试所采取的方式存在诸多问题。告诉消费者设备能够在给定时间段内提供 300 帧以上特定内容或许在某些场景中有用,但如果消费者通常在其设备使用的内容并不会像 GPU 基准测试目前所用方式那样利用 GPU,这也就没有意义了。
对消费者而言,基准测试提供的数据是完全随意的,不能对应到他们对设备的任何体验上。如果基准测试能够以更加均衡的方式进行编写,那么就能轻松提供基准测试在更高帧率上使用的相同视觉体验,或消耗少量能源成本和计算资源且更适合于嵌入式设备的体验。
当然,当基准测试和热门游戏之间的图形质量相同时,消费者最好要了解 GPU 提供利用常规技术和均衡工作负载的内容上的表现,而不是特别编码的基准测试。
我们稍后将谈谈我眼中的“GPU 基准测试之道”,并探讨基准测试应当遵循什么样的准则;不过首先,我们来揭开流行内容的面纱并看看应当折射它们的基准测试。
作为一个内部项目,ARM 已经运行来自 App Store 上热门 OpenGL® ES 兼容游戏的 100 多万帧真实内容,这些游戏包括“愤怒的小鸟”、“狂野飙车 7”以及“神庙逃亡”等。我们分析了多个性能方面,其中包括 CPU 负载、每秒帧数、uArch 数据,以及众多 GPU 不可知论者 API 使用和渲染流合成数据。
如果看看我们在此类分析中收集的一些示例数据,结果会让您大跌眼镜。例如,看看“狂野飙车 7”和 T-Rex HD 的图像在同一 ARM® Mali™ 1080p 设备上的表现,您会发现它们展现的图形用户体验似乎水平相当。这会让用户认为,它们是从广泛相似水平的工作负载构建的。当我们查看几款流行基准测试和部分热门游戏的比较结果时,我们发现:
第一个也是最惊人的发现,虽然基准测试的片段数和热门游戏的相似,但顶点数却已爆棚!事实上,当我们更细致地查看基准测试 C 时,就会发现其对顶点的使用毫无效率。
这项基准测试中,1080p 时的全局平均图元片段比是 1:13.1,接近于(但超过一点点)我们在“以(适当)几何带来更好生活”博文中定义的低水位线 1:10,而“狂野飙车 7”中的比值为 1:53。然而,逐个绘制调用查看内容时,基准测试 C 内 50% 的绘制调用的图元片段比不到 1:1,另有 24% 也不到 1:10 - 而建议的准则为大于 1:10!基准测试 B 同样如此,其 66% 的绘制调用在生成微型多边形。
真实游戏更加均衡而一致,微型三角形的数量较少,而且大多数绘制调用每个三角形处理十个以上片段。
基准测试提供商承认,他们使用较高的顶点数来对 GPU 进行压力测试,理由是这能就 GPU 对未来内容的响应向用户提供“真实的”反馈。然而,正如我们所演示的,这种压力测试较不务实,因为它没有准确反映消费者日常所用应用程序中片段和几何之间的平衡。虽然真实游戏的片段评分和顶点评分各有不同,但比值基本上保持一致。
上述几何不均衡的主要影响之一就是,它远没有考虑移动设备性能方面的最强限制因素:带宽。使用这些高成本/低视觉产出的微型三角形时,极容易瞬时突破带宽限制(如“非凡宇宙力量!极小生存空间!”中所述)。
下面我们来看看这些基准测试,看看与实际应用程序比较时相对带宽会是什么样子:
正如您所看到的,现实应用再一次在渲染间所用带宽的均衡上更加稳定。“基准测试 A”开头不错,但不幸的是它很快就脱离了正轨。我们在这里看到的是 3 到 8 倍的带宽用于几何(如“以(适当)几何带来更好生活”中所述,它应当是样本的容器),这表示较少的带宽可被用于片段生成,而那是用户实际可看到的。
那么,结论是什么?没错,总体来说,GPU 基准测试仍然有很长的路要走,移动领域更是如此。我期待着这一时刻的到来,就如桌面游戏和平台游戏一样,移动游戏开发者也发布他们自己的基准测试,利用取自实际应用工作负载的内容,更加全面周到地展现 GPU 的各种性能。
在那之前,我想提几条建议,它们不仅能让 GPU 基准测试对消费者而言更富信息性,也能给半导体公司更多时间去考虑如何针对消费者内容提高 GPU 性能,而不是考虑如何利用没那么重要的基准测试评分来取悦消费者。
我总结了以下“GPU 基准测试之道”,希望能作为指南供大家参考: