6

Мне нужна помощь в понимании концепции ядер на графическом процессоре и ядрах в CPU для выполнения параллельных вычислений.GPU против CPU? Количество ядер/потоков в GPU для ускорения вычисления программы?

Когда дело доходит до ядер в CPU, это кажется довольно простым. У меня супер интенсивный цикл «для», который повторяется четыре раза. У меня четыре ядра в процессоре Intel i5 2.26GHz. Я даю один цикл каждому ядру. Каждая из четырех петель не зависит от другой. Boom. У меня теперь есть четыре потока и 100% загрузка процессора (вместо 25% использования процессора только с одним ядром). Мой цикл «for» теперь работает почти в четыре раза быстрее, чем это было бы, если бы я не распараллеливал его. Кстати, для цикла «for» я использовал автоматическую распараллеливание, доступную в Microsoft Visual Studio 2012, как в этом онлайн-примере :(http://msdn.microsoft.com/en-us/library/hh872235.aspx).

В отличие от этого, я даже не знаю количество ядер в графическом процессоре моего ноутбука (Intel Graphics Media Accelerator HD или Intel HD Graphics с общей памятью 1696 МБ), которые я могу использовать для параллельных вычислений. Я даже не знаю правильного способа сравнения GPU с CPU. Когда я вижу «12 @ 500 МГц» рядом с описанием моей видеокарты, интересно, означает ли это, что графическая карта имеет 12 ядер для распараллеливания, которые могут работать как 4 ядра в CPU, за исключением того, что ядра GPU работают на частоте 500 МГц [медленная ] вместо 2,26 ГГц [быстро]? Является ли использование графического процессора сопоставимым с использованием ЦП в диспетчере задач Windows? Я полный новичок, пытающийся использовать библиотеку C++ в visual studio 2012, если это имеет значение. Когда я пишу фактическое программное обеспечение GPU, код распараллеливания выглядит следующим образом :(http://msdn.microsoft.com/en-us/library/hh265137.aspx).

Итак, не могли бы вы заполнить некоторые пробелы или ошибки в моих знаниях или помочь мне сравнить их? Мне не нужен супер-сложный ответ, такой простой, как «Вы не можете сравнивать ядро ​​процессора с ядром GPU из-за пустой пустоты» или «ядро GPU на самом деле не является ядром, как ядро ​​процессора», очень ценим.

+1

Если вы собираетесь приложить усилия, чтобы уменьшить мой вопрос, по крайней мере оставить предложение, объясняющее, почему вы думаете, что это плохо. Этот вопрос довольно открытый, и вы можете обращаться к нему с разных точек зрения. – 2013-04-22 03:03:19

+1

Кроме того, я знаю, что моя видеокарта, стандартная с ноутбуком, - это кусок дерьма. Это не «дискретная графическая карта», способная работать с . Ради этого вопроса, пожалуйста, притворись, что это «законная» карта, которая хорошо работает для выполнения вычислений программ. – 2013-04-22 04:16:31

ответ

4

Во-первых, ОС инициирует больше ядер только в том случае, если вы запрашиваете их в своем коде. Попробуйте использовать потоки OpenMP или Win32 для достижения параллелизма на вашем i5.

Во-вторых, тактовая частота процессора больше, чем на GPU. Если синхронизация GPU такая же, как у CPU, вы можете использовать ее в качестве плиты для приготовления. Ядра в GPU больше, чем процессоры. Существует разница между нитью и ядром.

В-третьих, я рекомендую ознакомиться со спецификациями и справочными руководствами для вашего процессора и графического процессора. Кроме того, не забывайте PCI-e. Это узкое место для реализации параллельного программирования.

Надеюсь, это прояснит ваши сомнения. Другие вопросы, не стесняйтесь спрашивать.

+0

Любил ваши ссылки на этот вопрос – Harrisson

Смежные вопросы