Nvidia geeft gpu-compiler voor getalkraken vrij

Goed nieuws voor hen die zich aan parallel rekenwerk willen wagen: nVidia heeft een publieke bèta van Cuda, zijn C-compiler voor de G80-core, vrijgegeven. Daarmee kunnen bepaalde berekeningen die normaliter voor de cpu zijn, aanzienlijk worden versneld.

OCZ GeForce 8800 GTX-doos (cropped) In het Cuda-model wordt de gpu als coprocessor van de cpu opgevat, en kunnen numerieke problemen welke zich ertoe lenen om in stukjes gehakt te worden en parallel te worden uitgevoerd, aan de gpu worden uitbesteed. Gezien er met de GeForce 8800-serie pieken tot 520 gigaflops gehaald kunnen worden, wordt een teraflopssysteem met twee exemplaren in sli-opstelling haalbare kaart voor de gewone sterveling. Dit is te danken aan het feit dat programmeurs de unified shaders van de gpu als onafhankelijke rekenaars kunnen benaderen. Met de GeForce 8800 GTX komen zo 128 1,1GHz-cores beschikbaar, waarmee parallele problemen aanzienlijk sneller kunnen worden opgelost. Voorbeelden van dergelijke getalkrakerij zijn te vinden in de bioinformatica, neurale netwerken en voorspellingsmodellen voor complexe systemen zoals financiële markten en het weer. Volgens productmanager Andy Keane zijn bepaalde taken waar een pc op de cpu een dag voor nodig heeft, in een kwartier met de gpu uit te voeren.

Gpu's zijn zo ontworpen dat er meer transistors bezig zijn met dataverwerking dan met caching en het beheer van instructies - aangezien er bij het renderen van beeld vaak dezelfde procedure wordt aangeroepen voor verschillende stukjes data. Van de mogelijkheid om een gpu ook met andere getallen te laten werken dan die die het pc-beeld op moeten bouwen, werd al eerder melding gemaakt. Zo bekeken onderzoekers van de University of North Carolina anderhalf jaar geleden het effect van het gebruik van de gpu op het sorteren van grote hoeveelheden getallen. Daartoe schreven ze echter een 'GPUSort'-programma, wat een pijnpuntje illustreert: veel problemen waarvoor code wordt geschreven, zijn op zich betrekkelijk eenvoudig te paralleliseren, maar meestal wordt de klassieke Von Neumann-architectuur aangewend, waarbij maar één waarde tegelijk ter berekening aan de processor wordt aangeboden. De hoop is dat de beschikbaarheid van de compiler, in combinatie met de lage kosten van een gpu in vergelijking met een supercomputer, de ontwikkeling van libraries voor parallele probleemoplossing stimuleert. Nvidia denkt met Cuda overigens ook een framework in huis te hebben waarmee krachtige physicslibraries voor games kunnen worden gebouwd.

Floating-point operaties per seconde voor Nvidia-gpu's
Plaatje uit de Cuda Programming Guide

Door Mick de Neeve

19-02-2007 • 10:07

68

Bron: nVidia

Lees meer

Nvidia's Cuda-systeem nader bekeken
Nvidia's Cuda-systeem nader bekeken Nieuws van 28 februari 2007
GeForce 8800-opvolger wordt G81-gpu
GeForce 8800-opvolger wordt G81-gpu Nieuws van 26 januari 2007
Ageia zet mes in ppu-prijzen
Ageia zet mes in ppu-prijzen Nieuws van 16 november 2006
3DMark gaat ook physicsprestaties meten
3DMark gaat ook physicsprestaties meten Nieuws van 29 september 2006
Ook ATi springt op physics-trein
Ook ATi springt op physics-trein Nieuws van 24 maart 2006

Reacties (68)

68
68
30
12
3
27
Wijzig sortering
Binnenkort bouw je dus je eigen supercomputer (voor specifieke taken) voor heel weinig.

