RFR(S): 8194740: Fix for: UseSubwordForMaxVector causes performance regression
Vladimir Kozlov
vladimir.kozlov at oracle.com
Tue Jun 26 18:28:20 UTC 2018
On 6/25/18 4:49 PM, Deshpande, Vivek R wrote:
> Hi Vladimir
>
> With this fix, the unrolling is limited to the loops with the presence of subword in the loop, which is correct for Subword Analysis and avoids unrolling
> for the loops with no subword operations in the loop. This fixes the regression with MPEG.
>
> I analyzed the workloads SPECjvm2008-SOR.small and SPECjvm2008-MonteCarlo.
> On MonteCarlo, with Subword Analysis work the loop was getting unrolled because of the following condition and was seeing the performance gain as a side effect.
> if (UseSubwordForMaxVector || xors_in_loop >= 4) && body_size < (uint)LoopUnrollLimit * 4) {
> With the fix the condition changed to check for the presence of Subword in the loop as following.
> if ((cl->is_subword_loop() || xors_in_loop >= 4) && body_size < (uint)LoopUnrollLimit * 4) {
> This caused the performance on MonteCarlo to go back to before UseSubwordForMaxVector changes.
I understand but it is still regression from jdk 10.
UseSubwordForMaxVector was set 'true' by 8189067 in JDK 10.
>
> I did not notice much of a performance impact on SOR.small with Parallel GC and Parallel Old GC on Skylake server.
>
> For all the experiments I used single socket with membind to avoid run to run variations on skylake server.
> I also used these options -XX:-TieredCompilation -Xmx25G -Xms25G -Xmn15G -XX:+UseParallelGC -XX:ParallelGCThreads=66
We ran on E5-2690 0 @ 2.90GHz (32 threads) with next flags:
-XX:+UseParallelGC -XX:+UseLargePages -XX:+UseCountedLoopSafepoints
-XX:+IgnoreUnrecognizedVMOptions -XX:LoopStripMiningIter=1000
Thanks,
Vladimir
>
> Please let me know what you think.
>
> Regards,
> Vivek
>
>
> -----Original Message-----
> From: Vladimir Kozlov [mailto:vladimir.kozlov at oracle.com]
> Sent: Wednesday, June 13, 2018 12:32 PM
> To: Deshpande, Vivek R <vivek.r.deshpande at intel.com>; Tobias Hartmann <tobias.hartmann at oracle.com>; hotspot-compiler-dev at openjdk.java.net compiler <hotspot-compiler-dev at openjdk.java.net>
> Subject: Re: RFR(S): 8194740: Fix for: UseSubwordForMaxVector causes performance regression
>
> Hi Vivek,
>
> Performance testing is finished and we see regressions.
>
> SPECjvm2008-SOR.small with Parallel GC - 5-7% on all platfroms.
> There is also 3-5% regression in MonteCarlo with G1 (we did not test with Praallel GC - it may also regress).
>
> Please investigate it.
>
> Thanks,
> Vladimir
>
> On 6/12/18 9:51 AM, Deshpande, Vivek R wrote:
>> Hi Tobias
>>
>> Thanks for testing it. I have changed the status to - In Progress.
>>
>> Regards,
>> Vivek
>>
>> -----Original Message-----
>> From: Tobias Hartmann [mailto:tobias.hartmann at oracle.com]
>> Sent: Tuesday, June 12, 2018 2:48 AM
>> To: Deshpande, Vivek R <vivek.r.deshpande at intel.com>; Vladimir Kozlov
>> <vladimir.kozlov at oracle.com>; hotspot-compiler-dev at openjdk.java.net
>> compiler <hotspot-compiler-dev at openjdk.java.net>
>> Subject: Re: RFR(S): 8194740: Fix for: UseSubwordForMaxVector causes
>> performance regression
>>
>> Hi Vivek,
>>
>> On 11.06.2018 20:51, Deshpande, Vivek R wrote:
>>> http://cr.openjdk.java.net/~vdeshpande/SubwordFix/webrev.01/
>>
>> This looks good to me as well. I've just submitted performance testing and premature results look great (+3.17% on SpecJVM2008 MPEG).
>>
>> I'll let you know once the runs are completed. Please set the status of the bug to "In Progress".
>>
>> Best regards,
>> Tobias
>>
More information about the hotspot-compiler-dev
mailing list