В OpenGL 2.1 рабочая группа подразделяется на подгруппы.work_group_barrier()
синхронизирует все рабочие элементы в рабочей группе, sub_group_barrier()
только рабочие элементы в одной подгруппе.
Возможно ли синхронизировать рабочие элементы в диапазоне подгрупп?
Например, рабочая группа состоит из 5 подгрупп, каждая из которых содержит 64 рабочих элемента.Подгруппы 0 и 1 (= рабочие элементы 0 - 128) должны синхронизироваться, чтобы после барьера рабочие элементы из подгруппы 0 могли получить доступ к данным, записанным подгруппой 1).В то же время подгруппы 2, 3 и 4 могут продолжаться без участия в этой синхронизации, возможно, выполняя другую часть кода.
В CUDA это возможно для перекосов (эквивалент подгруппы, 32 потока) с использованием встроенногоСборка PTX: CUDA: как использовать барьер.sync
Есть ли способ сделать это с OpenCL на платформе AMD, возможно, с использованием встроенного кода сборки?Если нет, есть ли другой API / язык GPGPU для платформы AMD, который позволил бы это?