主要观点:
- Anukari 是实时模拟大型弹簧 - 质量模型的 3D 物理合成器,需 GPU 进行模拟,在 macOS 上因与 GPU 交互方式,导致 macOS 决定提高 GPU 时钟频率的启发式方法不适用,影响其性能。
- Apple 的 Instruments 工具的 Metal 分析器可选择“性能状态”,发现 GPU 时钟速率是问题所在,Anukari 在最大性能状态下工作完美,在最小性能状态下极差。
- 多数 macOS 用户使用 Anukari 效果很好,是因为作者想出“浪费产生速度”的解决办法,即让 GPU 运行另一个高负载平均的工作负载来触发时钟启发式,但这不是好办法。
- 一些 macOS 用户使用 Pro 或 Max 硬件时出现问题,可能是因为 macOS 认为 Anukari 在运行两个独立的 GPU 工作负载而分别调整时钟速率,或者作者的自旋工作负载不足以让更强大的 GPU 时钟上升。
- 提出几种可能的解决方案,如将 Audio Workgroup 概念扩展到 GPU 处理、Metal API 提供实时敏感选项等。
- 游戏模式对 Anukari 帮助不大,因为 Anukari 大多作为插件在其他不支持游戏模式的进程中使用且通常不是全屏。
- 在 Windows 上无需自旋循环,Anukari 在 Windows 上性能良好。
- 解释了不采用管道 GPU 代码、让自旋内核和物理内核在同一 MTLCommandQueue 运行、运行多个物理内核副本等方法的原因。
- 强调已尽力从 Apple 硬件中榨取性能,GPU 代码已非常快,再优化空间不大。
- 说明使用 GPU 的原因是 CPU 无法完成模拟,GPU 有大量 ALU 等优势。
- 认为 Apple 应该关心 Anukari 的需求,Anukari 以独特方式使用 Apple 硬件,虽只是小 startup 但受到很多人喜爱。
- 解释不使用 GPU Audio 的 APIs 的原因,Anukari 与传统 DSP 应用不同,需在裸金属层编程利用硬件特征。
关键信息:
- Anukari 用于音频生成,在 DAW 中作为插件运行,GPU 用于模拟,时钟速率影响性能。
- macOS 电源管理和硬件特性导致 Anukari 时钟问题,“浪费产生速度”策略虽有效但有局限性。
- 提出多种解决 macOS 与 Anukari 时钟问题的方案。
- Windows 上 Anukari 性能良好,与 macOS 对比明显。
- 解释各种优化方法及限制。
- 强调 GPU 对 Anukari 的重要性及与 Apple 硬件的关系。
重要细节:
- 图表展示 CPU - GPU 时间序列及相关间隙。
- 介绍 Metal 分析器的功能及如何发现 GPU 时钟速率问题。
- 说明不同硬件配置下 Anukari 的表现差异及可能原因。
- 详细阐述各种解决方法的尝试及遇到的问题,如内核调度、内存布局等。
- 提及 Anukari 对 GPU 利用的各种优化手段及效果。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。