Как работает очередь команд opencl, и что я могу от нее спросить

Я работаю над алгоритмом, который несколько раз выполняет одну и ту же операцию. Поскольку операция состоит из некоторой линейной алгебры (BLAS), я подумал, что попробую использовать для этого графический процессор.

Я написал ядро ​​и начал помещать ядра в очередь команд. Поскольку я не хочу ждать после каждого вызова, я полагаю, я бы попробовал соединить мои вызовы в цепочку с событиями и просто начать помещать их в очередь.

call kernel1(return event1)
call kernel2(wait for event 1, return event 2)
...
call kernel1000000(vait for event 999999)

Теперь мой вопрос: все ли это помещается на графический чип драйвер хранит очередь? Если есть ограничение на количество событий, которые я могу использовать, или на длину очереди команд, я осмотрелся, но не смог найти этого.

Я использую atMonitor, чтобы проверить использование моего графического процессора, и довольно сложно повысить его более чем на 20%, может ли это быть просто потому, что я не могу отправлять вызовы достаточно быстро? Мои данные уже хранятся в графическом процессоре, и все, что я передаю, это фактические вызовы.

6
задан Martin Kristiansen 11 August 2011 в 13:55
поделиться