【问题标题】:What's error with this Metal Compute Function in Apple Silicon?Apple Silicon 中的 Metal Compute Function 有什么问题?
【发布时间】:2022-01-20 11:32:45
【问题描述】:

我正在开发具有金属计算功能的人工智能应用程序。 如下图从Metal Debuger 截取的图片: 预览图片错误,而附件视图中的图片是正确的。最终结果与预想中的预览图相同。

x86_64 Macbook 中没有出现此错误,而在 M1 Macbook 中出现。 我认为Bring your Metal app to Apple silicon Macs 中可能提到了一些问题(如并发读取)。

如何调试它?

【问题讨论】:

  • 我很确定预览和纹理查看器只是使用不同的颜色范围映射。您可以按 cog 按钮并更改范围以查看是否有助于您查看结果。
  • 这似乎是苹果的问题。请参阅developer.apple.com/documentation/apple-silicon/…“同步并发计算调度”部分。

标签: macos metal apple-silicon


【解决方案1】:

错误已修复。

原因:使用未跟踪的 MTLHeaps,但不使用 MTLFence 保护 GPU 可以并行执行两个过滤器,从而读取从堆分配的未初始化的动态纹理数据。

解决方案1:设置MTLFence,见https://developer.apple.com/documentation/metal/synchronization/implementing_a_multistage_image_filter_using_heaps_and_events

解决方案2:将untracked MTLHeap转为tracked MTLHeap,就是这样,让heapDescriptor.hazarTrackingMode = MTLHazardTrackingModeTracked,见https://developer.apple.com/documentation/metal/mtlheapdescriptor/3131686-hazardtrackingmode

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-11-04
    • 2016-04-24
    • 2022-09-30
    • 1970-01-01
    • 2023-02-16
    • 2021-05-04
    • 2021-03-14
    • 1970-01-01
    相关资源
    最近更新 更多