Я работаю над алгоритмом, который много раз выполняет одну и ту же операцию. Поскольку операция состоит из некоторой линейной алгебры (BLAS), я бы попробовал использовать для этого графический процессор.
Я написал свое ядро и начал помещать ядра в очередь команд. Поскольку я не хочу ждать после каждого звонка, я полагаю, что я попытаюсь последовательно соединить мои звонки с событиями и просто начать помещать их в очередь.
call kernel1(return event1)
call kernel2(wait for event 1, return event 2)
...
call kernel1000000(vait for event 999999)
Теперь мой вопрос: все это передается в графический чип или драйвер сохраняет очередь? Там есть ограничение на количество событий, которые я могу использовать, или на длину очереди команд, я посмотрел вокруг, но не смог найти это.
Я использую atMonitor для проверки использования моего gpu ', и его довольно сложно поднять выше 20%, может ли это быть просто из-за того, что я не могу отправлять вызовы там достаточно быстро? Мои данные уже хранятся в графическом процессоре, и все, что я передаю, - это реальные звонки.