Является ли порядок выполнения рабочей группы в вычислительном шейдере детерминированным и упорядоченным? - PullRequest
1 голос
/ 29 мая 2019

Я пишу вычислительный шейдер в Unity. Я понимаю, что набор потоков внутри рабочей группы может выполняться в любом порядке / полностью параллельно на оборудовании. Что я не уверен в том, что набор рабочих групп выполняется в определенном порядке?

Если мое ядро ​​помечено numthreads(256, 1, 1), означает ли это, что ноль SV_GroupID сначала выполняется с его потоками SV_GroupIndex от 0 до 255 (в любом порядке), затем SV_GroupID номер один и т. Д.

Если не по умолчанию, есть ли способ обеспечить его соблюдение ...? Могу ли я установить количество потоков, равное количеству, доступному на аппаратном обеспечении, чтобы гарантировать, что оно может выполнять только одну группу за раз или что-то? (звучит глупо!)

Контекст: у меня есть редкий массив упорядоченных данных, и я пытаюсь сжать их в плотный массив, сохраняя при этом порядок. Использовать преимущества существующего порядка с использованием параллельного алгоритма - это сложно!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...