Artikel top billede

(Foto: Computerworld)

Grafikkort kan du godt regne med ...

De nyeste grafikkort i dag kan nemt overgå musklerne i hovedprocessoren på den computer, de sidder i. Det er også gået op for både forskningen og erhvervslivet.

Af Palle Vibe, Alt om Data

Denne artikel er oprindeligt bragt på Alt om Data. Computerworld overtog i november 2022 Alt om Data. Du kan læse mere om overtagelsen her.

Mange grene af samfundet anvender i dag computere til at løse stadigt større og mere komplicerede problemer, og det kræver selvsagt stadigt mere af computerens kræfter og formåen. Men en almindelig cpu (Computer Processing Unit) har nu engang ikke ubegrænset regnekraft. Derfor fylder producenterne ofte adskillige processorer (kerner) i den samme computer.

Men måske skulle alle brugere af kraftige computere vende blikket mod det ellers på mange måder oversete gpu-grafikkort (Graphic Processing Unit), der reelt er kraftigere end de fleste standardprocessorer. De fleste transistorer, der stadig – om end nu i nanostørrelse – er en af hovedkomponenterne i digital teknologi, arbejder nemlig forskelligt i en cpu og en gpu.

I en almindelig cpu bruger de ikke bare kræfter og energi på selve problemet, men holder også styr på, hvad der skal ske næste gang, hvilke data der blev læst sidst, og så videre. Altså en hel masse bogføring, hvor selve beregningen måske kun udgør 1 % af arbejdet. I en gpu bliver næsten alle transistorkræfter derimod brugt til regnearbejde.

Dansk forskningscenter bygger egen gpu-computer

Det danske forskningscenter “Glas og Tid” har siden 2008 benyttet Nvidia grafikkort og CUDA-programmeringsmodellen til beregninger. Centret har udviklet specialdesignede algoritmer, som udnytter de forskellige muligheder og sammensat en ”supercomputer” med omkring 90 grafikkort, hvilket udmønter en beregningskapacitet på den pæne side af 90 teraflops/sek.

Det danske firma udnytter gpu-computeren til bl.a. at forstå seje væskers dynamik og simulering af forskellige molekylemodeller. Dette kan ifølge firmaet ikke gøres med cpu-baserede simuleringer, der kun kan foretage beregninger af meget korte tidsrum typisk ca. 10 nanosekunder, og på så kort tid kan mange egenskaber ikke studeres.

1500 mikroprocessorer i en gpu.

Gpu-processorer er derudover først og fremmest udviklet til at håndtere pixels og grafik i realtid i forbindelse med pc-spil, animationer og computergrafiske fremstillinger og eksempelvis til lynhurtigt at rendere 3D-billeder. Dermed er grafik-processoren god til enorme mængder parallelle beregninger. Omvendt er cpu’en god til serielle opgaver.

En normal kraftig cpu kan typisk præstere 20-60 gigaflops (én gigaflop er en mia. decimalberegninger eller ”floating-point opera-tions per second”), mens en kraftig gpu let kan præstere 1000 gigaflops. Et moderne grafikkort eller gpu er nemlig opbygget af mange, men simple mikroprocessorer. Det kan let dreje sig om 1500 mikroprocessorer eller flere og det til en pris på omkring et par kroner pr. processor.

Sagen er, at mens cpu’en i en almindelig computer som oftest indeholder fire kerner med 512 standardprocessorer, indeholder et grafikkort måske 4000 kerner, hvilket giver mulighed for i princippet at afvikle 4000 beregninger ad gangen. Og selv om moderne cpu’ere nu måske har to, tre eller hele fire kerner, er det meste software stadig kodet til blot én kerne.

Sammenligning af ydeevne mellem en cpu fra Intels tidligere high end cpu-serie Sandy Bridge og Nvidias navnkundige gpu-processor (GeForce GTX-680). Jo flere GFLOP/s jo hurtigere er processoren.

Og det er softwaren, der afgør, hvad du kan bruge de to typer af ”regnemaskiners” kræfter til. For desværre kan du ikke bare tage ethvert softwareprogram ned fra hylden og afvikle det på en samling grafikkort i stedet for en cpu. Softwaren skal være programmeret til det. Hvis computeringeniører derfor førhen ville anvende grafikkort til beregninger, skulle de først foretage en ganske besværlig programmering, hvor de eksempelvis skulle ”oversætte” fysiske størrelser som f.eks. en partikels hastighed og position til pixelkoordinater på en skærm for at få grafikkortet til at føle sig hjemme og udføre de ønskede beregninger.

Imidlertid kan mange udbredte videnskabelige programmer som eksempelvis Matlab m. fl. godt køre gpu’ere i dag. Det har bl.a. årsag i, at Nvidia, der er en af verdens føren-de udviklere og producenter af grafikkort, i 2006 lancerede et nyt og meget nemmere interface mellem programmører og grafikkort og dermed lettede programmeringen af nye ”gpu-venlige” programmer gevaldigt.

