Koduleht » kuidas » Miks me veel CPU-sid kasutame GPU-de asemel?

    Miks me veel CPU-sid kasutame GPU-de asemel?

    Üha enam GPU-sid kasutatakse mitte-graafilisteks ülesanneteks, nagu riskiarvutused, vedeliku dünaamika arvutused ja seismiline analüüs. Mis takistab meid GPU-põhiste seadmete vastuvõtmisel?

    Tänane küsimuste ja vastuste seanss saabub meiega kohtades, kus on SuperUser-Stack Exchange'i alajaotus, kogukondliku draivi rühmitus Q&A veebisaitidel.

    Küsimus

    SuperUser lugeja Ell jälgib tehnoloogia uudiseid ja on uudishimulik, miks me ei kasuta rohkem GPU-põhiseid süsteeme:

    Mulle tundub, et nendel päevadel tehakse GPU-s palju arvutusi. Loomulikult toimub seal graafika, kuid CUDA ja muu sarnane, AI, hash-algoritmid (mõtle Bitcoins) ja teised tehakse ka GPU-s. Miks me ei saa lihtsalt CPU-st lahti saada ja GPU-d kasutada eraldi? Mis teeb GPUs nii palju kiiremaks kui protsessor?

    Miks tõesti? Mis teeb CPU unikaalseks?

    Vastus

    SuperUser'i toetaja DragonLord pakub hästi toetatud ülevaadet erinevustest GPU-de ja protsessorite vahel:

    TL; DR vastus: GPU-del on palju rohkem protsessori südamikke kui CPU-d, kuid kuna iga GPU-südamik töötab oluliselt aeglasemalt kui CPU-südamik ja neil ei ole tänapäevaste operatsioonisüsteemide jaoks vajalikke funktsioone, ei sobi need enamiku töötlemise teostamiseks igapäevases andmetöötluses. Need sobivad kõige paremini arvutimahukate operatsioonide, näiteks videotöötluse ja füüsika simulatsioonide jaoks.

    Üksikasjalik vastus: GPGPU on ikka veel suhteliselt uus kontseptsioon. GPU-sid kasutati algselt ainult graafika esitamiseks; kui arenenud tehnoloogia, kasutati GPU-de suuremat arvu tuumikuid CPU-dega võrreldes, arendades GPU-de arvutusvõimeid nii, et nad saaksid töödelda mitut paralleelset andmevoogu üheaegselt, olenemata sellest, millised need andmed võivad olla. Kuigi GPU-del võib olla sadu või isegi tuhandeid ojaprotsessoreid, töötab igaüks aeglasemalt kui CPU-südamik ja tal on vähem funktsioone (isegi kui need on täielikud ja neid saab programmeerida mis tahes programmi käivitamiseks, mida CPU suudab käivitada). GPU-st puuduvad funktsioonid hõlmavad katkestusi ja virtuaalset mälu, mis on vajalikud tänapäevase operatsioonisüsteemi rakendamiseks.

    Teisisõnu on protsessoritel ja GPU-del oluliselt erinevad arhitektuurid, mis muudavad need paremini erinevatele ülesannetele. GPU suudab paljudes voogudes käsitleda suuri andmemahtusid, tehes neile suhteliselt lihtsaid toiminguid, kuid sobib halvasti või keeruliseks töötlemiseks ühe või mõne andmevoo korral. Protsessor on palju kiirem põhipõhiselt (juhiste kohta sekundis) ja võib teha keerukaid toiminguid ühe või mitme andmevoo kergemini, kuid ei suuda paljude voogude samaaegselt tõhusalt käsitseda.

    Selle tulemusena ei sobi GPU-d selliste ülesannete käsitlemiseks, mis ei ole oluliselt kasulikud või mida ei saa paralleelselt kasutada, sealhulgas paljud tavalised tarbijarakendused, nagu näiteks tekstiprotsessorid. Lisaks kasutavad GPUd põhiliselt erinevat arhitektuuri; üks peaks programmeerima rakenduse spetsiaalselt GPU jaoks, et see töötaks, ja GPUde programmeerimiseks on vaja oluliselt erinevaid tehnikaid. Need erinevad tehnikad hõlmavad uusi programmeerimiskeeli, olemasolevate keelte modifikatsioone ja uusi programmeerimise paradigme, mis sobivad paremini arvutuse väljendamiseks paralleelseks operatsiooniks, mida teevad paljud ojaprotsessorid. Lisateavet GPU-de programmeerimiseks vajalike tehnikate kohta leiate Wikipedia artiklitest, mis käsitlevad voogude töötlemist ja paralleelarvutust.

    Kaasaegsed GPU-d on võimelised täitma vektoroperatsioone ja ujuvpunkti aritmeetikat, kusjuures viimased kaardid on võimelised manipuleerima kahekordse täpsusega ujuva punkti numbritega. Sellised raamid nagu CUDA ja OpenCL võimaldavad programme kirjutada GPU-de jaoks ning GPU-de olemus sobib kõige paremini paralleelselt kasutatavatele toimingutele, nagu näiteks teaduslikes andmetöötlustes, kus rida spetsiaalseid GPU-arvutikaarte võib olla väikese arvutada klastrit nagu NVIDIA Tesla isiklikel superarvutitel. Tänapäeva GPU-dega tarbijad, kes on kogenud Folding @ home'iga, saavad neid kasutada GPU klientidega, kes suudavad teostada valgu kokkuklapitavad simulatsioonid väga suurel kiirusel ja annavad projektile rohkem tööd (lugege kõigepealt korduma kippuvad küsimused, eriti need, mis on seotud GPU-d). GPU-d võivad võimaldada ka paremat füüsika simuleerimist videomängudes, kasutades PhysX-i, kiirendada video kodeerimist ja dekodeerimist ning teha muid arvutusmahukaid ülesandeid. Just sellised ülesanded sobivad kõige paremini GPU-dega.

    AMD on teerajaja protsessori disainiks, mida nimetatakse kiirendatud töötlusseadmeks (APU), mis ühendab tavalised x86 CPU südamikud GPU-dega. See võib võimaldada protsessoril ja GPU komponentidel koos töötada ja täiustada jõudlust süsteemides, kus on piiratud ruumi eraldi komponentide jaoks. Kuna tehnoloogia areneb edasi, näeme üha enam nende üksikute osade lähenemist. Paljud PC operatsioonisüsteemide ja rakenduste teostatud ülesanded sobivad siiski CPU-dega paremini ja vaja on palju tööd, et kiirendada programmi, kasutades GPU-d. Kuna nii palju olemasolevat tarkvara kasutab x86-arhitektuuri ja kuna GPU-d vajavad erinevaid programmeerimistehnikaid ja neil puudub operatsioonisüsteemidele vajalik oluline funktsioon, on üldine üleminek CPU-lt GPU-le igapäevaseks arvutiks äärmiselt keeruline.


    Kas teil on midagi lisada selgitusele? Hääletage kommentaarides. Kas soovite lugeda rohkem vastuseid teistelt tech-savvy Stack Exchange'i kasutajatelt? Vaadake siin täielikku arutelu lõiku.