Я не являюсь авторитетным источником по вычислениям в Metal, и многие детали, подобные этой, не документированы, поэтому рассмотрим следующее с небольшим количеством соли:
Организация групп потоковв 1, 2 или 3 измерения - это удобство для вас как разработчика.Если ваша проблема трехмерная, используйте группы нитей с 3 измерениями.Если ваша проблема одномерна, используйте группы нитей с 1 измерением.Металлу на самом деле все равно.
Не думаю, что вы можете предположить что-либо о порядке, в котором запланированы потоки GPU из ваших групп потоков.
Например, если вы запланировали 10 групп потоков, каждая из которых вычисляет промежуточный результат (например, сумму), то вам, вероятно, не следует зависеть от 10-й группы потоков, чтобы собрать эти результаты и объединить их в однуокончательный результат (итоговая сумма).Вместо этого вам нужно будет запустить новое вычислительное ядро, чтобы сделать это.
(Я был бы рад, если бы я ошибся в этом, но я нигде не читал, что Metal гарантирует подобные вещи.)