Vad är gpgpu?

Den senaste tiden har det i media pratats mycket om general purpose graphics processing unit, eller gpgpu som det förkortas. Men vad är egentligen gpgpu? Hur fungerar det och kan man som entusiast ha någon nytta av det? Det skall vi ta reda på i denna artikel.

Moderna Direct X 9-kompatibla grafikprocessorer är mycket avancerade. Exempelvis har Radeon X1900-serien 48 pixel shader-processorer som hanterar 32-bitarsberäkningar. Genom att använda specifik programvara kan man använda denna enorma flyttalsprestanda, men man kan inte använda den för att köra ett program eller operativsystem då den inte är anpassad för x86-beräkningar. Dagens grafikprocessorer kan ses som ett flyttalsberäkningsmonster i specifika situationer.

Varför har gpgpu-fenomenet dykt upp just nu då? Tidigare har Ati använt sig av en 24-bitars flyttalsenhet vilket inte fungerar bra alls i gpgpu-syfte. Nvidias FX-serie hade visserligen 32-bitars flyttalsenhet, men arkitekturen och prestandan var inte speciellt bra i gpgpu-applikationer. Atis Radeon X800-serie och Nvidias Geforce 6-serie hade förutsättningarna då båda tillverkare förmodligen insåg att man kan använda grafikkort i GPGPU-syfte på allvar. Med dagens Radeon X1950- och Nvidia Geforce 7950-baserade grafikkort är förutsättningarna riktigt bra för general purpose gpu. Flyttalsprestandan är enorm på dessa grafikkort.

När vi skrev denna artikel läste vi en hel del om gpgpu och Ati har enligt flera källor prestandaövertaget i skrivande stund. Radeon X1900-serien har en mycket avancerad "branching-enhet" som köar beräkningar bättre samt en bättre minnesarkitektur med sin ringbuss på 512 bitar. Hur stort gpgpu kan bli återstår att se. Det har spekulerats en hel del kring om det delvis var skälet till att AMD köpte upp Ati tidigare i år.

I och med Torrenza-initiativet av AMD har en ny marknad för gpgpu öppnats. Torrenza syftar bland annat till att öppna upp AMD:s sockel F för fler applikationer än just processorer. Teoretiskt skulle man kunna ta en Radeon X1950-kärna, förpacka om den för sockel F och låta den köras parallellt med en Opteron-processor. Tillverkare som IBM, Sun, Cray och Fujitsu har visat stort intresse för Torrenza-initiativet och det är möjligt att vi inom ett till två år kommer att se rena flyttalsenheter på moderkort för Opteron-plattformen. Men vad kan man då använda gpgpu till praktiskt? Nedan följer ett par kategorier, men det finns en mängd användningsområden.

Forskning

Detta är kanske den största biten som gpgpu kan användas till. Extremt avancerade matematiska beräkningar kräver mycket processorkraft och här kan grafikprocessorer vara mycket användbara. Bland annat har det visats att man kan emulera en 44-bitars flyttalsenhet på en 32-bitars grafikprocessor. Ati släppte nyligen en beta-drivrutin som tillåter att man använder Folding @ Home på sin grafikprocessor. Detta projekt syftar till att hitta protein som kan hjälpa botandet av cancer, Alzheimers och Parkinson. Den omtalade fysikmotorn Havok 4 använder grafikprocessorn för att beräkna fysik i spel. Exemplen är många.

Ljudprocessor

Man kan med rätt applikation låta en grafikprocessor räkna ut akustik i rum mycket snabbare än en vanlig processor. Ett exempel på praktisk användning är Marcin Jedrzejewski som studerar på Polish Japanese Insitute of Information Technology som skapat ett program som använder grafikprocessorn för att räkna ut akustik, eko och så vidare. Gpgpu kan också användas för att skapa en riktigt kraftfull ljudprocessor. Företaget Bionicfx har tidigare presenterat en teknik för att göra om Nvidia-baserade grafikkort till en ljudprocessor. Enligt Bionicfx är en Nvidia-grafikprocessor är cirka sju gånger snabbare än en vanlig Intel/AMD-processor.

Databaser

Gpgpu kan vara riktigt intressant i databassammanhang. Servrar som har hand om databaser brukar normalt ha 2–32 processorer på grund av att man behöver parallellism för databaser. Grafikprocessorer är optimerade för parallellism vilket gör dem lämpliga för databaser. Enligt algoritmen GPU Terasort används grafikprocessorn till minnes- samt beräkningsintensiva saker och sedan processorn och minnena till enklare saker. Denna algoritm är väsentligt snabbare än cpu-anpassade databasalgoritmer och visar kraften i dagens grafikprocessorer. Läs mer om GPU Terasort här.

Analys av bilder

Att rekonstruera en bild som tagits med röntgen tar lång tid på grund av den stora mängden data som finns på en sådan bild. Fang Xu och Klaus Mueller på Stony Brook University har visat att de senaste grafikprocesserna kan användas för att rekonstruera röntgenbilder, men också andra typer av bilder som är tagna på exempelvis sjukhus. För tillfället används högst specialiserade asic-processorer (application-specific integrated circuit) men grafikprocessorer kan enligt studenterna vara upp till två gånger snabbare än dessa asic:er. Läs mer om deras projekt på denna webbplats.

