Webbplatser

Parallelism behöver mördareansökan för massanpassning

Sita Sings the Blues

Sita Sings the Blues
Anonim

Tillägget av flera kärnor till mikroprocessorer har skapat ett betydande tillfälle för parallell programmering, men en mördare applikation behövs för att driva konceptet i det vanliga, sade forskare under en paneldiskussion vid Hot Chips-konferensen.

De flesta programvarorna idag skrivs fortfarande för sekventiell körning och programmeringsmodellerna behöver bytas för att dra nytta av snabbare hårdvara och ett ökande antal kärnor på marker, sa paneldeltagare. Programmerare behöver skriva kod på ett sätt som gör att uppgifterna kan delas upp och utföras samtidigt över flera kärnor och trådar.

Mycket fokus och pengar har gått in på att bygga snabba maskiner och bättre programmeringsspråk, säger David Patterson, en dator vetenskapsprofessor vid University of California, Berkeley, på konferensen i Stanford på måndag. Jämfört liten uppmärksamhet har ägnats åt att skriva skrivbordsprogram parallellt, men applikationer som spel och musik kan ändra det. Användare av sådana program kräver den bästa realtidsprestandan, så programmerare kan behöva anta modeller som bryter upp uppgifter över flera trådar och kärnor.

Till exempel kan nya former av parallellitet förbättra kvaliteten på musik som spelas upp på datorer och smartphones, sade Patterson. Kod som gör ett bättre jobb med att skilja kanaler och instrument kan i slutändan skapa ljud genom parallell interaktion.

University of California, Berkeley, har ett parallellt datalaboratorium där forskare försöker förstå hur applikationer används, vilket kan hjälpa till att optimera kod för handhållna enheter. Ett projekt syftar till att få surfning i skrivbordskvalitet till handhållna enheter genom att optimera kod baserat på specifika uppgifter som rendering och analysering av sidor. Ett annat projekt innebär att man optimerar kod för snabbare hämtning av hälsoinformation. Labbet finansieras främst av Intel och Microsoft.

Berkeleys forskare försöker parallellisera genom att ersätta bitar av kod som ursprungligen skrivits med hjälp av skriptspråk som Python och Ruby on Rails med ny låg C-kod. Den nya koden fokuserar specifikt på specifika uppgifter som att analysera ett specifikt röstmönster i en taligenkänningsapplikation, sade Patterson i en intervju onsdag. Koden skrivs med OpenMP eller MPI, applikationsprogrammeringsgränssnitt som är utformade för att skriva parallella applikationer på maskinnivå.

Experter måste skriva denna mycket specialiserade parallella kod, sade Patterson. Det minskar utvecklingstiden för programmerare som annars skulle använda Python och Ruby on Rails, vilket gör applikationsutvecklingen lättare, men fokuserar inte på parallellitet, sade Patterson i intervjun. Labbet har visat en specifik uppdragshoppning med en faktor 20 med maskinens lågkodskod.

Konceptet parallellitet är inte nytt och har mestadels varit domänen för högpresterande datorer. Låg nivåer av parallellitet har alltid varit möjliga, men programmerare har mött en skrämmande uppgift med brist på programvaruverktyg och ständigt föränderliga hårdvarumiljöer.

"Trådar måste synkronisera korrekt", säger Christos Kozyrakis, professor i elteknik och datavetenskap vid Stanford University, under en presentation före paneldiskussionen. Koden måste skrivas i en form som uppträder förutsägbart och skalar när fler kärnor blir tillgängliga.

Kompilatörer måste också bli smarta och vara uppmärksamma för att bryta upp trådar i tid, så att utmatningar mottas i rätt ordning, sa Kozyrakis. Felaktiga försök att bygga parallellitet i kod kan skapa buggy-programvara om specifika beräkningar inte exekveras i en viss ordning. Det är ett problem som vanligen kallas rasförhållanden. Codrar kan också behöva lära sig hur man använder flera programmeringsverktyg för att uppnå finare nivåer av parallellitet, sade paneldeltagare.

"Det finns inget lata pojke tillvägagångssätt för programmering", sade Patterson vid konferensen.

Minne och nätverksfördröjning har skapat flaskhalsar i dataflödet, vilket kan negera prestationen som uppnås genom parallell uppdragsutförande. Det finns också olika programmeringsverktyg för olika arkitekturer, vilket gör det svårt att dra nytta av all tillgänglig maskinvara.

Många parallellverktyg som finns tillgängliga idag är utformade för att utnyttja processornas parallella bearbetningsförmåga och processorer för att förbättra systemets prestanda. Apple, Intel, Nvidia och Advanced Micro Devices är bland de företag som marknadsför OpenCL, en parallell programmeringsmiljö som kommer att stödjas i Apples kommande Mac OS X 10.6-operativsystem, även kallat Snow Leopard, som beräknas för release Friday. OpenCL konkurrerar med Microsoft, som främjar sina proprietära DirectX parallella programmeringsverktyg och Nvidia, som erbjuder CUDA-ramverket.

OpenCL innehåller ett C-liknande programmeringsspråk med API (applikationsprogrammeringsgränssnitt) för hantering av distribution av kärnor över hårdvaror som processorkärnor och andra resurser. OpenCL kan hjälpa Mac OS att avkoda video snabbare genom att distribuera pixelbehandling över flera CPU- och grafikbehandlingsenheter i ett system.

Alla befintliga verktyg är inriktade på olika mjukvaramiljöer och utnyttjar olika resurser, sa Patterson. OpenCL, till exempel, är inriktat mer mot utförande av uppgifter på GPU: er. Egenutvecklade modeller som DirectX är svåra att distribuera över heterogena datormiljöer, medan vissa modeller som OpenCL anpassas till endast specifika miljöer som bygger på GPU.

"Jag tror inte [OpenCL] kommer att omfamnas över alla arkitekturer." Patterson sa. "Vi behöver under tiden försöka andra saker", som att försöka förbättra programmeringsmodellerna med vanliga utvecklingsverktyg, som Ruby on Rails, säger han.

Medan publiken påpekade att parallellitet har varit ett problem för årtiondena sa paneldeltagarna att universitet nu tar ett nytt tillvägagångssätt att arbeta på flera programmeringsverktyg för att möjliggöra parallellitet. Efter år med finansiering av chiputveckling, lägger regeringen också större uppmärksamhet åt parallell bearbetning genom finansieringsrelaterade program.

Kozyrakis sa att Stanford har etablerat ett labb som syftar till att "göra parallell applikationsutveckling praktiskt för massorna" senast 2012 Forskarna arbetar med företag som Intel, AMD, IBM, Sun, Hewlett-Packard och Nvidia.

Ett omedelbart uppgiftstest för utvecklare kan vara att försöka konvertera befintlig arvskod parallellt för exekvering på moderna chips, Berkeleys Patterson sa. Ett par företag erbjuder automatisk parallellisering, men omskrivning och sammanställning av arvskoden som ursprungligen skrevs för sekventiell utförande kan vara en stor utmaning.

"Det finns pengar att göra på dessa områden", säger Patterson.