启用 GPU 帧捕获

Posted

技术标签:

【中文标题】启用 GPU 帧捕获【英文标题】:Enabling GPU Frame Capture 【发布时间】:2019-05-20 13:50:52 【问题描述】:

我正在尝试构建一个 Metal 计算应用程序。我写了我的第一个内核,现在我想看看它是计算着色器的输出。但是,XCode 中禁用了“GPU 帧捕获”选项。 我正在使用 XCode 9.2。我已经在我正在运行的方案中启用了 GPU 帧捕获。 关于为什么会发生这种情况的任何提示?

【问题讨论】:

由于您实际上并没有呈现帧,Xcode 不知道什么构成了“帧”。您将必须添加程序化的开始和结束范围标记。您可以为此使用MTLCaptureManagerMTLCaptureScope FWIW:我在这方面从未真正取得过成功。我能让 GPU Frame Capture 用于计算内核的唯一方法是同时使用 Metal 进行一些图形处理(例如显示 AVCapture 的预览层)。 @KenThomases 我厌倦了这样做。没用。不知何故,isCapturing 每次都是假的。我使用的是startCaptureWithDevicestopCapture。不过,我并没有制作MTLCaptureScope。我刚收到sharedCaptureManager 并调用了 startCapture。 @MatthijsHollemans 显然我也在使用 Metal APIs 进行一些渲染的应用程序中编写代码。但是那里没有使用计算的输出,这可能就是我无法捕获帧的原因。 您可以尝试在创建MTLCommandBuffer 之前设置断点,然后编辑断点并选择添加操作-> 捕获GPU 帧。请注意,它往往只在第二次计算调度后才起作用...... 【参考方案1】:

显然您无法在 XCode 9.2 上调试计算着色器。我迁移到 Xcode 10.2,并且能够使用 GPU 帧捕获来调试我的计算内核。

P.S 我不确定这是否是记录在案的限制,但这就是我所经历的。

【讨论】:

以上是关于启用 GPU 帧捕获的主要内容,如果未能解决你的问题,请参考以下文章

MacOS Metal:无法从命令行应用程序捕获 GPU 帧

为啥 xcode 编辑方案中的 GPU 帧捕获中没有 GLES 选项

如何启用英特尔 iRIS Xe GPU 进行深度学习?

如何在 GPU 上启用 php 运行 python 脚本? [关闭]

为 .NET 应用启用高性能 GPU

如何为 theano 启用我的 MacBook Pro GPU 优化?