【问题标题】:Metal performance debugging金属性能调试
【发布时间】:2018-10-29 01:53:26
【问题描述】:

我在 iOS 上有一个 Metal 应用程序,我在其中获取视频帧并将每一帧传递给多个着色器,其中一些是在多个通道中应用的计算着色器,其中 4 个是独立的 MTKViews,它们显示计算的纹理(例如,直方图)带视频预览。有时(但并非总是)在 iPhone 6s 等旧硬件上,我注意到应用程序变得过于缓慢,帧速率下降到每秒 1 或 2 帧。请让我知道如何调试哪些 Metal 着色器阻塞了 GPU/GPU,以及如何优化 Metal 相关代码的性能。

【问题讨论】:

  • 帧率降到1帧还是2帧的时候手机是不是感觉特别热?
  • 不,不是那样的。有时帧率会在 20 秒左右后恢复正常。
  • 您能否指出 Metal 的调试和分析工具列表以及任何展示如何使用它们的文章/视频?
  • 查看去年 WWDC 中与 Metal 相关的视频。它们在 Apple 网站上。
  • 我检查了它们,但看起来您需要查看其他视频才能完全理解它们。我找不到其他视频。

标签: ios xcode multithreading metal metalkit


【解决方案1】:
  1. 在 Xcode 中运行您的应用程序。
  2. 选择调试 -> 捕获 GPU 帧
  3. 从左侧工具栏中选择问题导航器
  4. 选择运行时
  5. 修复列出的问题,至少是“高”优先级。
  6. 您还可以通过查看左侧调试导航器中的drawPrimitives 等时间来了解性能消耗在哪里。

要查看着色器的性能详细信息,请从左侧的事件列表中选择绘制或调度调用。有一个“性能”部分。

【讨论】:

  • @DeepakSharma 我更新了我的答案以显示更多性能信息。
  • 我究竟在哪里找到“性能”部分?我在左窗格的任何地方都看不到计算命令编码器。仅渲染命令!
  • 我可以在 iOS 11 设备上看到它,但在 iOS 10 上看不到 :(
  • 我认为这与GPU帧捕获时计算着色器的执行有关!
猜你喜欢
  • 2017-05-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-26
  • 1970-01-01
  • 2015-04-15
  • 2011-05-23
  • 1970-01-01
相关资源
最近更新 更多