Одно ядро GPU на несколько слабее, чем у CPU, плюс накладные расходы на передачу данных.Причина, по которой GPU побеждает в параллельном коде, заключается в огромном количестве потоков, работающих на сотнях ядер одновременно.Рассмотрим этот пример:
for(int i=0; i<1000; i++)
a[i]= /*some value*/
Если вы используете только 1 поток, он должен повторяться 1000 раз.Процессор определенно будет очень и очень быстрым, чем GPU.Но чтобы извлечь выгоду из графического процессора, мы создаем 1000 потоков, каждый из которых вставляет значение в память «а» в своей соответствующей позиции.Это может привести к увеличению производительности по сравнению с процессором.