RFR: JDK-8300584: Accelerate AVX-512 CRC32C for small buffers

Scott Gibbons duke at openjdk.org
Wed Jan 18 19:55:45 UTC 2023


Use AVX2 code for CRC32C for small buffers in the AVX-512 path.  Breakeven buffer size between the two algorithms is on the order of 384 bytes.

**Performance numbers for previous:**

Benchmark                    (count)   Mode  Cnt      Score     Error   Units
TestCRC32C.testCRC32CUpdate       64  thrpt    4  66974.957 ±   8.872  ops/ms
TestCRC32C.testCRC32CUpdate      128  thrpt    4  44224.810 ±  11.801  ops/ms
TestCRC32C.testCRC32CUpdate      256  thrpt    4  63997.611 ± 173.577  ops/ms
TestCRC32C.testCRC32CUpdate      512  thrpt    4  56068.683 ± 269.582  ops/ms
TestCRC32C.testCRC32CUpdate     2048  thrpt    4  27048.098 ±  87.350  ops/ms
TestCRC32C.testCRC32CUpdate    16384  thrpt    4   4066.736 ±  10.318  ops/ms
TestCRC32C.testCRC32CUpdate    65536  thrpt    4   1040.754 ±   6.419  ops/ms


**Performance numbers for this version:**

Benchmark                    (count)   Mode  Cnt       Score     Error   Units
TestCRC32C.testCRC32CUpdate       64  thrpt    3  161659.326 ±  74.974  ops/ms
TestCRC32C.testCRC32CUpdate      128  thrpt    3   88456.935 ±  11.940  ops/ms
TestCRC32C.testCRC32CUpdate      256  thrpt    3   73254.993 ±   5.004  ops/ms
TestCRC32C.testCRC32CUpdate      512  thrpt    3   56508.541 ± 298.229  ops/ms
TestCRC32C.testCRC32CUpdate     2048  thrpt    3   26701.995 ±  31.369  ops/ms
TestCRC32C.testCRC32CUpdate    16384  thrpt    3    4110.819 ±   4.618  ops/ms
TestCRC32C.testCRC32CUpdate    65536  thrpt    3    1045.821 ±   2.037  ops/ms

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

Commit messages:
 - Use AVX2 code for CRC32C for small buffers in the AVX-512 path.

Changes: https://git.openjdk.org/jdk/pull/12079/files
 Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=12079&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8300584
  Stats: 20 lines in 1 file changed: 20 ins; 0 del; 0 mod
  Patch: https://git.openjdk.org/jdk/pull/12079.diff
  Fetch: git fetch https://git.openjdk.org/jdk pull/12079/head:pull/12079

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


More information about the hotspot-dev mailing list