Kodėl mes vis dar naudojame CPU Vietoj GPU?
Vis dažniau GPU naudojami ne grafinėms užduotims, pavyzdžiui, rizikos skaičiavimams, skysčių dinamikos skaičiavimams ir seismininei analizei. Kas neleidžia mums priimti GPU varomų įrenginių?
Šiandienos „Klausimų ir atsakymų“ sesijos metu mes galime pasveikinti „SuperUser“ - „Stack Exchange“ padalinį, bendruomenės diską „Q&A“ svetainių grupavimas.
Klausimas
„SuperUser“ skaitytuvas „Ell“ palaiko technologines naujienas ir smalsu, kodėl nenaudojame daugiau GPU pagrįstų sistemų:
Man atrodo, kad šiomis dienomis GPU atliekama daug skaičiavimų. Akivaizdu, kad grafika daroma ten, bet naudojant CUDA ir pan., AI, maišymo algoritmai (manau, Bitcoins) ir kiti yra daromi GPU. Kodėl negalime atsikratyti CPU ir naudoti GPU? Kas daro GPU tiek daug greičiau nei procesorius?
Kodėl iš tikrųjų? Kas daro CPU unikalų?
Atsakymas
„SuperUser“ dalyvis „DragonLord“ siūlo gerai palaikomą GPU ir CPU skirtumų apžvalgą:
TL; DR atsakymas: GPU turi daug daugiau procesorių nei CPU, tačiau kadangi kiekvienas GPU šerdis veikia žymiai lėčiau nei procesoriaus branduolys ir neturi šiuolaikinėms operacinėms sistemoms reikalingų funkcijų, jie nėra tinkami atlikti didžiąją dalį apdorojimo kasdieniame skaičiavime. Jie labiausiai tinka skaičiuoti intensyvioms operacijoms, tokioms kaip vaizdo apdorojimo ir fizikos modeliavimas.
Išsamus atsakymas: GPGPU vis dar yra palyginti nauja koncepcija. Iš pradžių GPU buvo naudojami tik grafikai atvaizduoti; kaip pažangios technologijos, didelis GPU gyslų skaičius, palyginti su procesoriais, buvo išnaudotas kuriant GPU skaičiavimo galimybes, kad jie galėtų vienu metu apdoroti daugybę lygiagrečių duomenų srautų, nesvarbu, kokie duomenys gali būti. Nors GPU gali turėti šimtus ar net tūkstančius srauto procesorių, jie kiekvienas veikia lėčiau nei procesoriaus branduolys ir turi mažiau funkcijų (net jei jie yra užbaigti ir gali būti programuojami paleisti bet kurią programą, kurią gali paleisti CPU). Į GPU trūkstamos funkcijos apima pertraukas ir virtualią atmintį, kuri reikalinga šiuolaikinei operacinei sistemai įdiegti.
Kitaip tariant, CPU ir GPU turi žymiai skirtingas architektūras, kurios leidžia jas geriau pritaikyti įvairioms užduotims. GPU gali tvarkyti didelius duomenų kiekius daugelyje srautų, atlikdamas jiems palyginti paprastas operacijas, tačiau netinkamai pritaikytas sunkiam ar sudėtingam duomenų apdorojimui viename ar keliuose duomenų srautuose. CPU yra daug greitesnis už pagrindinį pagrindą (pagal instrukcijas per sekundę) ir gali atlikti sudėtingas operacijas vienu ar keliais duomenų srautais lengviau, tačiau negali efektyviai tvarkyti daugelio srautų vienu metu.
Todėl GPU netinka tvarkyti užduotis, kurios nėra labai naudingos arba negali būti lyginamos, įskaitant daugelį bendrų vartotojų programų, pvz., Tekstų procesorių. Be to, GPU naudoja iš esmės skirtingą architektūrą; norint dirbti GPU, reikia programuoti specialiai GPU, o GPU programavimui būtini skirtingi metodai. Šios skirtingos technologijos apima naujas programavimo kalbas, esamų kalbų modifikacijas ir naujas programavimo paradigmas, kurios geriau tinka skaičiuoti kaip paralelinę operaciją, kurią turi atlikti daugelis srauto procesorių. Daugiau informacijos apie GPU programoms reikalingus metodus žr. Vikipedijos straipsniuose apie srautų apdorojimą ir lygiagrečią kompiuteriją.
Šiuolaikiniai GPU gali atlikti vektorines operacijas ir slankiojo kablelio aritmetiką, su naujausiomis kortelėmis, galinčiomis manipuliuoti dvigubo tikslumo plaukiojančių taškų skaičiais. Tokios programos, kaip CUDA ir OpenCL, leidžia kurti programas, skirtas GPU, o GPU pobūdis daro jas labiausiai tinkančias labai lygiagrečiai veikiančioms operacijoms, pvz., Moksliniams skaičiavimams, kai specializuotų GPU skaičiavimo kortelių serija gali būti tinkamas mažo skaičiuoti klasterį, kaip ir NVIDIA Tesla asmeniniuose kompiuteriuose. Vartotojai, turintys šiuolaikinių GPU, kurie yra patyrę su „Folding @ home“, gali juos naudoti prisidedant prie GPU klientų, kurie gali atlikti baltymų sulankstymo modeliavimą labai dideliu greičiu ir prisidėti prie projekto darbų (pirmiausia perskaitykite DUK, ypač tuos, kurie susiję su GPU). GPU taip pat gali užtikrinti geresnį fizikos modeliavimą vaizdo žaidimuose naudojant „PhysX“, pagreitinti vaizdo kodavimą ir dekodavimą bei atlikti kitas skaičiavimo intensyvias užduotis. Būtent šių užduočių tipai GPU geriausiai tinka atlikti.
AMD yra pirmaujantis procesoriaus dizainas, vadinamas pagreitinto apdorojimo įrenginiu (APU), kuris sujungia įprastas x86 CPU šerdis su GPU. Tai gali leisti CPU ir GPU komponentams dirbti kartu ir pagerinti sistemų veikimą su ribotomis erdvėmis atskiriems komponentams. Kadangi technologija toliau vystosi, matysime vis didesnę šių atskirų dalių konvergenciją. Tačiau daugelis PC operacinių sistemų ir taikomųjų programų atliekamų užduočių vis dar geriau tinka procesoriams, ir daug darbo reikia norint pagreitinti programą naudojant GPU. Kadangi tiek daug programinės įrangos naudoja x86 architektūrą, ir todėl, kad GPU reikalauja skirtingų programavimo metodų ir trūksta kelių svarbių funkcijų, reikalingų operacinėms sistemoms, bendras perėjimas nuo CPU prie GPU kasdieniniam skaičiavimui yra labai sunkus.
Ar ką nors papildyti paaiškinimu? Garsas išjungtas komentaruose. Norite perskaityti daugiau atsakymų iš kitų „tech-savvy Stack Exchange“ vartotojų? Čia rasite visą diskusijų temą.