För att få en överblick över gpgpu-marknaden kontaktade vi Magnus Wendt. Han utvecklar ansiktsigenkänningsprogramvara till den kommande bildsökmotorn Polarrose.com och har i samband med det undersökt möjligheterna att implementera algoritmer på gpu.

SC: Vilken marknad har mest användning för gpgpu just nu tycker du?

Gpu:ns stora styrka är att utföra enkla algoritmer på stora mängder data samtidigt. Men den har också stora begränsningar som hindrar att den används till generell databehandling. Den som någon gång har skrivit ett datorprogram vet hur en for-loop fungerar. En enkel programsats som multiplicerar ihop två vektorer elementvis kan skrivas så här (som pseudokod):

for i = 0..vectorsize {
c[i] = a[i] * b[i];
}

Tittar man på den koden ser man att varje varv i loopen är fristående från de andra, så istället för att utföra beräkningarna en efter en kan man lika gärna göra dem samtidigt. Detta är idealiskt för en gpu som kan distribuera problemet på ett stort antal beräkningsenheter som kör parallellt.

Tittar vi på det ännu enklare programmet

for i = 0..vectorsize {
c = a[i] + c;
}

som summerar elementen i en vektor är situationen annorlunda. Det går inte längre att utföra ett varv i loopen innan man har resultatet från föregående beräkning och man kan därför inte parallellisera looparna. gpu:n har genast förlorat sin styrka på ett väldigt enkelt problem! Man får försöka arbeta sig runt det bäst man kan genom att formulera om lösningen. Till exempel kan man summera ihop elementen två och två för att få en vektor som är hälften så stor och repetera den proceduren tills man bara har ett element kvar. Den lösningen innebär fortfarande att man utför loopar som inte går att parallellisera, men antalet är i alla fall kraftigt reducerat.

Gpu:er är extremt snabba på att räkna på mycket stora vektorer så länge vektorelementen i resultatvektorn inte beror på andra element i samma resultatvektor. Det är en ganska betydande begränsning men det finns likväl en rad problem som är väldigt lämpade för parallellisering.

Partikelsystem i fysikmotorer består av ett stort antal datapunkter som inte inte påverkar varandra under samma tidssteg. Partiklar interagerar i och för sig med varandra genom kollisioner och så vidare, men dessa beräknas utifrån data från föregående tidssteg vilket inte utgör något problem. Vid videokomprimering/-uppspelning utförs många beräkningar per pixel/blockelement som lämpar sig ypperligt för parallellisering.

Mer avancerade metoder inom datorgrafik som stäcker sig bortom de polygonbaserade spelmotorer som vi är vana vid. (Det låter kanske självklart att grafikkort skall kunna hantera grafik, men renderingsmetoder som till exempel raytracing och radiosity rendering skiljer sig markant ifrån hur grafikkorten normalt hanterar grafik.) Till och med databassökning har faktiskt implementerats med stor framgång på gpu. Många vetenskapliga/ingenjörsmässiga tillämpningar som exempelvis flödesdynamisla beräkningar är parallella i sin utformning.

SC: Det sägs att Atis grafikprocessor för tillfället är snabbast när det gäller gpgpu, håller du med?

Jag har inte jämfört hårdvara från både Ati och Nvidia, så jag kan inte uttala mig om det, men jag kan i alla fall säga att Ati har tagit det första steget mot en gpu-api (application programming interface, reds anm.) som inte är avsedd för grafik. Den låter programmeraren skriva enklare och effektivare program eftersom det gör att man slipper ta omvägen via en grafik-api. Samtidigt ger programmeraren större kontroll över beräkningsenheterna.

SC: Folding @ Home-projektet har nyligen börjat använda sig av gpgpu, tror du fler distribuerade projekt, exempelvis Seti @ Home, inom kort kommer att följa detta exempel?

Både Folding @ Home och Seti @ Home är projekt som lånar ens datorkraft för att tugga stora mängder data med enformiga beräkningar. De är perfekt lämpade för gpu:er och jag skulle bli mycket förvånad om Seti inte följer Foldingprojektets exempel.

SC: Hur tror du gpgpu-marknaden kommer se ut om fem år?

Några exakta tidsramar kan jag inte ge, men vi vet ju att AMD har köpt upp Ati. Vi vet också att Intel nyligen har investerat i skaparna bakom Power VR-tekniken och det förekommer rykten om att dom kommer att lägga ett bud på Nvidia. Det är ganska frestande att gissa att gpu:n kommer att slås samman med cpu:n i framtiden. Gpu-delen av cpu:n kommer även forsättningsvis huvudsakligen att användas till grafik, men det är gpu:ns potential för generella databeräkningar som motiverar en sådan sammansmältning ifall den äger rum.

SC: Ati Firestream-korten har funktioner som inte vanliga Radeon-grafikkort har, vilka är dessa funktioner?

