События и очереди команд OpenCL

Я работаю над переводом приложения CUDA ( это, если вы должны знать ) в OpenCL. Исходное приложение использует CUDA API в стиле C с одним потоком, чтобы избежать автоматического ожидания при чтении результатов.

Теперь я заметил, что очереди команд OpenCL очень похожи на потоки CUDA. Но в команде чтения устройства , а также в командах записи и выполнения ядра я также заметил параметры для событий. Поэтому мне интересно, что нужно для выполнения записи устройства, количества ядер (например, один вызов одного ядра, затем 100 вызовов другого ядра) и чтения устройства, все последовательно?

  1. Если я просто поставлю в очередь? их последовательно в одну и ту же очередь, будут ли они выполняться последовательно, как в CUDA?
  2. Если это не сработает, могу / должен ли я объединить события в цепочку, сделав список ожидания каждого вызова событием предыдущего вызова?
  3. Или следует ли мне добавлять все предыдущие события в список ожидания каждого вызова, например, если выполняется поиск зависимостей N ^ 2 или что-то в этом роде?
  4. Или мне просто нужно использовать event.wait () для каждого вызова индивидуально, как сказано в Учебник AMD ?

Спасибо!

5
задан Ken_g6 23 August 2010 в 20:34
поделиться