Nvidia døbte sin programmeringsmodel CUDA (Compute Unified Device Architecture). Siden er også en ny og åben standardmodel ved navn openCL blevet udviklet. Den er dog rimeligt kompliceret, og programmørerne skal kende deres håndværk (men det gør de i reglen også).

Efterhånden er det dog også blevet gørligt for ikke-eksperter at udnytte de fleste af de muligheder, en gpu tilbyder, og opnå betydeligt hurtigere beregninger uden at besidde speciel ekspertviden og programmeringserfaring. I dag findes der også interface til såvel Python som Java og Fortran, så du kan nu programmere software til afvikling på gpu i dit ”favoritsprog”. Grafikkortets ressourcer er dermed nu tilgængelig for alle (om end du stadig må ned “på bit-niveau”, hvis du vil opnå den allerhurtigste kode).

Og nu har også et softwareteam fra North Carolina State University angiveligt bygget yderligere bro mellem de to forskellige verdener med en ny compiler (et computerprogram, der automatisk kan oversætte fra et programmeringssprog til et andet). Og det gør det relativt nemt at udnytte de mange kræfter i grafikkortet.

De foreløbige test viser, at en opgave kan løses 30 % hurtigere med deres compiler holdt op mod Nvidias Cublas og op til 128 gange hurtigere sammenlignet med en cpu. Skal du som nævnt udføre mange og forholdsvis enkle parallelle beregninger, er grafikkort derfor nok det hurtigste værktøj. Angiveligt kan en gpu i denne sammenhæng være omkring 100 gange hurtigere end en cpu computerprocessor.

Hackere bruger også grafikkort

Hackere har desværre også fundet ud af, at regnekraften i moderne grafikkort gør det til en leg at gætte kodeord (der ikke er opbevaret ordentligt). Hvis en hacker på en hjemmeside får adgang til den bagvedliggende database, hvor alle brugernes kodeord ligger opbevaret, vil grafikkortet i en moderne gamer-pc have rigeligt med kræfter til i kombination med specialiseret software at præstere alle de gæt, der skal til for at knække praktisk talt ethvert kodeord i basen.

Med det rigtige programmeringsværktøj er det også relativt hurtigt for en angriber at proppe alle tænkelige værdier ind i sin hacker-algoritme og altså udføre et såkaldt brute force-angreb (dvs. klø på, til det giver pote).

Grafikkort beregner olie, og det er ikke gas

Som der er forskel på problemer, er der selvfølgelig også forskel på den måde, de skal angribes på og på de værktøjer, der skal bruges. Energiselskaber anvender forskellige beregningsmodeller til at finde ud af, hvor og hvordan de bedst kan bore efter olie og gas med størst muligt udbytte og fordel.

Og firmaet Stone Ridge Technology, der netop bl.a. udvikler software til opsøgning af sådanne energiforekomster, har udviklet testprogrammet Echelon. Dette program kan simulere et potentielt olie- og gasfelt med én milliard målepunkter, der samlet giver en beskrivelse af reservoirets porøsitet og permeabilitet. Problemet er kun at finde hardware, der er effektiv nok til at behandle et så astronomisk antal data.

En visualisering af et typisk olie- og gasfelt renderet af en supercomputer.

Tilbage i februar satte det kæmpestore internationale olie- og gasselskab ExxonMobil beregningsrekord med en supercomputer med i alt 716.800 processorkerner. Det svarer til at udnytte den samlede regnekraft fra 22.400 computere med hver 32 processorer og forudsatte adskillige forbedringer i softwaren, som blev lavet i samarbejde med National Center for Supercomputing Applications. Til gengæld var denne simulering af et typisk olie- og gasfelt ifølge ExxonMobil tusind gange hurtigere end de konventionelle analysemetoder, der ellers har været brugt i olieindustrien.

Men i april 2017 blev der sat en ny rekord, der klart demonstrerede, at gpu’ere reelt er endnu bedre til at håndtere netop denne type af opgaver. I et samarbejde mellem IBM, Nvidia og Stone Ridge Technology har computer-ingeniører i stedet for en traditionel supercomputer sammenbygget 30 IBM Power Systems S822LC for HPC-servere bestykket med 60 Power-processorer og 120 Nvidia Tesla P100 gpu-acceleratorer.

Tesla P100 er Nvidias særlige højtydende gpu til high-performance computing, men bygger på samme principper og teknologi som andre grafikkort. Denne opstilling klarede simuleringen af et oliefelt med én mia. beregningspunkter på 92 minutter og ydede 10 gange så hurtigt og effektivt som en supercomputer.

Ydermere fyldte opstillingen 100 gange mindre og brugte kun en tiendedel så meget strøm i sammenligning med konventionelle Intel Xeon-processorer.