Начална » как да » Защо все още използваме процесори Вместо GPU?

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

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

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

    Въпроса

    Четецът на SuperUser Ell поддържа технологичните новини и е любопитен защо не използваме повече базирани на GPU системи:

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

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

    Отговорът

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

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

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

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

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

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

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


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