Sivustot

Parallelism tarvitsee Killer Application for Mass Adoption

How to use threads in C++11 (multitasking, mutual exclusion, etc.)

How to use threads in C++11 (multitasking, mutual exclusion, etc.)
Anonim

Useiden ytimien lisääminen mikroprosessoreihin on luonut merkittävän tilaisuuden rinnakkaisohjelmointiin, mutta konsepti on työntävä tappajasovelluksi valtavirtaan, tutkijat sanoivat Hot Chips -konferenssissa käydyn keskustelun aikana.

Suurin osa ohjelmista on vielä kirjoitettu peräkkäisten suoritusten osalta ja ohjelmointimalleja on muutettava hyödyntämällä nopeampaa laitteistoa ja yhä useampia ytimiä siruilla, panelistit sanoivat. Ohjelmoijat tarvitsevat kirjoittaa koodia tavalla, joka mahdollistaa tehtävien jakamisen ja toteuttamisen samanaikaisesti useiden ytimien ja kierteiden kautta.

Monet painopisteistä ja rahoista ovat menneet rakentamaan nopeita koneita ja parempia ohjelmointikieliä, sanoo David Patterson, tietokone professori Kalifornian yliopistossa, Berkeley, Stanfordissa maanantaina pidetyssä konferenssissa. Vastaavasti pientä huomiota on kiinnitetty pöytätietokoneiden ohjelmien kirjoittamiseen samanaikaisesti, mutta pelien ja musiikin sovellukset voivat muuttaa sitä. Tällaisten ohjelmien käyttäjät tarvitsevat parhaan reaaliaikaisen suorituskyvyn, joten ohjelmoijien täytyy joutua ottamaan käyttöön malleja, jotka hajottavat tehtäviä useilla langoilla ja ytimillä.

Esimerkiksi uudet rinnakkaismuodot voisivat parantaa tietokoneiden musiikin laatua ja älypuhelimet, Patterson sanoi. Koodi, joka tekee paremman työn kanavien ja välineiden erottelusta, voi lopulta tuottaa äänen rinnakkaisvuorovaikutuksen kautta.

Kalifornian yliopistossa, Berkeleyssä on rinnakkainen tietojenkäsittelylaboratorio, jossa tutkijat yrittävät ymmärtää sovellusten käyttämistä, mikä voisi auttaa optimoimaan koodin kannettaville laitteille. Yhden projektin tavoitteena on tuoda työpöydän laadukas selailu kädessä pidettäviin laitteisiin optimoimalla koodia, joka perustuu tiettyihin tehtäviin, kuten sivujen tekemiseen ja jäsentämiseen. Toinen hanke koskee optimointikoodia terveystietojen nopeampaan hakuun. Laboratorio rahoittaa pääasiassa Intel ja Microsoft.

Berkeley-tutkijat yrittävät tuoda rinnakkaiseloa korvaamalla alunperin kirjoitetut koodipituudet komentosarjakieltä, kuten Python ja Ruby on Rails, uudella alitasoisella C-koodilla. Uusi koodi keskittyy erityisesti tiettyihin tehtäviin, kuten analysoimalla tiettyä äänimallia puheentunnistushakemuksessa, Patterson sanoi haastattelussa keskiviikkona. Koodi on kirjoitettu käyttäen OpenMP- tai MPI-ohjelmointityökaluja, jotka on suunniteltu kirjoittamaan koneen tason rinnakkaissovelluksia.

Asiantuntijat tarvitsevat kirjoittaa tämän erittäin erikoistuneen rinnakkaisen koodin, Patterson sanoi. Se vähentää kehitysaikaa ohjelmoijille, jotka muutoin käyttävät Pythonä ja Ruby on Railsia, jotka helpottavat sovellusten kehittämistä, mutta eivät keskity rinnakkaisuuteen, Patterson sanoi haastattelussa. Laboratorio on osoittanut, että tehtäväkohtainen suoritustaso hyppää 20-kertaisella alitasoisella konekoodilla.

Rinnakkaisuuden käsite ei ole uusi, ja se on ollut lähinnä suurtehoisen tietojenkäsittelyn verkkotunnus. Alhainen rinnakkaisuus on aina ollut mahdollista, mutta ohjelmoijat ovat joutuneet pelottavaan tehtävään ohjelmistotyökalujen ja jatkuvasti muuttuvien laitteistoympäristöjen puutteella.

"Langat on synkronoitava oikein", sanoo sähkötekniikan professori Christos Kozyrakis tietojenkäsittelytieteitä Stanfordin yliopistossa esityksen aikana ennen paneelikeskustelua. Koodi on kirjoitettava muotoon, joka käyttäytyy ennustettavasti ja laskee, kun lisää ytimiä tulee saataville.

