ios - iOS 上的 Metal 是否支持 SIMD 组?
问题描述
我不知道 iOS 是否支持 SIMD 组。
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 不支持 SIMD 组的说法要么不准确,要么不够具体。
如果您查阅 Metal 2.2 的Metal Feature Set Tables,您会注意到“SIMD 范围的置换操作”(、、、simd_broadcast
等
simd_shuffle
)simd_shuffle_up
受支持MTLGPUFamilyApple6
,其中包括具有 A13 处理器的设备。因此,为什么这适用于 iPhone 11。
在不受支持的设备上使用此属性会导致编译器崩溃这一事实是一个错误,我建议您提交反馈。
推荐阅读
- android - 如何同时运行动画?
- python - 寻找双胞胎
- python - 我的代码中的递归错误 - 结果返回“无”
- android - 如果没有 @Inject 构造函数或 dagger kotlin 中的 @Provides-annotated 方法,则无法提供
- react-native - 调用 Auth.updateUserAttributes 后如何从 AWS Cognito 检索更新的用户属性
- xml - Qt Svg Dom 操作的 Inkscape 替代品
- java - 需要一种将字符串与单个数组元素相关联的方法
- python - 无法使用 Django REST 框架从多个选择元素中发布 JSON 数据
- java - JUNIT 测试用例未通过
- javascript - 如何使用 0 默认值声明 Hash.new(0) 以在 JavaScript 中计数对象?