使用 Metal API 的应用程序和游戏以 Apple Silicon GPU 的特定功能为目标,M3 和 A17 Pro 的并行处理能力得到了显著提升,使其性能更上一层楼。苹果公司发布了关于这些新的 Apple Silicon GPU 功能的开发者讲座,详细介绍了实现改进效果的具体过程。该视频介绍了大量技术细节,但也提供了足够的基本解释。
使用 Metal API 构建应用程序的开发者无需对其应用程序做任何修改,就能看到 M3 和 A17 Pro 的性能提升。这些芯片组利用动态缓存、硬件加速光线追踪和硬件加速网格映射技术,使 GPU 的性能空前提高。
新一代着色器核心让动态缓存成为可能。利用 A17 Pro 和 M3 中的最新 GPU 内核,这些着色器可以比以前更高效地并行运行,从而大幅提高输出性能。
虚线表示浪费的寄存器内存
通常情况下,GPU 只能根据一个已执行动作中带宽最高的进程来分配寄存器内存,并持续该动作。因此,如果一个动作的某个部分比其他部分需要更多的寄存器内存,那么该动作的某个进程就会占用更多的寄存器内存。
动态高速缓存允许 GPU 为其正在执行的每个操作精确分配适量的寄存器内存。以前不可用的寄存器内存被释放出来,从而可以并行执行更多的着色器任务。
以前,片上内存会为寄存器、线程组和带有缓冲缓存的磁贴内存分配固定的内存。这意味着,如果某项操作使用的内存类型多于另一种,就会有很大一部分内存被闲置。
整个芯片内存都可用作高速缓存
有了灵活的片上内存,所有片上内存都是缓存,可用于任何内存类型。因此,严重依赖线程组内存的操作可以利用整个片上内存,甚至溢出到主内存中。
着色器内核可动态调整片上内存占用率,以最大限度地提高性能。这意味着开发人员可以花更少的时间来优化占用率。
Apple 建议开发人员在程序中执行 FP16 数学运算,但高性能 ALU 可并行执行整数、FP32 和 FP16 的不同组合。指令在并行执行的不同操作中执行,这意味着 ALU 利用率会随着占用率的提高而提高。
利用高性能 ALU 流水线增加并行操作
基本上,如果不同的操作包含相同的 FP32 或 FP16 指令,而这些指令将在不同的时间点执行,则可以重叠执行以提高并行性。
硬件加速的光线追踪可将重要的交点计算从 GPU 功能中移除,从而大大加快处理速度。由于部分计算由硬件完成,因此可以并行进行更多操作,从而通过硬件组件加速光线追踪。
硬件加速取代片上进程
硬件加速网格着色采用了类似的方法。它将几何计算流水线的中间部分交给一个专用单元,从而实现更多并行操作。
欲了解更多细节,可观看官方视频《Explore GPU advancements in M3 and A17 Pro》。