Вы можете создавать и скомпилировать несколько программ (и создавать объекты ядра из них), или вы можете поместить все ядра в одну и ту же программу (clCreateProgramWithSource
берет несколько строк в конце концов) и создавать все ваши ядра из этого. Либо должен работать нормально, используя тот же CommandQueue. Использование более одного CommandQueue для выполнения ядер, которые должны выполняться последовательно на одном и том же устройстве, в любом случае не является хорошей идеей, потому что в этом случае вам придется вручную дождаться завершения события вместо асинхронного включения всех ядер, а затем ожидания результата (в по крайней мере, некоторые операции должны выполняться параллельно на устройстве и хосте, поэтому ожидание в последний момент обычно выполняется быстрее и проще).