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