Een paar pc's met ieder een dubbele g80 kaart en zie daar je kan meedoen met de grote jongens.
Anoniem: 87832 @bbob19 februari 2007 11:24
En dan gaan de grote jongens natuurlijk systemen bouwen met een paar honderd van die GPU's parallel ;)
het begrip supercomputer is relatief tot de generatie waarin deze zich bevindt. In 1967 zou de amerikaanse overheid voor mijn X2 3800+ bijvoorbeeld gemakkelijk een paar miljoen dollar hebben neergelegd en de krachtigste supercomputer ter wereld kopen
In 1967 zou een Intel 386/387 op 33MHz al een absurde getallenkraker geweest zijn. Dat was de tijd van de IBM System/360, en met 0.68 MIPS en 0.005 MFLOPS was dat nogal een racemonster. Clustering bestond nog volstrekt niet, dus als jij met iets aan zou komen zetten wat 10 en 800 keer zo snel was..
Anoniem: 116213 19 februari 2007 10:21
Hopelijk duikt de DivX/XviD codec wereld zich ook op deze compiler.

Video transcoding is uitermate geschikt om parrallel uitgevoerd te worden, wat al gedaan wordt voor gebruik op Dual en Quad-core systemen, maar ook via clusters.

En het is dan ook te doen om een wat ouder systeem HDTV te laten doen. Voor 1080p materiaal wordt al een 3Ghz CPU geadviseerd, maar zelfs een Dual-Core E6400 of X2 4600+ heeft soms moeite met extreem hoge bitrates.
GPU acceleratie van HDTV playback is toch al het geval via Purevideo?

Een ouder systeem HDTV laten doen vind ik wel aantrekkelijk, alleen is deze Cuda compiler alleen geschikt voor de 8-series van nVidia, en dat sluit waarschijnlijk alle AGP systemen uit.
kan dit ook gebruikt worden bij de mensen thuis ? of heeft het geen meerwaarde een "coprocessor" te hebben bij bijvoorbeeld video encoden of ander zware taken.
eventueel, programmas moeten wel herschreven worden om van deze processor gebruik te maken en deze gpu's zijn niet zo eenvoudig om efficient te programmeren
er zijn ook nog een aantal problemen, een gpu programma mag bijvoorbeeld niet langer dan 5 seconden de gpu bezighouden of de watchdog timer van windows reset het device
waarom wordt er niet vermeld dat ATI dit al veel serieuzer aanpakt?
nieuws: AMD introduceert Stream-processor gebaseerd op ATi-gpu
Ati's CTM is hiermee vergelijkbaar, maar toch anders; hun aanpak is om een interface beschikbaar te stellen die het mogelijk maakt de GPU te gebruiken voor generiek werk door dicht bij de hardware te programmeren.

Zo hebben ze de assembly language van hun GPUs beschikbaar gesteld, een directe gebeugen interface, en zo maar door. Makkelijker wordt het programmeren er niet op, alleen efficienter omdat je verschillende computer graphics abstracties (textures ipv arrays, etc) niet meer nodig hebt.

NVidia doet dit ook in zekere zin, maar stelt ook high level tools beschikbaar; een front end voor een C compiler, een kant en klare FFT library. Hierdoor wordt general GPU programmeren ook interessant voor mensen die zich voorheen CPUs en DSPs bezig hielden.
Uit welke argumenten van jou blijkt dat ATi dit serieuzer aanpakt? Wat maakt dat je NVIDIAs poging als niet serieus kan catalogeren? Graag een onderbouwing.
Zijn uitspraak is nogal stellig, maar in de url die hij geeft staan wel een aantal zaken die duidelijk anders zijn dan wat Nvidia doet.

Nvidia geeft de beta van een compiler beschikbaar, maar er staat niets bij over ondersteuning.

