Я не могу понять, поддерживаются ли группы SIMD в iOS.
Спецификация языка затенения металла указывает на момент написания на стр. 59, раздел 4.4 .1:
iOS: нет поддержки SIMD-групп.
Однако в таблице 6.11. «Функции SIMD-группы в стандартной библиотеке Metal». некоторые функции SIMD-группы перечислены как поддерживаемые в iOS. Это один из тех, которые я хотел бы использовать:
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 во время выполнения обработать sh на iPhone 7 и 8 (но не 11):
Компилятор ошибка XPC_ERROR_CONNECTION_INTERRUPTED
Все устройства, протестированные с iOS 13.3. Металл языковая версия была 2.2. Xcode версии 11.3.