RFR: 8318217: RISC-V: C2 VectorizedHashCode
Yuri Gaevsky
duke at openjdk.org
Mon Nov 13 12:39:16 UTC 2023
Hello All,
Please review these changes to support _vectorizedHashCode intrinsic on
RISC-V platform. The patch adds the "scalar" code for the intrinsic without
usage of any RVV instruction but provides manual unrolling of the appropriate
loop. The code with usage of RVV instruction could be added as follow-up of
the patch or independently.
Thanks,
-Yuri Gaevsky
P.S. My OCA has been accepted recently (ygaevsky).
### Correctness checks
Testing: tier1 tests successfully passed on a RISC-V StarFive JH7110 board with Linux.
### Performance results (the numbers for non-ints are similar)
#### StarFive JH7110 board:
ArraysHashCode: without intrinsic with intrinsic
-------------------------------------------------------------------------------
Benchmark (size) Mode Cnt Score Error Score Error Units
-------------------------------------------------------------------------------
multiints 0 avgt 30 2.658 ? 0.001 2.661 ? 0.004 ns/op
multiints 1 avgt 30 4.881 ? 0.011 4.892 ? 0.015 ns/op
multiints 2 avgt 30 16.109 ? 0.041 10.451 ? 0.075 ns/op
multiints 3 avgt 30 14.873 ? 0.068 11.753 ? 0.024 ns/op
multiints 4 avgt 30 17.283 ? 0.078 13.176 ? 0.044 ns/op
multiints 5 avgt 30 19.691 ? 0.136 14.723 ? 0.046 ns/op
multiints 6 avgt 30 21.727 ? 0.166 15.463 ? 0.124 ns/op
multiints 7 avgt 30 23.790 ? 0.126 18.298 ? 0.059 ns/op
multiints 8 avgt 30 23.527 ? 0.116 18.267 ? 0.046 ns/op
multiints 9 avgt 30 27.981 ? 0.303 20.453 ? 0.069 ns/op
multiints 10 avgt 30 26.947 ? 0.215 20.541 ? 0.051 ns/op
multiints 50 avgt 30 95.373 ? 0.588 69.238 ? 0.208 ns/op
multiints 100 avgt 30 177.109 ? 0.525 137.852 ? 0.417 ns/op
multiints 200 avgt 30 341.074 ? 1.363 296.832 ? 0.725 ns/op
multiints 500 avgt 30 847.993 ? 1.713 752.415 ? 1.918 ns/op
multiints 1000 avgt 30 1610.199 ? 5.424 1426.112 ? 3.407 ns/op
multiints 10000 avgt 30 16234.260 ? 26.789 14447.936 ? 26.345 ns/op
multiints 100000 avgt 30 170726.025 ? 184.003 152587.649 ? 381.964 ns/op
-------------------------------------------------------------------------------
#### T-Head RVB-ICE board:
ArraysHashCode: without intrinsic with intrinsic
------------------------------------------------------------------------------
Benchmark (size) Mode Cnt Score Error Score Error Units
------------------------------------------------------------------------------
multiints 0 avgt 30 2.780 ? 0.022 2.816 ? 0.038 ns/op
multiints 1 avgt 30 5.073 ? 0.032 5.101 ? 0.064 ns/op
multiints 2 avgt 30 14.656 ? 0.234 10.974 ? 0.118 ns/op
multiints 3 avgt 30 12.890 ? 0.064 14.168 ? 0.096 ns/op
multiints 4 avgt 30 13.715 ? 0.092 12.552 ? 0.188 ns/op
multiints 5 avgt 30 19.068 ? 0.172 13.557 ? 0.164 ns/op
multiints 6 avgt 30 18.863 ? 0.122 14.848 ? 0.086 ns/op
multiints 7 avgt 30 23.155 ? 0.123 17.300 ? 0.360 ns/op
multiints 8 avgt 30 21.656 ? 0.130 19.214 ? 1.689 ns/op
multiints 9 avgt 30 27.223 ? 0.116 20.450 ? 0.088 ns/op
multiints 10 avgt 30 26.194 ? 0.116 19.463 ? 0.411 ns/op
multiints 50 avgt 30 97.904 ? 1.396 69.662 ? 1.729 ns/op
multiints 100 avgt 30 179.607 ? 0.766 137.127 ? 3.156 ns/op
multiints 200 avgt 30 303.845 ? 2.743 235.476 ? 3.446 ns/op
multiints 500 avgt 30 752.295 ? 2.131 571.157 ? 4.258 ns/op
multiints 1000 avgt 30 1404.489 ? 5.839 1048.263 ? 3.473 ns/op
multiints 10000 avgt 30 13797.829 ? 44.821 10344.752 ? 24.183 ns/op
multiints 100000 avgt 30 135067.307 ? 254.361 98806.823 ? 131.562 ns/op
------------------------------------------------------------------------------
-------------
Commit messages:
- 8318217: RISC-V: C2 VectorizedHashCode
Changes: https://git.openjdk.org/jdk/pull/16629/files
Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=16629&range=00
Issue: https://bugs.openjdk.org/browse/JDK-8318217
Stats: 145 lines in 6 files changed: 145 ins; 0 del; 0 mod
Patch: https://git.openjdk.org/jdk/pull/16629.diff
Fetch: git fetch https://git.openjdk.org/jdk.git pull/16629/head:pull/16629
PR: https://git.openjdk.org/jdk/pull/16629
More information about the hotspot-dev
mailing list