webrev for Graal HSAIL backend
morris.meyer at oracle.com
Tue Jun 11 17:16:47 PDT 2013
After seeing Apple's WWDC and the 4,000 core dual-GPU system they built
into the Mac Pro, I'm very happy to see the work your team has put
together. Lots of good stuff here and I think we should take most of it.
I like that the HSAIL backend is in the com.oracle.graal namespace - not
so much as an Oracle engineer - but it will make working and refactoring
these GPU and CPU backends much easier. Thanks.
compilerBroker.cpp, library_call.cpp, runtime.cpp and arguments.cpp seem
like the might be a little specialized for this point in time. Very
interesting changes though. I would like to get the heterogeneous
method support into HotSpot / Graal and sit down at the language summit
and discuss how we take on constructs like the ForEach work.
I think com.amd.sumatra.Sumatra is sort of in the right ballpark - it
echos the change I made to CompilerToGPU in the earlier PTX work. I
would like of like to reserve the sumatra package for lambda work along
the lines you are thinking for a collections / lambda oriented
java.lang.invoke set of code. We need to get the requirements for this
sort of externalized kernel creating defined as soon as we can. Maybe
...bridge.gpu, ...bridge.gpu.hsail, ...bridge.gpu.ptx packages in the
I think it might be a good next step to put in the HSAIL back end and
tests and the emulator working at the gate so we can build and verify
JDK9 / Sumatra / Graal changes in this environment going forward.
I will be working as time permits on the heterogeneous methods and PTX
invocation so we can get both platforms at the gate integrating changes.
That's all for now. I'm looking forward to working my way through all
these unit tests. Huge kudos AMD!
On 6/11/13 6:16 PM, Venkatachalam, Vasanth wrote:
> The AMD Sumatra team has submitted a webrev (http://cr.openjdk.java.net/~ecaspole/graal_hsail/) that adds HSAIL code generation support for Graal, allowing Java programs to be compiled and executed on HSAIL-enabled GPU/APU devices. While this work is a prototype, we have included several working unit test cases, including Mandelbrot and NBody.
> Arithmetic operations for integers, longs, doubles, and floats
> Loads, stores and move operations
> Min/max/rem/carry operations for integers and longs
> Conversion operations - (currently support conversions between integers and floats, integers and doubles, integers and longs, floats and doubles).
> Some math library operations (e.g., square root).
> Support for JDK8 lambda constructs.
> Known Issues
> -The logic to handle register spilling is work-in-progress, so not all test cases that induce spilling are guaranteed to work.
> -X86 register encodings are being passed to the HSAIL backend. The calling convention returned by getCallingConvention() currently returns an x86 calling convention
> -Function call support has yet to be implemented.
> For a detailed list of unsupported features, refer to the routines that are emitting "NYI" in HSAILLIRGenerator.java
> The test cases (except for BasicHSAILTest) require an HSAIL simulator or hardware to execute, but in lieu of a simulator or hardware they will output the HSAIL code generated, which is useful for debugging. Moreover, BasicHSAILTest provides a template for adding Java code snippets and viewing the HSAIL generated code without executing the code.
> We encourage the community to support this new backend and extend it with additional features.
More information about the graal-dev