Ускорение при объединении CPU и GPU с OpenCL - PullRequest
0 голосов
/ 05 апреля 2020

У меня есть приложение, которое использует OpenCL для разделения умножения матрицы на несколько устройств. Я протестировал приложение на компьютере с процессором Intel Xeon и тремя идентичными графическими процессорами NVIDIA Kepler. Если я использую входной размер 2048x2048, то у меня будет ускорение ~ 1,4 для процессора по сравнению с GPU. У двух графических процессоров ускорение составляет ~ 2 по сравнению с одним графическим процессором, но у одного графического процессора плюс один процессор имеет ускорение ~ 1,7. Если я использую три устройства, результат будет похож на один GPU: три GPU имеют ускорение ~ 3, а два GPU плюс один CPU имеют ускорение ~ 2,4.

Итак, мой вопрос: что может быть причиной того, что ускорение уменьшается, когда я заменяю GPU на CPU. Процессор работает быстрее, чем графический процессор.

1 Ответ

1 голос
/ 05 апреля 2020

когда вы сказали: «У меня ускорение ~ 1,4 для ЦП по сравнению с GPU», это означает, что ваш ЦП на самом деле был быстрее вашего GPU на 40%?

Я видел подобные проблемы раньше, когда играл с моим кодом OpenCL Monte Carlo (http://mcx.space/mcxcl, и рис. 3b на бумаге , связанной в страница в Интернете).

Ключ к балансировке рабочей нагрузки - если вы делите свою работу поровну между вашим CPU и GPU, во многих случаях ваша скорость может быть не намного выше, чем у одного CPU (добавляя дополнительные издержки). Но если вы увеличите нагрузку на более мощное оборудование, например, на 80:20, между GPU: CPU, вы можете увидеть общее увеличение. Поиграв с этим коэффициентом разделения рабочей нагрузки, вы можете найти точку балансировки.

...