Integrated: 8277358: Accelerate CRC32-C

Scott Gibbons duke at openjdk.java.net
Thu Dec 2 20:09:23 UTC 2021


On Mon, 29 Nov 2021 14:45:22 GMT, Scott Gibbons <duke at openjdk.java.net> wrote:

> Accelerates CRC32-C by utilizing vpclmulqdq similarly to CRC32.  This change achieves ~4x throughput improvement.
> 
> 5986.947899319073 MB/s => 24041.05203089616 MB/s
> 5840.02689336947 MB/s => 24898.781468710356 MB/s
> 
> ********** Original ***********
> 
> 
> scottgi at 96974-ICX32:~/crc/jdk (asgibbons-crc32c)$ java test/hotspot/jtreg/compiler/intrinsics/zip/TestCRC32C.java 20000000
>  offset = 0
> msgSize = 512 bytes
>   iters = 20000000
> -------------------------------------------------------
> CRCs: crc = ae10ee5a, crcReference = ae10ee5a
> CRC32C.update(byte[]) runtime = 1.710387358 seconds
> CRC32C.update(byte[]) throughput = 5986.947899319073 MB/s
> CRCs: crc = ae10ee5a, crcReference = ae10ee5a
> -------------------------------------------------------
> CRCs: crc = ae10ee5a, crcReference = ae10ee5a
> CRC32C.update(ByteBuffer) runtime = 1.753416583 seconds
> CRC32C.update(ByteBuffer) throughput = 5840.02689336947 MB/s
> CRCs: crc = ae10ee5a, crcReference = ae10ee5a
> -------------------------------------------------------
> 
> 
> 
> 
> *********** With my changes: *************
> 
> 
> 
> scottgi at 96974-ICX32:~/crc/jdk (asgibbons-crc32c)$ java test/hotspot/jtreg/compiler/intrinsics/zip/TestCRC32C.java 20000000
>  offset = 0
> msgSize = 512 bytes
>   iters = 20000000
> -------------------------------------------------------
> CRCs: crc = ae10ee5a, crcReference = ae10ee5a
> CRC32C.update(byte[]) runtime = 0.425938099 seconds
> CRC32C.update(byte[]) throughput = 24041.05203089616 MB/s
> CRCs: crc = ae10ee5a, crcReference = ae10ee5a
> -------------------------------------------------------
> CRCs: crc = ae10ee5a, crcReference = ae10ee5a
> CRC32C.update(ByteBuffer) runtime = 0.411265106 seconds
> CRC32C.update(ByteBuffer) throughput = 24898.781468710356 MB/s
> CRCs: crc = ae10ee5a, crcReference = ae10ee5a
> -------------------------------------------------------

This pull request has now been integrated.

Changeset: e0f1fc78
Author:    Scott Gibbons <scott.gibbons at intel.com>
Committer: Sandhya Viswanathan <sviswanathan at openjdk.org>
URL:       https://git.openjdk.java.net/jdk/commit/e0f1fc783cb492dd1eb18f2d56c57bdc160a410d
Stats:     126 lines in 5 files changed: 98 ins; 4 del; 24 mod

8277358: Accelerate CRC32-C

Co-authored-by: Greg Tucker <greg.b.tucker at intel.com>
Co-authored-by: Scott Gibbons <sgibbons at openjdk.org>
Reviewed-by: kvn, sviswanathan, ecaspole

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

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


More information about the hotspot-compiler-dev mailing list