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