Dat artikel over ATI gaat over een kaart die 100% gericht is op de professionele markt. Die 2600 dollar voor een 650Mhz R580 met 1GB geheugen is dan ook niet voor de kaart zelf, maar voor de uitgebreide technische ondersteuning voor professionele gebruikers.

Dat is een duidelijk andere aanpak die geen twijfel over laat over hun voornemens om het ding in de professionele markt in te zetten als gpgpu.

Bij alleen het vrijgeven van een compiler kun je dat niet concluderen. (het zou immers ook een proefballonnetje kunnen zijn)

Wat dat betreft kun je dus wel stellen dat het bij ATI in ieder geval veel duidelijker is hoe serieus ze het aanpakken.


Persoonlijk denk ik echter dat ATI en Nvidia allebei even serieus zijn in hun pogingen een nieuwe markt te creëren.
Alleen heeft ATI wat voorsprong omdat zij bij de X1xxx serie al kaarten had die daarvoor geschikt waren, terwijl bij Nvidia de 8800 de eerste kaart is die daarvoor geschikt is. (snelle branching is vereiste)
Ati heeft reeds een toepassing om video compressie te doen via de GPU (staat nog niet echt op punt dacht ik)
dus op termijn zal dit idd wel zo worden
@catfish:
Dat is die optie van ATI wel heel erg interessant voor de thuis PC. Een DVD-9 naar een DVD-5 omzetten met een beetje redelijke kwaliteit kost toch al snel een halve dag (dus geen dvdshrink). Als een paar GPU's dat werk over kunnen nemen zou dat echt heel veel tijd gaan schelen. Getallen sorteren is voor de normale sterveling absoluut niet boeiend maar het encoden van video is dat dus duidelijk wel.
Een halve dag is 12 uur neem ik aan? Ik doe het altijd met Nero Recode en dat duurt een paar uurtjes en de kwaliteit is erg goed (en die PC is toch al 5 jaar oud, dus met een nieuwere zal het een stuk vlotter moeten kunnen). Met zo'n GPU oplossing zou het dan nog sneller kunnen hetgeen nog altijd welkom is, uiteraard.
Getallen (letters zijn ook slechts getallen, voor een computer) sorteren klinkt waarschijnlijk als iets wat je niet direct nodig hebt, toch gebeurd iets dergelijks vrij vaak in de programma's die je gebruikt. Hier heb je dus meer aan dan je in eerste instantie zou denken.
Probeer DVDCopy van Intervideo eens. Het zal je verbazen wat voor kwaliteit die kan leveren met de snelle re-codering die dvdshrink gebruikt.
Nero recode doet er idd paar uurtjes over. DVDcopy gebruikt geloof ik zijn eigen compressie methode.
De high quality standaard is toch nog altijd CCE, en die doet er afhankelijk van het aantal passes en CPU snelheid zo'n 12 uur over.
Anoniem: 126717 19 februari 2007 10:30
Is dat goed nieuws voor de SETI rekenaars, of moet daar eerst een nieuwe versie voor geschreven worden?
Folding@home doet dit al enige tijd met ATI kaarten.
Hier moet waarschijnlijk een nieuwe versie voor geschreven worden. De software moet immers gaan kunnen bepalen of de grafische kaart deze capaciteit heeft, en daarna moet de software specifiek de rekentaken deels aan de grafische kaart gaan aanleveren.
Momenteel kijkt de software alleen naar de CPU(s).

