Я создал очередную очередь OpenCL.Мой конвейер помещает в очередь несколько ядер.
queue = clCreateCommandQueue(cl.context, cl.device, 0, &cl.error);
for(i=0 ;i < num_kernels; i++){
clEnqueueNDRangeKernel(queue, kernels[i], dims, NULL, global_work_group_size, local_work_group_size, 0, NULL, &event);
}
Вывод ядер [0] является вводом для ядер [1].Вывод ядер [1] является вводом для ядер [2] и т. Д.
Поскольку моя очередь команд является очередью в порядке, я предполагаю, что ядра [1] будут запускаться только после того, как ядра [0] будутзавершено.
- Допустимо ли мое предположение?
- Должен ли я использовать
clWaitForEvents
, чтобы убедиться, что предыдущее ядро завершено, прежде чем ставить в очередь следующее ядро? - Можно ли как-нибудь сложить несколько ядер в очередь и просто передать вводkernels [0] и напрямую получать вывод из последнего ядра?(без необходимости ставить в очередь каждое ядро одно за другим)