Webrev for throwing some exceptions from HSAIL
Doug Simon
doug.simon at oracle.com
Tue Dec 10 04:03:11 PST 2013
Hi Eric,
Apart from the Eclipse errors and warnings (see below), the Java code looks ok.
gpu_hsail.cpp:
inline void init() {
Why a separate init() function for HSAILKernelException? Seems like an inline constructor would do the same thing.
thread->set_gpu_exception_method(mh());
If the exception happens in an inlined method, then mh() is the wrong value here (and bci will be wrong as well).
gpu_hsail.hpp:
static bool execute_kernel_void_1d(address kernel, int dimX, jobject args, methodHandle mh, TRAPS);
Why is the mh parameter no longer passed by reference?
-Doug
Description Resource Path Location Type
The import com.oracle.graal.api.code is never used HSAILControlFlow.java /com.oracle.graal.lir.hsail/src/com/oracle/graal/lir/hsail line 36 Java Problem
The value of the field HSAILHotSpotLoweringProvider.host is not used HSAILHotSpotLoweringProvider.java /com.oracle.graal.hotspot.hsail/src/com/oracle/graal/hotspot/hsail line 39 Java Problem
'abstract' modifier out of order with the JLS suggestions. HSAILHotSpotLoweringProvider.java /com.oracle.graal.hotspot.hsail/src/com/oracle/graal/hotspot/hsail line 41 Checkstyle Problem
The value of the local variable bci is not used HSAILHotSpotLIRGenerator.java /com.oracle.graal.hotspot.hsail/src/com/oracle/graal/hotspot/hsail line 222 Java Problem
Name '_y' must match pattern '^[a-z][a-zA-Z0-9]*$'. ClassCastTest.java /com.oracle.graal.compiler.hsail.test/src/com/oracle/graal/compiler/hsail/test line 42 Checkstyle Problem
Line matches the illegal pattern 'System\.(out|err)\.print'. ClassCastTest.java /com.oracle.graal.compiler.hsail.test/src/com/oracle/graal/compiler/hsail/test line 73 Checkstyle Problem
The import java.lang.reflect is never used HSAILAssembler.java /com.oracle.graal.asm.hsail/src/com/oracle/graal/asm/hsail line 26 Java Problem
The import com.oracle.graal.debug.internal is never used HSAILCompilationResult.java /com.oracle.graal.hotspot.hsail/src/com/oracle/graal/hotspot/hsail line 37 Java Problem
First sentence should end with a period. ClassCastTest.java /com.oracle.graal.compiler.hsail.test/src/com/oracle/graal/compiler/hsail/test line 14 Checkstyle Problem
Name '_x' must match pattern '^[a-z][a-zA-Z0-9]*$'. ClassCastTest.java /com.oracle.graal.compiler.hsail.test/src/com/oracle/graal/compiler/hsail/test line 27 Checkstyle Problem
Name '_y' must match pattern '^[a-z][a-zA-Z0-9]*$'. ClassCastTest.java /com.oracle.graal.compiler.hsail.test/src/com/oracle/graal/compiler/hsail/test line 27 Checkstyle Problem
Name '_x' must match pattern '^[a-z][a-zA-Z0-9]*$'. ClassCastTest.java /com.oracle.graal.compiler.hsail.test/src/com/oracle/graal/compiler/hsail/test line 42 Checkstyle Problem
The import org.junit.Assert.assertTrue is never used ClassCastTest.java /com.oracle.graal.compiler.hsail.test/src/com/oracle/graal/compiler/hsail/test line 11 Java Problem
Line does not match expected header line of ' \* Copyright \(c\) (20[0-9][0-9], )?20[0-9][0-9], Oracle and/or its affiliates. All rights reserved.'. ClassCastTest.java /com.oracle.graal.compiler.hsail.test/src/com/oracle/graal/compiler/hsail/test line 2 Checkstyle Problem
First sentence should end with a period. BoundsCheckTest.java /com.oracle.graal.compiler.hsail.test/src/com/oracle/graal/compiler/hsail/test line 29 Checkstyle Problem
The import java.util.Arrays is never used ClassCastTest.java /com.oracle.graal.compiler.hsail.test/src/com/oracle/graal/compiler/hsail/test line 9 Java Problem
Line matches the illegal pattern 'System\.(out|err)\.print'. BoundsCheckTest.java /com.oracle.graal.compiler.hsail.test/src/com/oracle/graal/compiler/hsail/test line 67 Checkstyle Problem
On Dec 10, 2013, at 1:31 AM, Caspole, Eric <Eric.Caspole at amd.com> wrote:
> Hi everybody,
> Tom and I came up with our first baby steps of throwing exceptions from HSAIL kernels back into "regular" java. This is for the context of running as a parallel stream such as a parallel().forEach(). This works such that the first kernel workitem to set an atomic after detecting a problem "wins" to report the exception back to java. The kernel workitems that detect a problem return early even if they lose to set the flag, and the others run on normally. This is about the same as you get with CPU parallel streams.
>
> http://cr.openjdk.java.net/~ecaspole/hsail_exceptions/<http://cr.openjdk.java.net/%7Eecaspole/hsail_exceptions/>
>
> We can now detect ArrayIndexOutOfBounds and ClassCastExceptions via explicit checks in the HSAIL code, and return a deoptimization reason to the CPU side. In the JVM kernel launch code, we check for these exceptions, then save the method, reason and bci in the thread, then throw using the THROW/CHECK mechanism from C++ back to java. When the thread later gets to fillInStackTrace, it uses the saved info in the thread to add the kernel lambda method as the top frame in the stack trace.
>
> Let us know what you think.
> Thanks,
> Eric
>
More information about the graal-dev
mailing list