GPU: ita käytetään yhä enemmän ei-graafisiin tehtäviin, kuten riskilaskelmiin, nestedynamiikan laskelmiin ja seismisiin analyyseihin. Mikä estää meitä ottamasta käyttöön GPU-ohjattavia laitteita?
Tämän päivän Kysymys- ja vastausistunto tulee meille SuperUser-lisenssillä - joka on Stack Exchangen alaryhmä.
Kysymys
SuperUser-lukija Ell seuraa tekniikan uutisia ja on utelias, miksi emme käytä enemmän GPU-pohjaisia järjestelmiä:
Minusta tuntuu, että nykyään GPU: lla tehdään paljon laskelmia. Ilmeisesti grafiikkaa tehdään siellä, mutta CUDA: n ja vastaavien, AI: n, hajautusalgoritmien (ajattele Bitcoins) ja muiden käyttäminen tehdään myös GPU: lla. Miksi emme voi vain päästä eroon suorittimesta ja käyttää GPU: ta yksin? Mikä tekee GPU: sta niin paljon nopeamman kuin CPU?
Miksi todellakin? Mikä tekee suorittimesta ainutlaatuisen?
Vastaus
SuperUser-avustaja DragonLord tarjoaa hyvin tuetun yleiskuvan GPU: iden ja suorittimien välisistä eroista:
TL; DR vastaus: GPU: lla on paljon enemmän prosessorin ytimiä kuin suorittimilla, mutta koska jokainen GPU-ydin toimii huomattavasti hitaammin kuin CPU-ydin eikä niillä ole nykyaikaisiin käyttöjärjestelmiin tarvittavia ominaisuuksia, ne eivät sovellu suurimman osan prosessoinnista jokapäiväisessä laskennassa. Ne soveltuvat parhaiten laskennan tarpeisiin, kuten videonkäsittelyyn ja fysiikan simulaatioihin.
Yksityiskohtainen vastaus: GPGPU on edelleen suhteellisen uusi käsite. GPU: ita käytettiin alun perin vain grafiikan renderointiin; tekniikan edetessä suuri määrä ytimiä grafiikkasuorittimissa suhteessa suorittimiin hyödynnettiin kehittämällä GPU: iden laskennallisia ominaisuuksia, jotta ne pystyisivät käsittelemään useita rinnakkaisia datavirtoja samanaikaisesti riippumatta siitä, mitä kyseiset tiedot voivat olla. Vaikka GPU: lla voi olla satoja tai jopa tuhansia suoratoistoprosessoreita, ne kaikki toimivat hitaammin kuin CPU-ydin ja niillä on vähemmän ominaisuuksia (vaikka ne olisivatkin Turing valmis ja voidaan ohjelmoida suorittamaan mikä tahansa ohjelma, jota CPU voi käyttää) GPU: ista puuttuu ominaisuuksia: keskeytykset ja virtuaalimuisti, joita tarvitaan nykyaikaisen käyttöjärjestelmän toteuttamiseen.
Toisin sanoen, suorittimilla ja näytönohjaimilla on huomattavasti erilaiset arkkitehtuurit, jotka tekevät niistä paremmin sopivia erilaisiin tehtäviin. GPU pystyy käsittelemään suuria tietomääriä monissa virroissa suorittamalla niihin suhteellisen yksinkertaisia toimintoja, mutta se ei sovi raskaaseen tai monimutkaiseen käsittelyyn yhdellä tai muutamalla tietovirralla. Suoritin on paljon nopeampi ydinkohtaisesti (ohjeiden mukaan sekunnissa) ja voi suorittaa monimutkaisia toimintoja yhdellä tai muutamalla tietovirralla helpommin, mutta ei pysty käsittelemään tehokkaasti monia virtoja samanaikaisesti.
Tämän seurauksena grafiikkasuorittimet eivät sovellu sellaisten tehtävien käsittelyyn, joista ei ole merkittävää hyötyä tai joita ei voida rinnastaa, mukaan lukien monet yleiset kuluttajasovellukset, kuten tekstinkäsittelyohjelmat. Lisäksi GPU: t käyttävät periaatteessa erilaista arkkitehtuuria; yksi olisi ohjelmoitava sovellus erityisesti GPU: ta varten, jotta se toimisi, ja GPU: iden ohjelmointiin tarvitaan huomattavasti erilaisia tekniikoita. Näitä erilaisia tekniikoita ovat uudet ohjelmointikielet, olemassa olevien kielten muokkaukset ja uudet ohjelmointiparadigmat, jotka soveltuvat paremmin laskennan ilmaisemiseen rinnakkaisena operaationa, jonka monet virtaprosessorit suorittavat. Lisätietoja GPU: iden ohjelmoimiseksi tarvittavista tekniikoista on Wikipedian artikkeleissa suoratoisto ja rinnakkaislaskenta .
Nykyaikaiset grafiikkasuorittimet pystyvät suorittamaan vektorioperaatioita ja liukulukuaritmeettisia, ja uusimmat kortit pystyvät käsittelemään kaksitarkkoja liukulukuja. CUDA: n ja OpenCL: n kaltaiset kehykset mahdollistavat ohjelmien kirjoittamisen grafiikkasuorittimille, ja grafiikkasuoritinten luonne tekee niistä parhaiten hyvin rinnakkaistettavia toimintoja, kuten tieteellisessä laskennassa, jossa sarja erikoistuneita GPU-laskukortteja voi olla kannattava korvaus pienelle Laske klusteri kuten kohdassa NVIDIA Tesla -tietokoneet . Kuluttajat, joilla on nykyaikaiset näytönohjaimet ja jotka ovat kokeneet Folding @ home-sovelluksen kanssa, voivat käyttää niitä osallistumiseen GPU-asiakkaat , joka voi suorittaa proteiinien taittosimulaatioita erittäin suurilla nopeuksilla ja lisätä työtä projektissa (muista lukea UKK ensin, erityisesti GPU: hin liittyvät). GPU: t voivat myös mahdollistaa paremman fysiikan simuloinnin videopeleissä PhysX: n avulla, nopeuttaa videokoodausta ja dekoodausta sekä suorittaa muita laskutoimituksia vaativia tehtäviä. Tämän tyyppisiä tehtäviä GPU: t soveltuvat parhaiten suorittamiseen.
AMD on edelläkävijä prosessorille, jota kutsutaan Nopeutettu prosessointiyksikkö (APU) joka yhdistää tavanomaiset x86-suorittimen ytimet näytönohjaimiin. Tämä voisi antaa CPU- ja GPU-komponenttien toimia yhdessä ja parantaa suorituskykyä järjestelmissä, joissa on rajoitetusti tilaa erillisille komponenteille. Kun tekniikka etenee edelleen, näemme näiden entistä erillisten osien lisääntyvän lähentymisen. Monet PC-käyttöjärjestelmien ja -sovellusten suorittamat tehtävät soveltuvat silti paremmin suorittimille, ja GPU: ta käyttävän ohjelman nopeuttamiseksi tarvitaan paljon työtä. Koska niin paljon olemassa olevia ohjelmistoja käytetään x86-arkkitehtuuria ja koska näytönohjaimet vaativat erilaisia ohjelmointitekniikoita ja niiltä puuttuu useita käyttöjärjestelmille tarvittavia tärkeitä ominaisuuksia, on yleinen siirtyminen suorittimesta GPU: han jokapäiväisessä laskennassa erittäin vaikeaa.
Onko sinulla jotain lisättävää selitykseen? Ääni pois kommenteista. Haluatko lukea lisää vastauksia muilta teknisesti taitavilta Stack Exchangen käyttäjiltä? Katso koko keskusteluketju täältä .