RFR: JDK-8300584: Accelerate AVX-512 CRC32C for small buffers [v2]
Scott Gibbons
duke at openjdk.org
Wed Jan 18 23:40:30 UTC 2023
On Wed, 18 Jan 2023 23:10:12 GMT, Scott Gibbons <duke at openjdk.org> wrote:
>> 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
>
> Scott Gibbons has updated the pull request incrementally with one additional commit since the last revision:
>
> Incorporate review comments
Here are the new results. They seem to be in-line with what was reported in the initial description:
Benchmark (count) Mode Cnt Score Error Units
TestCRC32C.testCRC32CUpdate 64 thrpt 4 161653.588 ± 90.568 ops/ms
TestCRC32C.testCRC32CUpdate 128 thrpt 4 88458.045 ± 1.664 ops/ms
TestCRC32C.testCRC32CUpdate 256 thrpt 4 73253.929 ± 2.757 ops/ms
TestCRC32C.testCRC32CUpdate 512 thrpt 4 56095.367 ± 33.203 ops/ms
TestCRC32C.testCRC32CUpdate 2048 thrpt 4 27714.763 ± 7.075 ops/ms
TestCRC32C.testCRC32CUpdate 16384 thrpt 4 4120.630 ± 13.723 ops/ms
TestCRC32C.testCRC32CUpdate 65536 thrpt 4 1046.727 ± 0.227 ops/ms
-------------
PR: https://git.openjdk.org/jdk/pull/12079
More information about the hotspot-dev
mailing list