Miksi käytämme edelleen CPU ta GPU iden sijaan?
GPU: ita käytetään yhä useammin kuin graafisiin tehtäviin, kuten riskin laskemiseen, nesteen dynamiikan laskentaan ja seismiseen analyysiin. Mikä estää meidät ottamasta käyttöön GPU-ohjattuja laitteita?
Nykypäivän Kysymys- ja vastaus -istunto tulee meille suotuisasti SuperUser-Stack Exchange -palvelun osa-alueesta..
Kysymys
SuperUser-lukija Ell pysyy teknisissä uutisissa ja on utelias, miksi emme käytä enemmän GPU-pohjaisia järjestelmiä:
Minusta tuntuu, että näinä päivinä GPU: ssa tehdään paljon laskelmia. On selvää, että grafiikkaa tehdään siellä, mutta CUDA: n ja vastaavien avulla AI, hajautusalgoritmit (ajatella Bitcoins) ja muut tehdään myös GPU: ssa. Miksi emme voi vain päästä eroon CPU: sta ja käyttää GPU: ta yksin? Mikä tekee GPU: sta paljon nopeammin kuin CPU?
Miksi todellakin? Mikä tekee CPU: sta ainutlaatuisen?
Vastaus
SuperUserin avustaja DragonLord tarjoaa hyvin tuetun yleiskuvan GPU: n ja CPU: n eroista:
TL: DR-vastaus: GPU: lla on paljon prosessorisydämiä kuin CPU: t, mutta koska jokainen GPU-ydin kulkee huomattavasti hitaammin kuin CPU-ydin ja niillä ei ole nykyaikaisissa käyttöjärjestelmissä tarvittavia ominaisuuksia, ne eivät ole sopivia useimpien käsittelyjen suorittamiseen jokapäiväisessä tietojenkäsittelyssä. Ne soveltuvat parhaiten laskentatehokkaisiin toimintoihin, kuten videon käsittely- ja fysiikan simulaatioihin.
Yksityiskohtainen vastaus: GPGPU on edelleen suhteellisen uusi käsite. GPU: ita käytettiin aluksi vain grafiikan esittämiseen; teknologian kehittyessä GPU: iden suuria ytimiä CPU: iin verrattuna hyödynnettiin kehittämällä GPU: iden laskennallisia ominaisuuksia, jotta he voivat käsitellä useita rinnakkaisia datavirtoja samanaikaisesti riippumatta siitä, mitä tietoja voi olla. Vaikka GPU-laitteissa voi olla satoja tai jopa tuhansia virtausprosessoreita, ne kulkevat hitaammin kuin CPU-ydin ja niillä on vähemmän ominaisuuksia (vaikka ne ovatkin täydellisiä ja ne voidaan ohjelmoida suorittamaan minkä tahansa ohjelman, jonka CPU voi suorittaa). GPU: ista puuttuvat ominaisuudet sisältävät keskeytyksiä ja virtuaalimuistia, joita tarvitaan nykyaikaisen käyttöjärjestelmän toteuttamiseen.
Toisin sanoen CPU: lla ja GPU: lla on huomattavasti erilaiset arkkitehtuurit, jotka tekevät niistä paremmin sopivia eri tehtäviin. GPU pystyy käsittelemään suuria määriä dataa monissa virroissa, suorittamalla niille suhteellisen yksinkertaisia toimintoja, mutta se ei sovellu raskaaseen tai monimutkaiseen käsittelyyn yhdellä tai muutamalla datavirralla. CPU on huomattavasti nopeampi per peruselementti (ohjeiden mukaan sekunnissa) ja voi suorittaa monimutkaisia toimintoja yhdellä tai muutamalla datavirralla helpommin, mutta se ei pysty käsittelemään tehokkaasti monta virtaa samanaikaisesti.
Tämän seurauksena GPU: t eivät sovellu käsittelemään tehtäviä, jotka eivät ole merkittävästi hyötyneet tai joita ei voida rinnastaa, mukaan lukien monet yleiset kuluttaja-sovellukset, kuten tekstinkäsittelyohjelmat. Lisäksi GPU: t käyttävät perusteellisesti erilaista arkkitehtuuria; Yksi olisi ohjelmoitava sovellus erityisesti GPU: lle, jotta se toimisi, ja GPU: iden ohjelmointiin tarvitaan huomattavasti erilaisia tekniikoita. Näitä erilaisia tekniikoita ovat uudet ohjelmointikielet, olemassa olevien kielten muutokset ja uudet ohjelmointiparadigmat, jotka soveltuvat paremmin laskemisen ilmaisemiseen rinnakkaisena operaationa, jota monet virtausprosessorit suorittavat. Lisätietoja GPU: iden ohjelmointiin tarvittavista tekniikoista on Wikipedian artikkeleissa, jotka käsittelevät virran käsittelyä ja rinnakkaista tietojenkäsittelyä.
Nykyaikaiset GPU: t kykenevät suorittamaan vektoritoimintoja ja kelluva-pisteen aritmeettisia uusimpia kortteja, jotka kykenevät manipuloimaan kaksinkertaista tarkkuutta vaihtelevia numeroita. CUDA: n ja OpenCL: n kaltaiset kehykset mahdollistavat ohjelmien kirjoittamisen GPU: ille, ja GPU: iden luonne tekee niistä sopivimmat hyvin rinnakkaisille toiminnoille, kuten tieteellisessä tietojenkäsittelyssä, jossa sarja erikoistuneita GPU-laskentakortteja voi olla kannattava korvaus pienelle laskea klusterin kuin NVIDIA Tesla Personal Supercomputersissa. Kuluttajat, joilla on nykyaikaiset GPU: t, jotka ovat kokeneet Folding @ home -palvelun avulla, voivat käyttää niitä GPU-asiakkaiden kanssa, jotka voivat suorittaa proteiinien taitto-simulaatioita erittäin suurilla nopeuksilla ja lisätä työtä projektissa (lue ensin usein kysytyt kysymykset, erityisesti ne, jotka liittyvät GPU). GPU: t voivat myös mahdollistaa paremman fysiikan simuloinnin videopeleissä käyttäen PhysX: ää, nopeuttaa videon koodausta ja dekoodausta ja suorittaa muita laskentatehokkaita tehtäviä. Tämäntyyppiset tehtävät sopivat parhaiten GPU: iin.
AMD on edelläkävijä prosessorin suunnittelussa, jota kutsutaan nopeutetuksi prosessointiyksiköksi (APU), joka yhdistää tavanomaiset x86-CPU-ytimet ja GPU: t. Näin CPU- ja GPU-komponentit voivat toimia yhdessä ja parantaa suorituskykyä järjestelmissä, joissa on vain vähän tilaa erillisille komponenteille. Kun teknologia jatkuu, näemme, että näiden kerran erillisten osien lähentyminen kasvaa. Monet PC-käyttöjärjestelmien ja -sovellusten suorittamat tehtävät soveltuvat kuitenkin paremmin CPU-laitteisiin, ja paljon työtä tarvitaan ohjelman nopeuttamiseksi GPU: n avulla. Koska niin paljon olemassa olevaa ohjelmistoa käyttää x86-arkkitehtuuria, ja koska GPU: t tarvitsevat erilaisia ohjelmointitekniikoita ja puuttuvat useita tärkeitä käyttöjärjestelmiin tarvittavia ominaisuuksia, yleinen siirtyminen CPU: sta GPU: lle päivittäiseen tietojenkäsittelyyn on erittäin vaikeaa.
Onko jotain lisättävää selitykseen? Ääni pois kommenteista. Haluatko lukea lisää vastauksia muilta tech-savvy Stack Exchange -käyttäjiltä? Tutustu koko keskusteluketjuun täällä.