Ontwikkelaar Phil Pratt-Szeliga heeft op GitHub een compiler geplaatst waarmee vrijwel alle Java-code voor een gpu gecompileerd kan worden. Volgens de developer is het zo mogelijk om met relatief weinig moeite Java-code via de gpu te draaien.
De compiler, Rootbeer GPU Compiler geheten, zou volgens Pratt-Szeliga krachtiger en minder complex zijn dan het gebruik van Cuda- en OpenCL-language bindings. Zo kan Rootbeer objecten automatisch vertalen naar primitive arrays, een vertaalslag die nodig is om code geschikt te maken voor afhandeling door een gpu. Ook het schrijven van een gpu-kernel in Cuda of OpenCL is niet langer nodig omdat Rootbeer de benodigde code na analyse van de Java-bytecode automatisch aanlevert in x86- en amd64-compatibele Cuda-code.
Rootbeer kan vrijwel alle onderdelen van de Java-programmeertalen omzetten naar code die op een gpu kan draaien, al zijn er enkele uitzonderingen zoals native methods en dynamic method invocation. Desondanks maakt de compiler het mogelijk om Java-code potentieel flink te versnellen door delen van de code naar een grafische rekenkern te sturen: in benchmarks die de ontwikkelaar heeft vrijgegeven, zijn aanzienlijke prestatiewinsten te zien.
Even wat gezonde scepsis toevoegen.Wow... Dat zou nog wel eens een revolutie kunnen betekenen voor professionele toepassingen en de hardware in server parken.
[Reactie gewijzigd door delima op zondag 12 augustus 2012 14:58]
Juist voor dat soort taken zijn multi-core CPUs veel geschikter. Buiten het feit dat GPUs in de regel meer stroom verbruiken, en je al je data van en naar de GPU moet kopieren, zijn ze niet geschikt voor dit soort "random" taken. Een GPU is letterlijk maar goed in een ding: heel erg vaak precies hetzelfde doen op een ander stukje data. Voor graphics is dat ideaal waar je bijvoorbeeld de kleur van 2 miljoen pixel moet berekenen op nagenoeg dezelfde manier maar met andere parameters.Voor veel web applicaties geldt dat er één thread is per request van een eindgebruiker. Als je de veel concurrent users hebt, dan heb je veel threads.
En dan ook nog eens threads die hetzelfde doen op een ander stuk van de data en operaties die data-lokaal zijn. Random geheugen access is verschrikkelijk duur op een GPU, zeker voor schrijf operaties.Een GPU is namelijk niet goed in sequentieel verwerken van informatie, die moet het hebben van het grote aantal parallele threads dat hij kan verwerken.
Dat gaat nog wel een tijdje duren denk ik.I plan to maintain Rootbeer until the Java Programming Language is not popular.
Interessant, dat de beste stuurlui altijd aan wal staan. Zonder OO design is geen enkel software project onderhoudbaar, schaalbaar of begrijpelijk voor nieuwe ontwikkelaars.Het soort code dat je op een GPU zou willen draaien (rekentaken dus, geen complete applicaties) heeft weinig tot geen baat bij OO technieken, operator overloading, of welk ander soort abstracties om architectuur en control flow logica mee vast te leggen.
Nee, ik schrijf uitsluitend nog maar C++ kernels voor CUDA en de performance is prima. Absoluut niet langzamer dan C code. Alleen is C++ code beter leesbaar, onderhoudbaar en schaalbaar. Wat dat betreft is gpu code niet anders dan cpu code.Als je puur OO zou programmeren in CUDA zou je de prestaties om zeep helpen.
[Reactie gewijzigd door marking op zondag 12 augustus 2012 15:36]
Mijn bedrijf zoekt altijd naar mensen op hpc/gpgpu gebied maar die gaan we naar aanleiding van dit nieuwsbericht dus specifiek niet in Nederland zoeken. Wat een kansloze reacties en een gebrek aan kennis hier zeg. Ik zal aanraden om in India of Oost Europa of zo te gaan zoeken.
Haha dat is een goeie, misschien moet je die opmerking eens naar jezelf vertalen. Ik heb in mijn professionele carrière denk ik al een slordige paar miljoen regels OO code geschreven/onderhouden, terwijl ik ben afgestudeerd op embedded hardware/software codesign (DSP's etc).[...]
Interessant, dat de beste stuurlui altijd aan wal staan. Zonder OO design is geen enkel software project onderhoudbaar, schaalbaar of begrijpelijk voor nieuwe ontwikkelaars.
Edit: nevermind...Mijn bedrijf zoekt altijd naar mensen op hpc/gpgpu gebied maar die gaan we naar aanleiding van dit nieuwsbericht dus specifiek niet in Nederland zoeken. Wat een kansloze reacties en een gebrek aan kennis hier zeg. Ik zal aanraden om in India of Oost Europa of zo te gaan zoeken.
[Reactie gewijzigd door johnbetonschaar op zondag 12 augustus 2012 22:30]
Klopt, maar dat betekent niet dat iedereen onwetend is. Er staat hierboven heel wat terechte kritiek op mijnsinziens vrij kortzichtige generalisaties. Mensen als Roy, om maar een voorbeeld te noemen, weten best wel waar ze het over hebben als ik terug kijk naar zijn vroegere posts in Programming. Denk dat je als bedrijf blij mag zijn als je zo iemand binnen haalt. En met het risicio arrogant te klinken, zelf weet ik ook best redelijk waar ik het over heb met een phd in "graphics" en een jaar of 10-15 ervaring met GPUs. Om dat dan weg te zetten als "in nederland loopt er geen talent rond" vind ik extreem kortzichtig. Natuurlijk vallen mensen dan over zo'n domme uitspraak.Daarnaast reageren hier op deze van oorsprong tweakers nu jan en alleman, gewoon iedereen met of zonder kennis, maar wel een mening gebaseerd op vaak onwetenheid.
[Reactie gewijzigd door Zoijar op maandag 13 augustus 2012 11:39]
Als ik Rockzo zijn reacties lees dan lijkt het er eigenlijk meer op alsof hij gewoon een troll is die hier een beetje interessant wil komen doen over een onderwerp waar hij ook eens iets over gelezen heeft. Wat je ook voor programmeertaal of abstracties gebruikt zijn er gewoon een aantal zeer fundamentele eigenschappen die voor GPU computing of het schrijven van software voor DSP's of custom ASIC's gelden, en uit Rockzo zijn opmerkingen lijkt hij zich daar totaal niet van bewust, alleen al door zijn originele veronderstelling dat het 'behoorlijk revolutionair zou zijn' als je 'automatisch Java bytecode naar GPU code kunt converteren'.Klopt, maar dat betekent niet dat iedereen onwetend is. Er staat hierboven heel wat terechte kritiek op mijnsinziens vrij kortzichtige generalisaties.
[..]
Blijkbaar herkent Rockzo gewoon geen talent en concludeert daarom dat het er niet is
[Reactie gewijzigd door Wizz15 op maandag 13 augustus 2012 12:27]
is het dan enkel cuda?omdat Rootbeer de benodigde code na analyse van de Java-bytecode automatisch aanlevert in x86- en amd64-compatibele Cuda-code.
[Reactie gewijzigd door FreezeXJ op zondag 12 augustus 2012 14:57]
Het essentiele verschil is denk ik dat OpenCL geen functie-pointers ondersteunt en CUDA wel. Met functie pointers kan je zo'n beetje alle moderne OO/Java/C++ taal-dingetjes implementeren (virtual functions zijn in feite gewoon functie pointers, een pointer naar een tabel van functie pointers).Daarnaast is het gewoon zuur om je te moeten beperken tot 1 fabrikant, veel handiger is code die op alles draait (OpenCL), al is het dan een procentje of wat langzamer.
[Reactie gewijzigd door Zoijar op zondag 12 augustus 2012 15:47]
Het kan aan mij liggen, maar de prestaties lijken nog steeds behoorlijk slecht. Bijvoorbeeld de 4096x4096 dense matrix vermenigvuldiging met GPU in 52 seconde. Mijn AMD N36L (dual-core 1.3 GHz) doet dat met een enkele CPU core in 58 seconde, terwijl een redelijke GPU met efficiente CUDA/OpenCL code dat zeker onder de 1s zou moeten kunnen.in benchmarks die de ontwikkelaar heeft vrijgegeven, zijn aanzienlijke prestatiewinsten te zien.
Als je software niet geschikt is om parallel te draaien (en dan niet 10 threads maar 100(en)) dan zul je hier weinig voordeel uit halen![...]
Mis ik iets of is Java inderdaad zo verschrikkelijk inefficient?
Mijn punt is dat hun GPU oplossing voor hetzelfde paralleliseerbare probleem nog altijd niet echt sneller is dan een oplossing in C met langzame CPU.Als je software niet geschikt is om parallel te draaien (en dan niet 10 threads maar 100(en)) dan zul je hier weinig voordeel uit halen!
Wordt er nou een kernel bedoelt die op een GPU draait of een CPU-kernel met GPU-computing-support? Die eerste lijkt me erg interessant, maar ik betwijfel of het al kan: je videokaart eruit slopen en via een alternatief PCI-slot een soort GPU-chipset met BIOS en voeding eraan hangen zodat je een zelfstandige op GPU draaiende computer krijgt.Ook het schrijven van een gpu-kernel in Cuda of OpenCL is niet langer nodig omdat Rootbeer de benodigde code na analyse van de Java-bytecode automatisch aanlevert in x86- en amd64-compatibele Cuda-code.
[Reactie gewijzigd door blorf op zondag 12 augustus 2012 14:58]
[Reactie gewijzigd door BastiaanCM op zondag 12 augustus 2012 15:01]
[Reactie gewijzigd door peter123 op zondag 12 augustus 2012 16:53]
Op dit item kan niet meer gereageerd worden.
Populair: Tablets Samsung Websites en communities Mobiele telefoons Google Apple Microsoft Sony Games Politiek en recht
© 1998 - 2013 Tweakers.net B.V. Contact Over Tweakers Jouw privacy Algemene voorwaarden Cookies
Tweakers wordt uitgegeven door De Persgroep en wordt gehost door True