RFR: 8287697: Limit auto vectorization to 32-byte vector on Cascade Lake [v3]

Jatin Bhateja jbhateja at openjdk.java.net
Thu Jun 2 05:42:36 UTC 2022


On Thu, 2 Jun 2022 04:34:27 GMT, Sandhya Viswanathan <sviswanathan at openjdk.org> wrote:

>> We observe ~20% regression in SPECjvm2008 mpegaudio sub benchmark on Cascade Lake with Default vs -XX:UseAVX=2.
>> The performance of all the other non-startup sub benchmarks of SPECjvm2008 is within +/- 5%. 
>> The performance regression is due to auto-vectorization of small loops. 
>> We don’t have AVX3Threshold consideration in auto-vectorization. 
>> The performance regression in mpegaudio can be recovered by limiting auto-vectorization to 32-byte vectors.
>> 
>> This PR limits auto-vectorization to 32-byte vectors by default on Cascade Lake. Users can override this by either setting -XX:UseAVX=3 or -XX:SuperWordMaxVectorSize=64 on JVM command line.
>> 
>> Please review.
>> 
>> Best Regard,
>> Sandhya
>
> Sandhya Viswanathan has updated the pull request incrementally with one additional commit since the last revision:
> 
>   Change SuperWordMaxVectorSize to develop option

src/hotspot/cpu/x86/vm_version_x86.cpp line 1306:

> 1304:       // Limit auto vectorization to 256 bit (32 byte) by default on Cascade Lake
> 1305:       FLAG_SET_DEFAULT(SuperWordMaxVectorSize, 32);
> 1306:     } else {

SuperWordMaxVectorSize is set to 32 bytes by default, it should still be capped by MaxVectorSize, in case user sets MaxVectorSize to 16 bytes.

-------------

PR: https://git.openjdk.java.net/jdk/pull/8877


More information about the hotspot-compiler-dev mailing list