Kääntäjät on myös tehtävä älykkäämpiä ja riittävän havaittaviksi, jotta jaksot hajotetaan ajoissa niin, että lähdöt vastaanotetaan oikeassa järjestyksessä, Kozyrakis sanoi. Epäonnistuneet yritykset rakentaa rinnakkaisuus koodiksi saattavat aiheuttaa bugisen ohjelmiston, jos tiettyjä laskutoimituksia ei suoriteta tietyssä järjestyksessä. Tämä on ongelma, jota yleisesti kutsutaan rotuolosuhteiksi. Kooderit voivat myös oppia käyttämään useita ohjelmointityökaluja paremman rinnakkaisuuden saavuttamiseksi, panelistit sanoivat.

"Ei ole laiska-poika lähestymistapaa ohjelmointiin", Patterson sanoi konferenssissa.

Muisti ja verkon latenssi ovat aiheuttaneet pullonkauloja tiedonsiirtonopeudessa, mikä voisi estää rinnakkaisen tehtävän suorittamisen. Eri arkkitehtuureja varten on myös erilaisia ​​ohjelmointityökaluja, jotka vaikeuttavat kaikkien saatavilla olevien laitteistojen hyödyntämistä.

Useilla tällä hetkellä saatavilla olevilla rinnakkaismuotoilla on tarkoitus hyödyntää CPU: n ja grafiikan käsittelylaitteiden rinnakkaiskäsittelyominaisuuksia järjestelmän suorituskyvyn parantamiseksi. Apple, Intel, Nvidia ja Advanced Micro Devices ovat yrityksiä, jotka edistävät OpenCL: ia, rinnakkaista ohjelmointitoimintaa, jota tuetaan Applen tulevalla Mac OS X 10.6 -käyttöjärjestelmällä, jota kutsutaan myös Snow Leopardiksi, joka julkaistaan ​​perjantaina. OpenCL kilpailee Microsoftin kanssa, joka edustaa omia DirectX-rinnakkaisohjelmointityökalujaan ja Nvidia, joka tarjoaa CUDA-kehyksen.

OpenCL sisältää C: n kaltaisen ohjelmointikielen, jossa on sovellusrajapintoja (application programming interfaces) prosessorin ytimiä ja muita resursseja. OpenCL voi auttaa Mac OS: ta purkamaan videon nopeammin jakamalla pikselienkäsittelyä useissa prosessori- ja grafiikkakäsittely-yksiköissä järjestelmässä.

Kaikki nykyiset työkalut ovat suunnattu erilaisiin ohjelmistokehyksiin ja hyödyntävät erilaisia ​​resursseja, Patterson sanoi. Esimerkiksi OpenCL on suunnattu enemmän tehtävien suorittamiseen GPU: ita. Ominaisia ​​malleja, kuten DirectX: tä, on vaikea ottaa käyttöön heterogeenisissä tietojenkäsittelyympäristöissä, kun taas jotkut mallit kuten OpenCL soveltuvat vain tiettyihin ympäristöihin, jotka käyttävät GPU: ita.

"En usko, että [OpenCL] on hyväksytty kaikkiin arkkitehtuureihin." Patterson sanoi. "Tarvitsemme tällä välin yrittää muita asioita", kuten hän pyrki parantamaan ohjelmointimalleja yleisesti käytetyillä kehitystyökaluilla, kuten Ruby on Rails.

Vaikka yleisön jäsenet huomauttivat, että rinnakkaisuus on ollut ongelma vuosikymmeniä, panelistit sanoivat, että yliopistot ovat nyt ottamassa uutta lähestymistapaa monien ohjelmointityökalujen työskentelyyn rinnakkaisuuden saavuttamiseksi. Vuosien rahoituksen jälkeisen kehityksen jälkeen hallitus kiinnittää enemmän huomiota rinnakkaiseen prosessointiin rahoittamalla siihen liittyviä ohjelmia.

Kozyrakis sanoi, että Stanford on perustanut laboratorion, jonka tavoitteena on "tehdä rinnakkain sovellusten kehittäminen käytännölliseksi [massojen] puolesta vuoteen 2012 mennessä Tutkijat työskentelevät Intelin, AMD: n, IBM: n, Sunin, Hewlett-Packardin ja Nvidian kaltaisten yritysten kanssa.

Kehittäjien välitön tehtäväkokeesta voisi olla yrittää muuntaa vanhoja vanhoja koodia rinnakkain modernin sirun, Berkeleyn Patterson sanoi. Pari yritykset tarjoavat automaattisen rinnakkaisvalmistelun, mutta alkuperäisen koodin kirjoittaminen uudelleenkirjoittamiseen ja kääntämiseen peräkkäisestä toteutuksesta voi olla suuri haaste.

"Näillä alueilla on rahaa," Patterson sanoi.