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

0

Testpilot: MSI Z170A Gaming M7

MSI satsar på mängder av finesser och lätta överklockningsfunktioner med sitt moderkort Z170A Gaming M7. Testpiloten David Rönnlund sätter tänderna i modellen och ser vad den går för. Läs mer

14

Nvidia förbereder Geforce GTX 1060 3 GB med grafikkretsen GP104

Defekta grafikkretsar som inte håller måttet för Geforce GTX 1080 och GTX 1070 ska användas till 3 GB-varianten av GTX 1060. Det här framgår av en ny ID-slinga i Nvidias senaste drivrutiner. Läs mer

19

Seagate lanserar portabla hårddiskar under varumärket Maxtor

Efter att för ett antal år sedan lagt ned varumärket Maxtor återupplivas det nu av Seagate. Maxtor tar över Seagates budgetsegment av portabla hårddiskar efter Samsung. Läs mer

Spelpaket med Omen by HP samt mus och hörlurar

  • idag 12:00

Geeks Julkalender fortsätter, och när femte luckan öppnas avslöjas ett förmånligt erbjudande från HP innehållande en bärbar speldator, mus och hörlurar. Läs mer

14

HTML5 blir standard i Google Chrome

Google är ett av många företag som börjat överge Flash för att övergå till HTML5 och nu blir den sistnämnda standard i företagets webbläsare Chrome. Läs mer

12

AVOID av "timpelay"

På finalen av Cooler Master Casemod Championship på Dreamhack Winter 2016 kom det farliga bygget Avoid på en hedervärd fjärdeplats. Spana in bygget i SweClockers galleri! Läs mer

27

Direkt från Kappa Bar med Geeks Gaming

Spelsällskapet Geeks Gaming intar Kappa Bar för häng och god mat. Givetvis direktsänds hela kvällen, och gänget uppdaterar löpande med bilder. Läs mer

42

Test: Corsair Crystal 570X RGB

Corsair storsatsar på konceptet härdat glas och flerfärgsbelysning med sitt nya chassi Crystal 570X RGB. Modellen tar idag plats i SweClockers testlabb för en rejäl videogenomgång. Läs mer

55

SSD-priser väntas fortsätta stiga på grund av minnesbrist

På grund av komponentbrist och ökad efterfrågan väntas priserna på SSD-enheter öka, vissa med så mycket som 20 procent. Bristen tros hålla i sig ända till slutet av nästa år. Läs mer

72

Amazon lanserar Snowmobile – tjänst för att flytta stora mängder data via långtradare

Amazons nya tjänst gör det möjligt för företag att flytta upp till 100 PB data åt gången till deras molntjänster, vilket görs genom att den fraktas i 14 meter långa långtradare. Läs mer

10

Gött häng med Geeks Gaming på Kappa Bar

Det vankas stream i annorlunda tappning med Geeks Gaming. På lördag besöker gänget e-sportbaren Kappa Bar i Göteborg, och givetvis blir det en helkväll med direktsändning på Twitch. Läs mer

45

Mass Effect: Andromeda visar grafikmuskler

Nästa år väntar ett nytt äventyr i Mass Effect-universumet där Andromedagalaxen står som spelplan. Nu visar Bioware och EA för första gången ett videoklipp från själva spelet. Läs mer