Rootbeer GPU Compiler Lets Almost Any Java Code Run On the GPU
An anonymous reader writes "Today the source code to the Rootbeer GPU Compiler was released as open source on github. This work allows for a developer to use almost any Java code on the GPU. It is free, open source and highly tested. Rootbeer is the most full featured translator to convert Java Bytecode to CUDA. It allows arbitrary graphs of objects to be serialized to the GPU and the GPU kernel to be written in Java." Rootbeer is the work of Syracuse University instructor Phil Pratt-Szeliga.
Not posted using Java because it's too slow to get First Post
This work allows for a developer to use almost any Java code on the GPU.
Except for the code my students write. :rolleyes:
Taking guns away from the 99% gives the 1% 100% of the power.
Maybe now the x264 developers will add GPU support and we'll finally have a solution for video encoding that uses the processor and GPUs in parallel. Here's to hoping... :\
#fuckbeta #iamslashdot #dicemustdie
Last I checked java was the biggest pita in things not running unless they were using the specific version of java they were coded for. Now your telling me you can have arbitrary java code compiled to cuda seems far fetched when it can hardly handle going from x.y.z to x.y.z+1 without breaking
No sir I dont like it.
Why?
Unfortunately, Rootbeer is licensed under the GPL.
So you won't be seeing wide adoption of it or use in any commercial products.
The GPL has it's place but in a library like this a more permissive license would be better.
Mod me down, my New Earth Global Warmingist friends!
It's CUDA only, meaning it does not support any open standards. Call me when when I can target OpenCL.
---- GENERATION 26: The first time you see this, copy it into your sig on any forum and add 1 to the generation.
released as open source on github
Damn, Slashdot, I almost had a freaking heart attack when I moused over (you don't think I actually clicked do you? New here?) the link in the summary and it was to the actual github page rather than some crappy 10 page blog post based on something pulled off the reuters wire from last week.
I'm impressed!
The soylentnews experiment has been a dismal failure.
Here, from GitHub, is the short presentation. This is very impressive. It finds parallelism automatically, at least for simple cases. Over 50x performance improvement on matrix multiply and naive Fourier transform (not FFT), both of which have very simple inner loops. Not clear how it does on less obvious problems.
Will it make Minecraft look better?
Java does indeed provide some benefits, such as memory safety. Unfortunately this comes at the cost of
-Garbage Collection, which kills User Experience due to unpredictable freezing of the whole program
-no way to allocate more than just primitive variables on the stack. That eliminates the fastest allocation method of all.
-being forced to use Arrays Of Pointers, when an array of objects would be perfectly sufficient
-being forced to use a pointer when object agggregation would be perfectly sufficient
-being forced to use the GC even if an object tree is in no way cyclic
-not having Destructors
I've create a programming language called Sappeur which has the same memory safety assurances as Java, but does not have all the downsides as listed above. It is still a bit rough around the edges, but it clearly works and demonstrates that the Java inefficiency is not a god-given thing. Sappeur programs start up as fast as any C or C++ program and terminate equally fast. They are nearly as efficient as C++ programs, which means they are much superior to anything you can do in Java or C#
Here it is:
http://sourceforge.net/projects/sappeurcompiler/
Unfortunately I do not use Nvidia GPU
Because a skill programmer would know that Java has evolved and that the language has many features that it didn't have in v1.0
Considering the approach that Oracle is taking of trying to copyright and charge license fees just for using the Java API's (see Oracle vs Google) I cant see any sane person developing on a non-Oracle provided Java platform. If they can sue Google for Dalvik they can certainly sue whoever deploys Rootbeer if they feel like it.
pgmer6809
At least that's what all those Node.js people keep saying.
also automagically turn all serial algorithms into massively parallel as well?
- it would be fabulous to just write in Java [akin to how I can do this on the Web using Google Web Toolkit]).
I cannot let any undue praise for GWT go unrebuked. While I find it impressive from a technical point of view, I've come to believe actually using it is a potentially expensive mistake.
What you write for GWT, I wouldn't call Java but a-language-with-a-java-like-syntax-but-totally-different-characteristics. If you use your Java best practices, you'll end up with code that doesn't compile - only a certain subset of the Java api is supported - or worse. Don't assume a particular Locale? Using GWT you better assume the default. Program to interfaces rather than implementations? If you do that with GWT the client ends up downloading 20 megabytes worth of javascript to support every known implementation of every sub interface of java.util.Collection. Choosing GWT is also a way of saying 'who needs a steenkin frontend specialist?'. Since all that frontend stuff is generated from java-like server code, your UI will end up being coded by your server side java people. Finally, I'm not convinced Google will continue to support it, since they are actively working on a number of other javascript avoidance technologies, and have a history of announcing the end of life of a product they lose interest in with only a few days notice.
Shouldn't title mention "nVidia GPU" or did I miss that AMD now supports CUDA on top of OpenCL?
Awesome. Now this is useful because ...?
if oracle wants a java compiler let them write it, stop being a corporate toady.
yeah, you can even automate it..
now, I wonder if this gpu project could be used to run http://www.ode4j.org/ ..(ode for java is a port of a c/c++ physics lib to java, mostly automated conversion. it actually works pretty nicely.)
world was created 5 seconds before this post as it is.
Given Java's current direction (Oracle) and all of the hell we (the IT industry) have been put through already with Java's false promises of WORA, shouldn't most of our efforts be towards abandoning Java entirely. Frankly, code translators, like Facebook's PHP to C translator seem like better investments in code performance and portability (I am aware portability is not their goal, but it is an interesting side effect).
Get the industry to rally behind a consistent language which has strong RAD functionality (Python?) and find better ways to translate and optimize the slow chunks of code during interactive compilation and profiling. IDEs and compilers need to move the direction of content creation tools like Dreamweaver, where the developer can see the results interactively and instantly on a variety of platforms via virtualization. How great would it be if following a multi-platform compilation run, a LibreOffice developer could see and interact with the results on Ubuntu, Windows, OSX, and Android all at the same time?
Running crap code on more interesting platforms does not fix the problems already there.
Does this mean the malware can now run on the GPU and evade detection by a virus scanner?
Will we need a new virus scanner for the GPU?
Android has had NDK for at least as long as I've been using Android. It's Xbox Live Indie Games and Windows Phone 7 that aren't allowed to use native code.
It is surprising that an applet can't be rewritten
Well technically it can. Business-wise it'd cost money, and the manufacturer would rather sell you new hardware containing the rewrite.
How should a Java application read the joystick, camera, and microphone attached to a computer? For example, this joystick driver is described as "Works on Windows and Linux" and presumably not Mac OS X.
In before someone suggests a workaround of using your netbook to connect to a more powerful computer using X11 or RDP or VNC, in much the same way that iPad apologists claim to be able to use their iPads for software development through remote access. But then I've had to work around it a different way because I'm often using my netbook on the bus, which does not provide Wi-Fi to passengers, and I don't have the money to "Share Everything" as Verizon Wireless has been calling it.
Oracle lost that battle on all claims.
They can lose, but that doesn't mean they can't appeal and use up more of the opponent's legal funds.
If this "NOTE!" is proved necessary, Oracle could claim copyright infringement against anyone who bundles a modified OpenJDK with GPL-incompatible applications.
Google was sued because they took the Java APIs and have not got a license from Oracle (that was before Java was released under the GPL with OpenJDK). [...] Since Java is now at least 6 years under the GPL there are no issues anymore.
I don't remember being able to buy an HTC Dream, the first Android phone, in 2006.
We now all know the result of that venture, the SSO of APIs is not copyrightable
How is the structure, sequence, and organization of APIs not copyrightable, while the structure, sequence, and organization of a video game is?
few people care about ATI cards for anything else than video games
Aren't AMD cards better than NVIDIA for the calculations used in Bitcoin verification?
I have used quite a few languages which use GC and even though some are quite mature now, like VW Smalltalk, all of them freeze on a regular basis, just when you don't want it to happen. I have also used and developed large-scale systems which do not have this trait, and all of them were done in C or C++ and they use explicit allocation or reference-counted memory management.
Only academics claim that refcounting is inferior; engineers have built lots of systems based on that technique and they work extremely well.
Thanks for the references; I will look into them, but I am still highly in doubt about "realtime GC" and I have never heard of anything actually realt-time critical being done in a GC language. Where is the drone flown by a LISP control law program ??
Presumably that bad teacher was once a student. A bad student - after all she wasn't very good at studying how to be a teacher, was she? Perhaps that was because her teacher of teaching was bad. Rinse & repeat.
So who's to blame? Jesus? Buddha? Aristotle?
Confucius say, "Find worm in apple - bad. Find half a worm - worse."
We had an incident a couple of years ago were all our apps (four jboss instances) started running in java 6 32-bits instead of the java 5 64-bits they were always tested and run because of an error on the data center provider who maintained the operating system installed and changed the system default version of java.
We didn't even notice the change except that a third-party native shared object (a dll in linux) started to fail, because it was compiled in C for 64-bits.
Modern Java reasonably written has wonderful compatibility and portability.
"I think this line is mostly filler"
So AMD hardware aren't GPUs then? Where's the OpenCL support? Well?
Properties .... really?? I guess you never programmed in Java. ..... I guess you have no clue of how object oriented programing works. ..... what the hell do you think classes are? .... are you really this dumb??? How the hell do you think Java passes data?? .... HINT: Java is not C.
Method pointers
user defined types
parameter pass by reference
operator overloading
In conclusion, you are beyond ignorant and really hope you never work on anything computer related ... because you don't even have the ability to self educate yourself.
That's what is relevant when you play a shooter game and somebody aims at you; can then the "seldom" GC event kick in ?
Just look at this
http://shootout.alioth.debian.org/u32/benchmark.php?test=all&lang=java
and please don't tell me memory is cheap. There will always be applications which max out RAM and you cannot simply "solve" that problem by buying more. There are always some hard limits on what you can plug into a certain class of computer. Don't assume everybody is in the transaction processing business writing business logic;some people are actually developing database engines, data mining engines, signal processors, CAD systems, realistic 3D games, simulators, image processors, movie rendering engines and the like.
That is a freeware delphi clone and it displays almost all of delphi's advantages plus it is multi-platform. So extremely quick compilation, nice IDE, nice GUI library, proper type system and efficient runtime behaviour. I don't think python has all that.
So you can create portable GUI programs which are also highly efficient. Just don't use platform-specific stuff such as Windows-only system calls. Also, that approach can be also applied to many other fields such as Sound, networking, database access, printing and so on. Just don't blindly take some vendor's lock-in API. Research what exists and leverage that.
The submitter is new here and the mods didn't RTFA and therefor failed to catch this.
Dump x264 as badly designed and use a new video compression design that can take advantage of the parallelism.
now we need to go OSS in diesel cars
of course it does not at all make sense to generate String objects in every iteration of a frequently used loop. Re-use a StringBuffer on every iteration in that case. Re-using frequently used objects is probably a good idea. But that does indeed lead you into making your own memory managers, as it is not obvious when you will have to release an object pool. Still, it is almost inevitable to create garbage and even if you do it at a very low rate, at one point the GC will kick in and according to Murphy that will be 30 minutes into a critical presentation to your customer.
With Android phones, I suspect it kicks in every minute or so and it does indeed damage User Experience.
Interesting how in the 80's the CPU was doing most of the graphical heavy lifting, it then moved to the GPU in the 90's, and now the kernel is moving there too... When will we see a booter straight to the GPU ? I think some projects are already thinking about it.
Concidering how much CPU Minecraft takes up, tranfering the load to the GPU will be a blessing
How is this different than Aparapi?
http://code.google.com/p/aparapi/
Aparapi is a heterogeneous compute and data parallel framework for Java that automatically generates OpenCL from bytecode. There is no reason that Aparapi could not produce CUDA or HSA are well.
Aparapi was open-sourced by AMD over a year ago and is actively maintained by both AMD and other contributors.