RFR: 8322179: RISC-V: Implement SHA-1 intrinsic [v4]
Fei Yang
fyang at openjdk.org
Tue Jan 16 07:14:19 UTC 2024
On Wed, 10 Jan 2024 09:14:05 GMT, Hamlin Li <mli at openjdk.org> wrote:
>> Hi,
>> Can you review this patch to implement SHA-1 intrinsic for riscv?
>> Thanks!
>>
>>
>> ## Test
>>
>> ### Functionality
>>
>> tests under `test/hotspot/jtreg/compiler/intrinsics/sha`
>> tests found via `find test/jdk -iname "*SHA1*.java"`
>>
>> ### Performance
>>
>> tested on `T-HEAD Light Lichee Pi 4A`
>>
>> JMH_PARAMS="-f 1 -wi 10 -i 20" // for every loop of jmh test
>>
>> benchmark tests `MessageDigests.java GetMessageDigest.java MessageDigestBench.java MacBench.java` which are under `test/micro/org/openjdk/bench/`, more spcifically `TESTS="MessageDigests.digest MessageDigests.getAndDigest MessageDigestBench.digest"`
>>
>>
>> // After
>> o.o.b.java.security.MessageDigests.digest N/A N/A SHA-1 64 DEFAULT avgt 20 1845.446 ? 27.052 ns/op
>> o.o.b.java.security.MessageDigests.digest N/A N/A SHA-1 16384 DEFAULT avgt 20 181455.350 ? 532.258 ns/op
>> o.o.b.java.security.MessageDigests.getAndDigest N/A N/A SHA-1 64 DEFAULT avgt 20 2447.674 ? 10.239 ns/op
>> o.o.b.java.security.MessageDigests.getAndDigest N/A N/A SHA-1 16384 DEFAULT avgt 20 182896.083 ? 1242.774 ns/op
>> o.o.b.javax.crypto.small.MessageDigestBench.digest SHA1 1048576 N/A N/A avgt 20 11599227.792 ? 121442.390 ns/op
>> // Before
>> o.o.b.java.security.MessageDigests.digest N/A N/A SHA-1 64 DEFAULT avgt 20 2352.475 ? 11.198 ns/op
>> o.o.b.java.security.MessageDigests.digest N/A N/A SHA-1 16384 DEFAULT avgt 20 188495.684 ? 1467.942 ns/op
>> o.o.b.java.security.MessageDigests.getAndDigest N/A N/A SHA-1 64 DEFAULT avgt 20 2437.347 ? 6.398 ns/op
>> o.o.b.java.security.MessageDigests.getAndDigest N/A N/A SHA-1 16384 DEFAULT avgt 20 196086.570 ? 1140.998 ns/op
>> o.o.b.javax.crypto.small.MessageDigestBench.digest SHA1 1048576 N/A N/A avgt 20 12362160.119 ? 38788.109 ns/op
>>
>>
>> **getAndDigest when size == 64**
>> The data is not stable for test getAndDigest when size == 64, which I think is introduced by j.s.MessageDigest.getInstance itself, which we don't touch in this patch.
>> Check more details at [1](ht...
>
> Hamlin Li has updated the pull request incrementally with two additional commits since the last revision:
>
> - remove tp/gp
> - refine code
FYI: The performance numbers seems more stable on other platforms like Unmatched board (JMH AverageTime mode):
Before:
MessageDigests.digest SHA-1 64 DEFAULT avgt 15 3974.419 ? 28.954 ns/op
MessageDigests.digest SHA-1 16384 DEFAULT avgt 15 411073.165 ? 3731.988 ns/op
MessageDigests.getAndDigest SHA-1 64 DEFAULT avgt 15 7136.679 ? 480.850 ns/op
MessageDigests.getAndDigest SHA-1 16384 DEFAULT avgt 15 429881.929 ? 1265.110 ns/op
MessageDigests.digest SHA-1 64 DEFAULT avgt 15 3993.060 ? 6.265 ns/op
MessageDigests.digest SHA-1 16384 DEFAULT avgt 15 410724.751 ? 2075.018 ns/op
MessageDigests.getAndDigest SHA-1 64 DEFAULT avgt 15 7085.596 ? 496.358 ns/op
MessageDigests.getAndDigest SHA-1 16384 DEFAULT avgt 15 430184.356 ? 1052.236 ns/op
MessageDigests.digest SHA-1 64 DEFAULT avgt 15 4016.232 ? 48.074 ns/op
MessageDigests.digest SHA-1 16384 DEFAULT avgt 15 417735.231 ? 7001.640 ns/op
MessageDigests.getAndDigest SHA-1 64 DEFAULT avgt 15 7114.528 ? 504.775 ns/op
MessageDigests.getAndDigest SHA-1 16384 DEFAULT avgt 15 438041.321 ? 20056.313 ns/op
After:
MessageDigests.digest SHA-1 64 DEFAULT avgt 15 3685.514 ? 5.401 ns/op
MessageDigests.digest SHA-1 16384 DEFAULT avgt 15 364406.355 ? 217.797 ns/op
MessageDigests.getAndDigest SHA-1 64 DEFAULT avgt 15 5427.864 ? 41.520 ns/op
MessageDigests.getAndDigest SHA-1 16384 DEFAULT avgt 15 367995.806 ? 228.853 ns/op
MessageDigests.digest SHA-1 64 DEFAULT avgt 15 3681.851 ? 6.591 ns/op
MessageDigests.digest SHA-1 16384 DEFAULT avgt 15 364433.610 ? 226.146 ns/op
MessageDigests.getAndDigest SHA-1 64 DEFAULT avgt 15 5483.575 ? 46.445 ns/op
MessageDigests.getAndDigest SHA-1 16384 DEFAULT avgt 15 367713.143 ? 348.944 ns/op
MessageDigests.digest SHA-1 64 DEFAULT avgt 15 3686.556 ? 6.273 ns/op
MessageDigests.digest SHA-1 16384 DEFAULT avgt 15 364631.822 ? 1265.576 ns/op
MessageDigests.getAndDigest SHA-1 64 DEFAULT avgt 15 5496.395 ? 66.473 ns/op
MessageDigests.getAndDigest SHA-1 16384 DEFAULT avgt 15 367870.983 ? 296.836 ns/op
-------------
PR Comment: https://git.openjdk.org/jdk/pull/17130#issuecomment-1893178691
More information about the hotspot-dev
mailing list