Integrated: 8339738: RISC-V: Vectorize crc32 intrinsic
Hamlin Li
mli at openjdk.org
Wed Sep 18 12:40:13 UTC 2024
On Mon, 9 Sep 2024 10:24:20 GMT, Hamlin Li <mli at openjdk.org> wrote:
> Hi,
> Can you help to review this patch?
> Thanks.
>
> This improvement is based on java.base/share/native/libzip/zlib/zcrc32.c, I made some modification to N (to 16) related code, then re-generate the tables needed, finally vectorize the code (original implementation in zcrc32.c is just scalar code).
>
> ## Test
> test/hotspot/jtreg/compiler/intrinsics/zip/TestCRC32.java,
> test/jdk/java/util/zip/TestCRC32.java
>
> ## Performance
>
> ### on bananapi
>
> with patch
> <google-sheets-html-origin style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0); font-style: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;">
> Benchmark | (count) | Mode | Cnt | Score | Error | Units
> -- | -- | -- | -- | -- | -- | --
> TestCRC32.testCRC32Update | 64 | avgt | 10 | 222.297 | 0.106 | ns/op
> TestCRC32.testCRC32Update | 128 | avgt | 10 | 365.144 | 0.196 | ns/op
> TestCRC32.testCRC32Update | 256 | avgt | 10 | 687.14 | 0.235 | ns/op
> TestCRC32.testCRC32Update | 512 | avgt | 10 | 1043.833 | 0.083 | ns/op
> TestCRC32.testCRC32Update | 2048 | avgt | 10 | 3299.928 | 1.361 | ns/op
> TestCRC32.testCRC32Update | 16384 | avgt | 10 | 24384.502 | 25.298 | ns/op
> TestCRC32.testCRC32Update | 65536 | avgt | 10 | 103200.458 | 8.297 | ns/op
>
> </google-sheets-html-origin>
>
> without patch
> <google-sheets-html-origin style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0); font-style: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;">
> Benchmark | (count) | Mode | Cnt | Score | Error | Units
> -- | -- | -- | -- | -- | -- | --
> TestCRC32.testCRC32Update | 64 | avgt | 10 | 220.878 | 0.02 | ns/op
> TestCRC32.testCRC32Update | 128 | avgt | 10 | 364.173 | 0.032 | ns/op
> TestCRC32.testCRC32Update | 256 | avgt | 10 | 685.815 | 0.055 | ns/op
> TestCRC32.testCRC32Update | 512 | avgt | 10 | 1329.049 | 0.084 | ns/op
> TestCRC32.testCRC32Update | 2048 | avgt | 10 | 5189.302 | 0.666 | ns/op
> TestCRC32.testCRC32Update | 16384 | avgt | 10 | 41250.873 | 23.882 | ns/op
> TestCRC32.testCRC32Update | 65536 | avgt | 10 | 171664.002 | 15.011 | ns/op
>
> </google-sheets-html-origin>
>
> ### on K230
>
> with patch
> <google-sheets-html-origin style="caret-color: rgb(0, 0, ...
This pull request has now been integrated.
Changeset: 08a2f841
Author: Hamlin Li <mli at openjdk.org>
URL: https://git.openjdk.org/jdk/commit/08a2f841ec78a10f8d6d54b2ac3a92e89f765f14
Stats: 342 lines in 3 files changed: 336 ins; 1 del; 5 mod
8339738: RISC-V: Vectorize crc32 intrinsic
Reviewed-by: fyang, luhenry
-------------
PR: https://git.openjdk.org/jdk/pull/20910
More information about the hotspot-dev
mailing list