Dit kan overigens nog wel een tijdje gaan duren voordat de seti software zover is. Het heeft ook werkelijk jaren geduurd eer ze dual cpu's gingen ondersteunen. Dit is eigenlijk pas gekomen toen Intel met HT cpu's kwam en deze 'standaard' werden.
Het is nu al lastig om programmatuur te vinden die zich goed kan opsplitsen over twee cores laat staan voor 2 x 128 cores.. Dat die 1000 gigaflop wordt behaalt is maar de vraag en daarnaast staat FLOP natuurlijk voor Fast-Looking Obfuscation of Processorspeed :+.
Hoezo is het moeilijk om programmatuur te vinden? Programmatuur dat er nut uit haalt maakt hier ook gebruik van, denk aan bv rendering/codec software. Dus er is genoeg software er is echter nog maar weinig software dat eraan denkt om de gpu te gebruiken ipv de cpu. Met name het renderen lijkt het mij erg interessant om de gpu te gebruiken wat ook al eerder wordt aangegeven, beetje realistisch renderen vereist toch nog steeds de nodige cpu kracht, hopelijk dat de gpu die hier effecienter in zou kunnen zijn ook mee kan werken.
Mja nouja, in BeOS was dat nooit zo'n punt :)
Ahh mooie tijden met al die threads
Anoniem: 55396 @bokkow19 februari 2007 12:52
Bij 'normale' CPUs betekent 128 cores in de praktijk dat je 128 experimenten (of andere rekenintensieve taken) tegelijk kan doorrekenen ipv ze achter elkaar te moeten doen.

Waarom zou je moeilijk doen en je applicatie parallelliseerbaar maken als je je applicatie toch vele malen moet uitvoeren, steeds met andere invoer data? Dat blijkt in de praktijk een stuk vaker voor te komen dan een moeizaam parallell gemaakte applicatie.
Leuk.

Nu hoef ik systeembeheer hier alleen nog maar te overtuigen dat ik een 8800 in mijn computer nodig heb. Dat gaat zo een stuk makkelijker ;) Er worden hier behoorlijk zware berekeningen via het netwerk uitgevoerd.

Nu zijn er, zeker op het werk, vast niet veel mensen die een 8800 hebben, maar zodra de budgetversies beschikbaar zijn zullen die hier ook wel mee werken. Goed initiatief van nvidia.
Wij hebben op het werk een computer met een dikke vette videokaart, die op een dergelijke manier gebruikt wordt. Zit aan een microscoop gekoppelt, en zorgt daar voor online beeldbewerking. Werkt inderdaad beduidend sneller dan de CPU. De bottleneck is op dit moment, om de data van en naar de GPU te pompen. De duur van de berekeningen zijn niet significant.

Maarre... zonder geluidskaart is het spelen van spellen toch niet zo aardig hoor. ;)
Kunnen encryptie-systemen hier ook mee aangevallen worden doormiddel van Bruth-Force? Dan moeten er ook snel nieuwe beveiliginggsmethoden komen om te voorkomen dat jan-en-alleman al het beveiligde verkeer over internet kunnen ontcijferen in slechts enkele minuten.
Brute force aanvallen voorkomen is makkelijk. Neem gewoon een sleutel die lang genoeg is.

Interessanter is kijken of het nu mogelijk is om bijvoorbeeld servers die veel gebruik maken van SSL of ipsec hun encryptie load kunnen uitbesteden aan een GPU, en zo meer performance kunnen bieden voor dezelfde prijs. Vaak is CPU load toch een reden om nog voor een normaal http gedeelte te gaan ipv een volledige https site.

Dit zou wel degelijk kunnen resulteren in een veiliger internet...
Dat is natuurlijk geen reden om brute force te voorkomen. Het kan immers nog altijd, het duurt enkel langer. Beter steekt men tijd in het verbeteren van het coderingsalgoritme waardoor het minder voorspelbaar wordt.
Anoniem: 87819 @Whieee19 februari 2007 13:42
Ja, voorkomen is niet het juiste woord. Brute force voorkomen is natuurlijk onmogelijk, ik bedoel "onmogelijk maken met huidige hardware".
Als je de sleutellengte zo kiest dat je met huidige hardware minstens 10,000 jaar bezig bent dan zit je aardig veilig.

