RFR: JDK-8300808: Accelerate Base64 on x86 for AVX2

Scott Gibbons duke at openjdk.org
Sat Jan 21 00:50:43 UTC 2023


Added code for Base64 acceleration (encode and decode) which will accelerate ~4x for AVX2 platforms.

Encode performance:
**Old:**

Benchmark                      (maxNumBytes)   Mode  Cnt     Score   Error   Units
Base64Encode.testBase64Encode           1024  thrpt    3  4309.439 ± 2.632  ops/ms


**New:**

Benchmark                      (maxNumBytes)   Mode  Cnt      Score     Error   Units
Base64Encode.testBase64Encode           1024  thrpt    3  24211.397 ± 102.026  ops/ms


Decode performance:
**Old:**

Benchmark                      (errorIndex)  (lineSize)  (maxNumBytes)   Mode  Cnt     Score    Error   Units
Base64Decode.testBase64Decode           144           4           1024  thrpt    3  3961.768 ± 93.409  ops/ms

**New:**
Benchmark                      (errorIndex)  (lineSize)  (maxNumBytes)   Mode  Cnt      Score    Error   Units
Base64Decode.testBase64Decode           144           4           1024  thrpt    3  14738.051 ± 24.383  ops/ms

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

Commit messages:
 - Remove whitespace
 - Fix wrong register usage
 - Working version of Base64 decode with AVX2 (4x perf improvement). No URL support
 - Merge branch 'Base64-AVX2' of https://github.com/asgibbons/jdk into Base64-AVX2
 - Merge branch 'openjdk:master' into Base64-AVX2
 - Intermediate AVX2 for decode
 - Fix various AVX support function invocations to get Base64 generated for AVX2

Changes: https://git.openjdk.org/jdk/pull/12126/files
 Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=12126&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8300808
  Stats: 150 lines in 7 files changed: 134 ins; 3 del; 13 mod
  Patch: https://git.openjdk.org/jdk/pull/12126.diff
  Fetch: git fetch https://git.openjdk.org/jdk pull/12126/head:pull/12126

PR: https://git.openjdk.org/jdk/pull/12126


More information about the core-libs-dev mailing list