Я пытаюсь понять относительные преимущества центральных процессоров и графических процессоров.
Если процитировать популярное мнение, «чем больше ядер, тем лучше», то по этой логике графический процессор всегда должен превосходить центральный процессор, и это действительно так в майнинге криптовалют и количественном финансировании, поскольку я только что на скорую руку написал быструю программу, которая вычисляет подразумеваемую волатильность за гораздо меньшее время с помощью моего графического процессора, чем с помощью моего центрального процессора.
Но по мере того, как я исследовал эту тему, я наткнулся на вопросы и ответы вродеэтот.
Прошу прощения, если этот вопрос может быть слишком общим, но у меня есть лишь элементарная подготовка в области электротехники, и мне было интересно, есть ли простое объяснение, почему ЦП предпочтительнее ГП для обычных задач, таких как описанные в связанных вопросах и ответах: «предсказание ветвлений, конвейеризация, супермасштабирование и т. д.».
(В качестве бонуса, что означает эта цитата: «Кроме того, необходимые алгоритмы не должны были иметь дело с ветвями, поскольку практически любую требуемую ветвь можно было получить, установив коэффициент равным нулю или единице».)
решение1
Архитектура графического процессора разработана для обработки векторных алгоритмов и программ, таких как математические вычисления, особенно для графики, которые не делают много ветвлений и переходов и больше связаны с потоком данных через процессор. Поэтому он более оптимизирован для этого, в то время как универсальный процессор имеет другую архитектуру, которая может лучше обрабатывать переходы и переходы за счет потока данных.
Если взглянуть на компоновку любого из этих типов ЦП, станет очевидно, чем они отличаются.
(Я знаю, что этот ответ немного неубедителен, но я только что проснулся, и прошло уже много лет с тех пор, как я последний раз занимался проектированием процессоров.)
решение2
Второй ответ в вопросе, ссылку на который вы дали (не принятый, но набравший наибольшее количество голосов), на мой взгляд, хорошо написан и достаточно подробен.
Если вы хотите глубже понять названные там концепции, я думаю, вам лучше задать отдельные вопросы по каждой из них (и объяснить, что именно вы не понимаете). Причина в том, что эти концепции являются как архитектурными, так и микроархитектурными, и их описание на любом приемлемом уровне требует отдельного вопроса.
По аналогии, можно представить себе ЦП как швейцарский нож — он может делать много вещей и будет полезен в любой ситуации. Однако, если вы знаете, что собираетесь резать салат на 300 человек — любой кухонный нож превзойдет самый сложный швейцарский. ГП — это кухонный нож.
CPU лучше подходят для широкого спектра задач, выполняемых "обычным" пользователем. Однако, если пользователь знает, что задача потребует обширных математических вычислений, следует рассмотреть GPU. Если задача, в дополнение к математическим вычислениям, может быть распараллелена - такая задача может быть помечена как "GPU customized".