Jag kan inte kommentera Firestream-korten eftersom dessa täcks av en nda (sekretessavtal, reds anm.) som jag har skrivit under.

SC: Tror du att gpgpu kan användas för exempelvis komprimering av data på persondatorer?

Tveklöst.

Var står Intel?

AMD har många gånger nämnts i denna artikel. Men var står Intel? De har i år anställt personer som hjälper till med utveckling av ”nästa generations grafikprocessorer”. De har även investerat stora pengar i företaget Imagination Technologies som bland annat har skapat Power VR-arkitekturen, för er som kommer ihåg Kyro och Kyro 2-grafikkorten. Intel öppnade likt AMD nyligen tekniken bakom sin systembuss för tredjepartstillverkare, men enligt flera källor är Intels systembuss svårare att designa gpgpu-produkter på än AMD:s Hypertransport. Enligt rykten skall Intel lansera en seriell buss liknande Hypertransport med namnet Common Systems Interconnect (CSI) som förväntas dyka upp på processorkärnan Tukwila år 2008/2009.

Varför är general purpose gpu så pass omtalat? Först och främst handlar det om ren prestanda i diverse situationer. Från vädermodellering, ekonomiska prognoser, simulationer, fysikberäkningar till generell rendering är gpgpu högst intressant. Dagens grafikprocessorer är helt enkelt extremt snabba jämfört med processorerna, och med rätt arkitektur och teknik kan man skapa produkter som är användbara. Nästa generations grafikkort från Ati och Nvidia (R600 respektive G80) kommer säkerligen att vara designade arkitekturmässigt för att bättre klara av gpgpu-applikationer på grund av grafikprocessorns fördel jämfört med den vanliga processorn.

Gpgpu är ett relativt nytt fenomen som vi säkerligen kommer att se mer av i framtiden.

Kommentarer till artikeln

12 debattinlägg

75

Intel bekräftar sex kärnor för "Coffee Lake" – kräver 300-seriens styrkretsar

I enlighet med tidigare rykten bekräftas nu modeller med sex kärnor i Intels åttonde generations Core-processorer för stationära datorer, där dessa kräver nya moderkort. Läs mer

21

Final Fantasy XV släpps för PC/Windows 2018

Under årets Gamescom-mässa tillkännager Square Enix att Final Fantasy XV släpps till PC nästa år, med en rad plattformsexklusiva funktioner som stöd för 4K-upplösning. Läs mer

39

Asus tillkännager ROG Strix RX Vega 64 och RX Vega 56

Som den första tillverkaren på marknaden tillkännager Asus en egen version av AMD Radeon RX Vega, vilken bestyckas med företagets ROG Strix-kylare. Läs mer

11

Tre vinner sluten vattenkylare från Be Quiet

För en tid sedan fick SweClockers medlemmar i uppdrag att ta fram en snärtig slogan för Be Quiets senaste vattenkylare Silent Loop 360 mm. Nu har juryn utsett tre vinnare. Läs mer

15

Microsoft lanserar Xbox Design Lab i Sverige

Efter att tidigare endast funnits tillgänglig på den amerikanska marknaden expanderas Xbox Design Lab till Sverige, tillsammans med ett flertal andra länder. Läs mer

35

HTC Vive prissänks – kostar nu 6 700 kronor

Kort efter att Oculus erbjudit Rift till ett kraftigt reducerat pris sänker nu även HTC priset på Vive, där denna nu kostar cirka 6 700 kronor. Läs mer

47

Intel avtäcker åttonde generationens Core – Kaby Lake Refresh för Ultrabook

Med fyra kärnor för Ultrabook introducerar Intel åttonde generationens Core med arkitekturen Kaby Lake Refresh, som framöver får sällskap av Coffee Lake och Cannon Lake. Läs mer

Ta del av erbjudanden under Back 2 School!

  • igår 11:30

På jakt efter en ny dator till årets studier eller vill du bara ta del av heta erbjudanden och dela med dig av fynd till andra medlemmar? Besök SweClockers specialsida som samlar alla Back 2 School-tips! Läs mer

58

Microsoft öppnar för förbokning av Xbox One X

Efter att tidigare under året avtäckt spelkonsolen Xbox One X meddelar nu Microsoft att denna är tillgänglig för förbokning, med ett rekommenderat pris på 5 400 kronor. Läs mer

42

Plex ändrar användarvillkoren

Mjukvaran Plex gör strömmande och katalogiserande av film enklare och används av många. Nu ändrar bolaget användarvillkoren och skillnader i sekretessinställningarna väcker känslor. Läs mer

23

SweClockers firar skolstarten med gratis annonsering i Marknad

Som det gamla ordspråket säger; efter sommar kommer skolgång. För att hjälpa teknikälskande studenter på traven bjuder SweClockers under hela helgen på gratis annonsering. Läs mer

16

Pixel art: Banzai Bill på trätavla

Pärlor blir konst när "andreas_dock" visar sin senaste skapelse, denna gång med Banzai Bill som motiv. Läs mer