【问题标题】:Are SIMD groups supported in Metal on iOS?iOS 上的 Metal 是否支持 SIMD 组?
【发布时间】:2020-04-28 06:41:37
【问题描述】:

我不知道 iOS 是否支持 SIMD 组。

The Metal Shading Language Specification 在第 59 页第 4.4.1 节撰写本文时声明:

iOS:不支持 SIMD 组。

但是,在表 6.11.“Metal 标准库中的 SIMD 组函数”中,列出了一些在 iOS 上支持的 SIMD 组函数。这是我想使用的其中之一:

T simd_shuffle_down(T data, ushort delta)

macOS:从 Metal 2.0 开始。

iOS:从 Metal 2.2 开始。

类似地,表 5.7.,“内核函数输入参数的属性”,指出一些属性是可用的:

threads_per_simdgroup

macOS:从 Metal 2.0 开始。

iOS:从 Metal 2.2 开始。

因此,从文档中不清楚是否应该支持任何 SIMD 组功能。在计算内核中使用带有 threads_per_simdgroup 属性的函数参数当前会导致运行时 Metal 编译器在 iPhone 7 和 8(但不是 11)上崩溃:

编译器因 XPC_ERROR_CONNECTION_INTERRUPTED 而失败

使用 iOS 13.3 测试的所有设备。金属语言版本是 2.2。 Xcode 11.3 版。

【问题讨论】:

    标签: ios gpgpu metal


    【解决方案1】:

    我认为 iOS 不支持 SIMD 组的说法要么不准确,要么不够具体。

    如果您咨询金属 2.2 的 Metal Feature Set Tables,您会注意到“SIMD 范围的置换操作”(simd_broadcastMTLGPUFamilyApple6 支持simd_shufflesimd_shuffle_up 等),其中包括具有 A13 处理器的设备。因此,为什么这适用于 iPhone 11。

    在不受支持的设备上使用此属性会导致编译器崩溃这一事实是一个错误,我建议您file feedback

    【讨论】:

    • warrenm,“SIMD 范围的置换操作”在哪里列出?
    • 您在语言规范的第 6.8.2 节中引用的同一个表。我没有此信息的其他资源。
    • 好的。我认为您可能是对的,但除非 Apple 在某处说明“SIMD 范围的置换操作”是什么,否则我们不确定。 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-08
    • 2011-04-04
    • 2017-04-30
    • 1970-01-01
    • 2013-04-25
    相关资源
    最近更新 更多