webrev for Graal HSAIL backend

Morris Meyer 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 
graal namespace?

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!

         --morris meyer

On 6/11/13 6:16 PM, Venkatachalam, Vasanth wrote:
> Hi,
> 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.
> Features
> 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.
> Vasanth

More information about the graal-dev mailing list