Intrinsics For Vector API
Vladimir Ivanov
vladimir.x.ivanov at oracle.com
Fri Aug 11 10:51:31 UTC 2017
Another suggestion: it'd be good to push macroassembler support of new
instructions in jdk10.
Best regards,
Vladimir Ivanov
On 8/11/17 1:45 PM, Vladimir Ivanov wrote:
> Nice work, Vivek & Razvan!
>
> Overall, looks really nice.
>
> VectorBox is almost the same as VBox, except there's no vector box
> instance associated with it. I'm curious what happens if vector box is
> needed: either it "escapes" or an identity-sensitive operation is
> performed on it. In some cases, intrinsification is disabled, but I
> don't think it is always possible to say in advance the box is needed or
> not.
>
> Also, I suggest to look at VBox usages and consider adding corresponding
> logic for VectorBox. For example, there are special cases in
> deoptimization logic which avoid vector boxing at safepoints by keeping
> the vector values alive across safepoints and performing lazy
> rematerialization when deoptimization is needed.
>
> Some other suggestions:
>
> + diagnostic(bool, UseVectorApiIntrinsics, true, +
> "Enables intrinsification of Vector API") + +
> diagnostic(bool, DebugVectorApi, false, +
> "Enables printing of debug messages for Vector API") +
>
> In a longer term, experimental (w/ default = false) for
> UseVectorApiIntrinsics is a better option. But while it's baking in
> Panama, just a product flag is fine.
>
> Also, DebugVectorApi is actually notproduct (the tracing code isn't part
> of release build):
>
> +#ifndef PRODUCT
> + if (DebugVectorApi) {
> + tty->print_cr("Trying to intrinsify vector op %s",
> NodeClassNames[op]);
> + }
> +#endif
>
> Best regards,
> Vladimir Ivanov
>
> On 8/9/17 7:40 AM, Deshpande, Vivek R wrote:
>> Hi Paul
>>
>> I have uploaded the rebased patch at this location:
>> http://cr.openjdk.java.net/~vdeshpande/Panama/webrev.01/
>> Please take a look and let us know.
>>
>> Regards,
>> Vivek
>>
>> -----Original Message-----
>> From: Paul Sandoz [mailto:paul.sandoz at oracle.com]
>> Sent: Thursday, August 03, 2017 3:22 PM
>> To: Deshpande, Vivek R <vivek.r.deshpande at intel.com>
>> Cc: panama-dev at openjdk.java.net; Viswanathan, Sandhya
>> <sandhya.viswanathan at intel.com>
>> Subject: Re: Intrinsics For Vector API
>>
>> Hi,
>>
>> Nice work.
>>
>> Would you mind updating the patch to be in sync with the recent
>> refactoring i made to the draft spec API?
>>
>> Notably, all classes are now under one package, com.oracle.vector, and
>> the methods to create vector instance have been moved to the species
>> e.g.:
>>
>> FloatVector.FloatSpecies<Shapes.S256Bit> species =
>> (FloatVector.FloatSpecies<Shapes.S256Bit>)
>> Vector.speciesInstance(Float.class, Shapes.S_256_BIT); for (int i =
>> 0; i < a.length; i += species.length()) {
>> FloatVector<Shapes.S256Bit> av = species.fromArray(a, i);
>> FloatVector<Shapes.S256Bit> bv = species.fromArray(b, i);
>> av.add(bv).intoArray(c, i);
>> }
>>
>> Thanks,
>> Paul.
>>
>>> On 1 Aug 2017, at 17:12, Deshpande, Vivek R
>>> <vivek.r.deshpande at intel.com> wrote:
>>>
>>> Hi All
>>>
>>> We would like to share the webrev for the Intrinsics for Vector APIs,
>>> which add the partial intrinsification support to the APIs.
>>> Webrev: http://cr.openjdk.java.net/~vdeshpande/Panama/webrev.00/
>>> Code Contributed by:
>>> Razvan Lupusoru
>>> (razvan.a.lupusoru at intel.com<mailto:razvan.a.lupusoru at intel.com>)
>>> Vivek Deshpande(vivek.r.deshpande at intel.com)
>>>
>>> The AddTest.java in jdk\test\panama\vector-draft-spec\src\test\java
>>> can be run like this:
>>> java -XX:+UnlockDiagnosticVMOptions -XX:-TieredCompilation
>>> -XX:-CheckIntrinsics -XX:TypeProfileLevel=121
>>> -XX:+UseVectorApiIntrinsics -XX:+DebugVectorApi AddTest
>>>
>>> Thanks.
>>> Regards,
>>> Vivek
>>>
>>>
>>>
>>
More information about the panama-dev
mailing list