Последовательный процессор против кода GPU - PullRequest
0 голосов
/ 08 декабря 2011

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

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

Я знаю, что это можно легко проверить, но у меня нет практического опыта ни с CUDA, ни с OpenCL, и я спешу.

Ответы [ 4 ]

4 голосов
/ 08 декабря 2011

исполнительные блоки GPU, как правило, находятся в порядке, и (по крайней мере, для графических процессоров nVidia) вы обычно получаете только одну инструкцию на 4 такта в однопоточном контексте.Сравните это с современными суперскалярными процессорами, где вы можете получить пропускную способность> 1 инструкции за такт, а процессор выигрывает в 4 или более раз на тактовой основе.Тактовые частоты процессора, как правило, намного выше, чем тактовые частоты графического процессора, поэтому можно легко получить дополнительный коэффициент от тактовой частоты, равный 3, при увеличении ЦП до 12х или более относительно графического процессора.

2 голосов
/ 09 декабря 2011

Одно ядро ​​GPU на несколько слабее, чем у CPU, плюс накладные расходы на передачу данных.Причина, по которой GPU побеждает в параллельном коде, заключается в огромном количестве потоков, работающих на сотнях ядер одновременно.Рассмотрим этот пример:

for(int i=0; i<1000; i++)
  a[i]= /*some value*/

Если вы используете только 1 поток, он должен повторяться 1000 раз.Процессор определенно будет очень и очень быстрым, чем GPU.Но чтобы извлечь выгоду из графического процессора, мы создаем 1000 потоков, каждый из которых вставляет значение в память «а» в своей соответствующей позиции.Это может привести к увеличению производительности по сравнению с процессором.

1 голос
/ 03 января 2012

Следует также учитывать тактовую частоту, с которой работает графический процессор (1-2 ГГц), что очень мало по сравнению с процессорами. Производительность графических процессоров на самом деле не является выбором, когда код не является параллельным.

1 голос
/ 09 декабря 2011

Графические процессоры NVidia Tesla выполняют некоторые операции с тактовой частотой 4 такта / такт.
Пропускная способность памяти на графическом процессоре, как правило, быстрее, чем у ЦП <-> основной ОЗУ, и для двумерной структуры существуют некоторые умные функции кэширования.

Нокак правило, нет - если вам не нужно делать то же самое, чтобы> 256 элементов использовали процессор

...