If-Koubou

Защо все още използваме процесори Вместо GPU?

Защо все още използваме процесори Вместо GPU? (Как да)

Все по-често графичните процесори се използват за неграфични задачи като изчисления на риска, изчисления на динамиката на флуидите и сеизмичен анализ. Какво ще ни спре да приемаме устройства, задвижвани от GPU?

Днешната сесия за въпроси и отговори се отнася до нас с любезното съдействие на SuperUser - подразделение на Stack Exchange, обединяване на уеб сайтове с въпроси и отговори.

Въпроса

Reader на SuperUser Ell се занимава с техническите новини и е любопитен защо не използваме повече системи, базирани на GPU:

Струва ми се, че тези дни много изчисления се правят на GPU. Очевидно графиките се правят там, но с помощта на CUDA и други подобни, AI, алгоритми за хеширане (мисля, че Bitcoins) и други се правят и на графичния процесор. Защо не може просто да се отървем от процесора и да използваме GPU сам? Какво прави графичния процесор толкова по-бърз от процесора?

Защо наистина? Какво прави CPU уникален?

Отговорът

Сътрудникът на SuperUser DragonLord предлага добре поддържан преглед на разликите между графичните процесори и процесорите:

TL; DR отговор: Графичните графични процесори имат много повече процесорни ядра от процесорите, но тъй като всяко ядро ​​на GPU работи значително по-бавно от сърцевината на процесора и не разполага с функциите, необходими за съвременните операционни системи, те не са подходящи за извършване на по-голямата част от обработката на ежедневните компютри. Те са най-подходящи за работа с интензивни изчисления, като видео обработка и симулации във физиката.

Подробният отговор:GPGPU все още е сравнително нова концепция. Графичните графични процесори първоначално се използват само за графики; тъй като технологията е напреднала, големият брой сърцевини в графичните процесори спрямо процесорите е бил използван чрез разработването на изчислителни възможности за графичните процесори, така че да могат да обработват много паралелни потоци данни едновременно, без значение какви са тези данни. Докато графичните процесори могат да имат стотици или дори хиляди поточни процесори, всеки тече по-бавно от сърцевината на процесора и има по-малко функции (дори ако те са напълно завършени и могат да бъдат програмирани да изпълняват всяка програма, която CPU може да изпълни). Характеристиките, които липсват в графичните процесори, включват прекъсвания и виртуална памет, които са необходими за внедряване на съвременна операционна система.

С други думи, процесорите и графичните процесори имат значително различни архитектури, които ги правят по-подходящи за различни задачи. GPU може да обработва големи количества данни в много потоци, изпълнявайки относително прости операции върху тях, но не е подходящ за тежка или сложна обработка на единични или няколко потока данни. Процесорът е много по-бърз на базата на ядрото (по отношение на инструкциите в секунда) и може да изпълнява сложни операции на един или няколко потока данни по-лесно, но не може ефективно да обработва много потоци едновременно.

В резултат графичните графични процесори не са подходящи за обработка на задачи, които не се възползват значително или не могат да бъдат паралелизирани, включително много често използвани потребителски приложения като текстообработващи програми. Освен това графичните процесори използват фундаментално различна архитектура; ще трябва да програмирате приложение, специално предназначено за графичен процесор, за да работи, и са необходими значително различни техники за програмиране на графични процесори. Тези различни техники включват нови езици за програмиране, модификации на съществуващи езици и нови парадигми за програмиране, които са по-подходящи за изразяване на изчисление като паралелна операция, която трябва да бъде изпълнена от много поточни процесори. За повече информация относно техниките, необходими за програмиране на графични процесори, вижте статиите в Уикипедия по обработка на потоци и паралелни изчисления.

Съвременните графични процесори са в състояние да извършват векторни операции и аритметика с плаваща запетая, с най-новите карти, способни да манипулират номера с плаваща запетая с двойна точност. Райони като CUDA и OpenCL позволяват писането на програми за графични процесори и природата на графичните процесори ги прави най-подходящи за много паралелизируеми операции, като например научни изчисления, където серия от специализирани изчислителни карти GPU могат да бъдат надежден заместител за малък както в NVIDIA Tesla Personal Supercomputers. Потребителите с модерни графични процесори, които имат опит с Folding @ home, могат да ги използват, за да допринесат с клиенти на GPU, които могат да извършват симулации на сгъстяване на протеини при много високи скорости и да допринесат повече за проекта (не забравяйте да прочетете най-често задаваните въпроси. Графичните процесори). Графичните графични процесори могат също така да позволят по-добра физическа симулация във видеоигри, използвайки PhysX, да ускорят видео кодирането и декодирането и да изпълняват други задачи, изискващи изчисления. Това са тези видове задачи, които графичните процесори са най-подходящи за изпълнение.

AMD е пионер в процесорния процес, наречен ускорено обработващо устройство (APU), който съчетава конвенционалните x86 CPU ядра с графичните процесори. Това би могло да позволи на процесорите и графичните компоненти да работят заедно и да подобрят производителността на системите с ограничено място за отделни компоненти. Тъй като технологията продължава да напредва, ще видим нарастваща степен на сближаване на тези отделни части. Въпреки това много от задачите, изпълнявани от операционни системи и приложения на персонални компютри, все още са по-подходящи за процесорите и е необходима много работа за ускоряване на програма, използваща GPU. Тъй като толкова много съществуващи софтуер използват архитектурата x86, и тъй като графичните процесори изискват различни техники за програмиране и липсват няколко важни характеристики, необходими за операционните системи, е изключително трудно да се направи общ преход от процесора към GPU за ежедневно изчисляване.

Имате ли нещо, което да добавите към обяснението? Звучи в коментарите. Искате ли да прочетете повече отговори от други потребители на Stack Exchange? Вижте цялата тема на дискусията тук.