Minder voorspelbaar maken is onzin, het blijft altijd mogelijk alle mogelijke sleutels te proberen gegeven genoeg tijd :)
bruth force? wa is da?
Anoniem: 172169 19 februari 2007 10:31
Wat ik me eigenlijk afvraag, is of de grafische capaciteiten van de kaart tegelijk met deze parralelle rekentechniek te gebruiken zijn. Dus anders gezegd : Kan een programma complexe 3D weergaves door de kaart laten verzorgen terwijl ditzelfde programma ook bepaalde rekentaken aan de kaart uitbesteed ?

Dit zou denk ik ook voor de gamingwereld erg interessant zijn. Denk hierbij bijvoorbeeld aan realtime calculatie van zonnestelsels terwijl je hier doorheen vliegt. Dit is dan op zich een taak die de processor alleen ook wel aan zou kunnen, maar niet als het halve universum real-time berekend zou worden.
Dit kan absoluut; je kan zelfs objecten zoals textures delen tussen de Cuda omgeving en DirectX/OpenGL.

Het enige nadeel is natuurlijk dat het renderen wel vertraagd wordt als je je GPU voor alles gaat gebruiken.
Zeker als je CPU daardoor ondertussen uit zijn neus zit te eten ;)
Hmm, hier zie ik dan inderdaad een glorieuze toekomst voor. Misschien is het al zo, neem me niet kwalijk als het zo is en ik een open deur intrap, maar waar ik dan echt toekomst in zie is een unified layer waar de software mee gaat communiceren. Deze unified layer biedt op basis van belasting de rekentaak aan aan de unit die het het minst druk heeft. Een soort loadbalancing op rekenkundig niveau zeg maar. Hiermee kan de capaciteit van het systeem als geheel optimaal benut worden.

Tja.. Als ATI fan moet ik bekennen. Good job NVidea !
ATi heeft ook iets dergelijks voor hun R5xx architectuur het is alleen nog niet publiek beschikbaar. Het wordt in de praktijk al gebruikt in de nieuwste versie van folding@home.
ATi heeft wel nog geen c compiler, bij hen moet je nog steeds in asm werken.
R5xx serie kan het al en je kunt er op rekenen dat de R6xx serie daar nog veel en veel beter in zal zijn.
maar zoiets zou dan ook wel op SLI kunnen draaien, heb je alsnog een dedicated G80 voor je graphics :)
Is dit niet hetzelfde als die kaart AGEIA?
Anoniem: 87819 @Putyah19 februari 2007 11:28
Nee, de AEGIA huidige generatie kaarten stelt geen enkele programmeerbaarheid beschikbaar aan de developer. Of je gebruikt hun physics library, of je hebt niets aan de acceleratie die ze bieden.

NVidia (en ATI) stellen juist hun kaarten open om generiek rekenwerk op te doen, waaronder dus ook physics simulaties...
Wat een kromme redenatie. Je hebt de PhysX SDK nodig om de PPU aan te spreken. Je hebt nVidia's SDK nodig om de GPU aan te spreken.
De PhysX PPU is net zo open als nVidia's GPU.
Helemaal niet krom; de SDK van NVidia geeft veel meer vrijheid in de dingen die je kan doen dan die van AEGIA. Met GPGPU kan je van alles doen; van AI tot Physics tot geluids bewerking. Met AEGIA alleen maar hun redelijk beperkte subset aan physics/collision handelingen.
Hoop niet dat het gevecht tussen al deze interfaces/sdk's te lang gaat duren. Straks hebben we er weer een javascript variant bij met allemaal verschillende manieren om hetzelfde te doen.
Nice NVidia, ik had dit al een tijdje in de vorm van een prerelease, door een NDA te tekenen, maar nu het publiekelijk is krijg je er vast een hoop meer software en voorbeelden voor beschikbaar.

Dit is erg leuk voor physics engines, particle systemen en dergelijke. Maar de G80 heeft ook integer units, dus zelfs voor cryptografie e.d. zou je hem kunnen gebruiken.

Op dit item kan niet meer gereageerd worden.