В чем разница между ядром CUDA и ядром процессора?

Я немного поработал с CUDA и много с CPU, и я пытаюсь понять, в чем разница между ними. Мой процессор I5 имеет 4 ядра и стоит 200 долларов, а мой NVidia 660 имеет 960 ядер и стоит примерно то же самое.

Я был бы очень доволен, если бы кто-нибудь мог объяснить, каковы ключевые различия между архитектурой процессоров с точки зрения возможностей плюсов и минусов. Например, имеет ли ядро ​​CUDA предсказание ветвления?

Ответы

Ответ 1

Это вопрос архитектуры компьютера, который влечет за собой длинный ответ. Я постараюсь, чтобы это было очень просто на риск быть неточным. Вы, в основном, сами ответили на свой вопрос, спросив, что такое предсказание ветки ядра CUDA, ответ НЕТ. Ядро процессора должно обрабатывать каждую отдельную операцию, выполняемую компьютером, вычислять, извлекать память, IO, прерывания, поэтому он имеет огромный комплексный набор команд и оптимизирует скорость выборки предсказания ветвления команды.
Также он имеет большой кеш и быструю тактовую частоту. Для реализации набора инструкций вам потребуется больше логики, поэтому больше транзисторов будет больше затрат на ядро ​​по сравнению с графическим процессором.

В ядрах GPU меньше кэш-памяти, более простая инструкция и меньше тактовой частоты за такт, однако они оптимизированы для большего количества вычислений в виде группы. Простые инструкции установлены, тем меньше кэш-память делает их менее дорогостоящими на ядро.

Ответ 2

Вам нужно понять фундаментальное различие между CPU Vs GPU и необходимостью повышения GPGPU в последние месяцы. Один из информационных курсов по этому вопросу можно найти в Udacity

Кроме того, эта книга может быть полезна для программ уровня начинающих.

Хотя это не вопрос программирования. Надеюсь, это может помочь кому-то.

Ответ 3

Теперь они в принципе такие же, как и ядра CPU. Не так давно это было неверно, например, они не смогли обработать целочисленные операнды в 2005 году.

Сравнивая сложность процессора Core 2-core i5, помните, что у исходного процессора 80386 было около 275 тыс. транзисторов, а Core2Duo - около 230 миллионов. В 1000 раз больше, поэтому цифры подходят хорошо.

Самое большое различие - обработка памяти, которая становится еще более сложной, чем старые добрые времена, когда нам нужны регистры сегментации. Нет виртуальной памяти и т.д., И это очень тонкое узкое место, когда вы пытаетесь перенести свои обычные программы с процессорами, но реальная проблема заключается в том, что доступ к памяти составляет каждый дорогой 400-800 циклов. Они используют технику, которая находится за пределами мира графических процессоров только для центрального процессора SUN Niagara T1/T2. В ожидании доступа к памяти они планируют разный набор потоков с другими готовыми инструкциями (называемыми обертками).

Ответ 4

Cuda cores - это больше полос векторной единицы, собранной в основы. По сути, cuda core - это записи в более широком формате AVX или VSX или NEON.

Ближайшим к ядру процессора является SMX. Он может обрабатывать несколько контекстов (перекосы, гиперпотоки, SMT) и имеет несколько параллельных конвейеров (6 FP32 для Kepler, 2 на Haswell, 2 на Power 8). И каждый SMX независим, как и любой центральный процессор или центральный процессор.

Эта аналогия подробно описана здесь: fooobar.com/info/330516/....