RFR: 8269404: Base64 Encoding optimization enhancements for x86 using AVX-512 [v4]

Scott Gibbons github.com+6704669+asgibbons at openjdk.java.net
Sat Jul 10 18:02:16 UTC 2021


> Enhance the Base64 Encode intrinsic for x86 using AVX-512 to get better performance. Also allow for performance improvement on non-AVX-512 enabled platforms.
> 
> Added AVX-512 code for encoding Base64 blocks, including slight improvements for non-AVX-512 x86 platforms.
> 
> Running the Base64Decode benchmark, this change increases decode performance by an average of 2.6x with a maximum 9.7x for buffers > ~20k.  The numbers are given in the table below.
> 
> **Base Score** is without intrinsic support, **Optimized Score** is using this intrinsic, and **Gain** is **Base** / **Optimized**.
> 
> Benchmark Name | Base Score | Optimized Score | Gain
> -- | -- | -- | --
> testBase64Encode size 1 | 8.10 | 8.04 | 1.01
> testBase64Encode size 2 | 8.51 | 8.43 | 1.01
> testBase64Encode size 3 | 11.08 | 10.72 | 1.03
> testBase64Encode size 6 | 13.98 | 13.12 | 1.07
> testBase64Encode size 7 | 14.44 | 13.38 | 1.08
> testBase64Encode size 9 | 15.44 | 14.37 | 1.07
> testBase64Encode size 10 | 16.13 | 14.97 | 1.08
> testBase64Encode size 48 | 27.14 | 23.23 | 1.17
> testBase64Encode size 512 | 123.86 | 30.75 | 4.03
> testBase64Encode size 1000 | 224.42 | 37.71 | 5.95
> testBase64Encode size 20000 | 4202.11 | 430.16 | 9.77

Scott Gibbons has updated the pull request incrementally with one additional commit since the last revision:

  Addressing review comments.

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

Changes:
  - all: https://git.openjdk.java.net/jdk/pull/4601/files
  - new: https://git.openjdk.java.net/jdk/pull/4601/files/c4cbe97d..e0db0aea

Webrevs:
 - full: https://webrevs.openjdk.java.net/?repo=jdk&pr=4601&range=03
 - incr: https://webrevs.openjdk.java.net/?repo=jdk&pr=4601&range=02-03

  Stats: 13 lines in 2 files changed: 4 ins; 2 del; 7 mod
  Patch: https://git.openjdk.java.net/jdk/pull/4601.diff
  Fetch: git fetch https://git.openjdk.java.net/jdk pull/4601/head:pull/4601

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


More information about the hotspot-compiler-dev mailing list