OpenCL: параллельное выполнение ядер из разных программ - PullRequest
0 голосов
/ 23 октября 2018

У меня есть два приложения OpenCL, которые я хочу выполнять параллельно на графическом процессоре.Предположим, что имя первого приложения - A1.c, а его ядро ​​- a1.cl.Ядру a1.cl требуется 600 ядер CUDA для выполнения.Предположим, второе приложение - A2.c, а его ядро ​​называется a2.cl.Я хочу выполнить ядро ​​a2.cl программы A2.c на оставшихся 400 ядрах CUDA графического процессора.Цель состоит в том, чтобы уменьшить время выполнения двух одновременно выполняемых программ по сравнению с тем, когда обе программы выполняются одна за другой, увеличивая использование устройства графическим процессором.Однако когда я запускаю A1.c и A2.c одновременно, их соответствующие ядра a1.cl и a2.cl не работают параллельно.У меня вопрос, как я могу параллельно запускать ядра двух разных программ на GPU.Примечание. Я использую графический процессор Nvidia GTX 760.

1 Ответ

0 голосов
/ 25 октября 2018

Предполагая, что вы можете изменять программы, вы можете использовать дополнительные устройства.Это позволяет вам разделить одно устройство OpenCL на несколько с непересекающимися вычислительными блоками, теоретически позволяя действительно параллельное выполнение двух или более ядер.Однако я полагаю, что для этого потребуется запустить оба ядра из одной и той же хост-программы, что может оказаться для вас нецелесообразным.

Точный способ разбиения устройства зависит от ваших потребностей, поэтому я бы порекомендовал Прочтите справочное руководство о разбиении устройства.Могут быть и другие узкие места, препятствующие параллельному выполнению, в зависимости от того, как настроена ваша система и как программы используют OpenCL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...