RFR: 8318217: RISC-V: C2 VectorizedHashCode [v9]

Yuri Gaevsky duke at openjdk.org
Wed Dec 6 12:39:45 UTC 2023


On Wed, 6 Dec 2023 09:23:28 GMT, Fei Yang <fyang at openjdk.org> wrote:

>> Yuri Gaevsky has updated the pull request incrementally with one additional commit since the last revision:
>> 
>>   Changed lb-->lbu for T_BOOLEAN and iRegINoSp-->iRegLNoSp for tmp2/tmp3.
>
> So I tried this on sifive unmatched. Unfortunately, I see some performance regressions with this change.
> Before:
> 
> Benchmark                   (size)  Mode  Cnt      Score     Error  Units
> ArraysHashCode.bytes             1  avgt   15     19.737 ?    5.405  ns/op
> ArraysHashCode.bytes            10  avgt   15     56.102 ?    3.191  ns/op
> ArraysHashCode.bytes           100  avgt   15    317.126 ?    3.452  ns/op
> ArraysHashCode.bytes         10000  avgt   15  28380.470 ?   20.709  ns/op
> ArraysHashCode.chars             1  avgt   15     15.532 ?    2.623  ns/op
> ArraysHashCode.chars            10  avgt   15     59.603 ?    2.440  ns/op
> ArraysHashCode.chars           100  avgt   15    333.995 ?    3.834  ns/op
> ArraysHashCode.chars         10000  avgt   15  29464.768 ?   16.751  ns/op
> ArraysHashCode.ints              1  avgt   15     16.031 ?    2.820  ns/op
> ArraysHashCode.ints             10  avgt   15     59.506 ?    3.980  ns/op
> ArraysHashCode.ints            100  avgt   15    335.514 ?    4.695  ns/op
> ArraysHashCode.ints          10000  avgt   15  33966.175 ?  929.859  ns/op
> ArraysHashCode.multibytes        1  avgt   15      7.840 ?    0.110  ns/op
> ArraysHashCode.multibytes       10  avgt   15     34.727 ?    0.547  ns/op
> ArraysHashCode.multibytes      100  avgt   15    193.085 ?    0.814  ns/op
> ArraysHashCode.multibytes    10000  avgt   15  16610.239 ?   27.290  ns/op
> ArraysHashCode.multichars        1  avgt   15      7.853 ?    0.092  ns/op
> ArraysHashCode.multichars       10  avgt   15     35.059 ?    0.241  ns/op
> ArraysHashCode.multichars      100  avgt   15    203.483 ?    0.413  ns/op
> ArraysHashCode.multichars    10000  avgt   15  18819.804 ?   75.487  ns/op
> ArraysHashCode.multiints         1  avgt   15      7.878 ?    0.104  ns/op
> ArraysHashCode.multiints        10  avgt   15     35.232 ?    0.196  ns/op
> ArraysHashCode.multiints       100  avgt   15    211.087 ?    1.914  ns/op
> ArraysHashCode.multiints     10000  avgt   15  30172.693 ? 1447.757  ns/op
> ArraysHashCode.multishorts       1  avgt   15      7.788 ?    0.046  ns/op
> ArraysHashCode.multishorts      10  avgt   15     35.504 ?    0.465  ns/op
> ArraysHashCode.multishorts     100  avgt   15    203.530 ?    0.342  ns/op
> ArraysHashCode.multishorts   10000  avgt   15  18801.799 ?   77.159  ns/op
> ArraysHashCode.shorts            1  avgt   15     19.685 ?    5.413  ns/op
> ArraysHashCode.shorts           10  avgt   15     59.583 ?    4.684  ns/op
> ArraysHashCode.shorts          100  avgt   15    333.170 ?    ...

@RealFYang - many thanks for checking my results. I can confirm the regressions found by you on '_Sifive Unmatched_' and '_StarFive JH7110_' but not on '_T-Head RVB-ICE_'.

Sifive Unmatched:

Benchmark                   (size)  Mode  Cnt      Score     Error      Score     Error  Units
ArraysHashCode.bytes            10  avgt   15     64.318 ±   2.035     54.062 ±   5.229  ns/op
ArraysHashCode.bytes           100  avgt   15    317.512 ±   1.944    352.153 ±   2.802  ns/op
ArraysHashCode.bytes          1000  avgt   15   2875.723 ±   5.773   3185.938 ±  11.533  ns/op
ArraysHashCode.bytes         10000  avgt   15  28386.639 ±  42.689  31602.956 ± 101.607  ns/op
ArraysHashCode.chars            10  avgt   15     61.976 ±   5.562     52.773 ±   0.572  ns/op
ArraysHashCode.chars           100  avgt   15    332.949 ±   5.650    347.923 ±   2.549  ns/op
ArraysHashCode.chars          1000  avgt   15   2991.818 ±   4.396   3186.808 ±   3.248  ns/op
ArraysHashCode.chars         10000  avgt   15  29528.339 ±  30.613  31580.887 ±  24.868  ns/op
ArraysHashCode.ints             10  avgt   15     62.328 ±   5.592     57.784 ±   5.973  ns/op
ArraysHashCode.ints            100  avgt   15    328.240 ±   0.556    342.637 ±   4.174  ns/op
ArraysHashCode.ints           1000  avgt   15   2984.384 ±   0.865   3175.596 ±   5.490  ns/op
ArraysHashCode.ints          10000  avgt   15  33830.448 ±  55.105  36310.776 ±  39.960  ns/op
ArraysHashCode.multibytes       10  avgt   15     34.593 ±   0.318     29.497 ±   0.164  ns/op
ArraysHashCode.multibytes      100  avgt   15    193.281 ±   0.548    184.273 ±   0.293  ns/op
ArraysHashCode.multibytes     1000  avgt   15   1651.863 ±   7.210   1816.328 ±  15.627  ns/op
ArraysHashCode.multibytes    10000  avgt   15  16653.946 ±  42.054  18371.511 ±  63.512  ns/op
ArraysHashCode.multichars       10  avgt   15     35.104 ±   0.228     29.222 ±   0.165  ns/op
ArraysHashCode.multichars      100  avgt   15    203.873 ±   0.170    187.397 ±   0.249  ns/op
ArraysHashCode.multichars     1000  avgt   15   1900.463 ±   5.472   2018.710 ±   7.485  ns/op
ArraysHashCode.multichars    10000  avgt   15  18991.838 ± 124.180  20257.406 ± 236.705  ns/op
ArraysHashCode.multiints        10  avgt   15     35.232 ±   0.159     29.439 ±   0.199  ns/op
ArraysHashCode.multiints       100  avgt   15    211.201 ±   0.330    197.014 ±   0.242  ns/op
ArraysHashCode.multiints      1000  avgt   15   2225.082 ±  13.261   2363.767 ±   7.716  ns/op
ArraysHashCode.multiints     10000  avgt   15  31441.156 ± 574.230  33215.921 ± 392.809  ns/op
ArraysHashCode.multishorts      10  avgt   15     35.068 ±   0.164     29.237 ±   0.103  ns/op
ArraysHashCode.multishorts     100  avgt   15    203.904 ±   0.393    186.776 ±   0.481  ns/op
ArraysHashCode.multishorts    1000  avgt   15   1897.351 ±   7.325   2019.786 ±   6.929  ns/op
ArraysHashCode.multishorts   10000  avgt   15  18907.910 ±  77.537  20349.999 ± 363.546  ns/op
ArraysHashCode.shorts           10  avgt   15     56.984 ±   0.414     54.080 ±   2.779  ns/op
ArraysHashCode.shorts          100  avgt   15    327.769 ±   2.124    347.356 ±   3.553  ns/op
ArraysHashCode.shorts         1000  avgt   15   2988.008 ±   8.788   3175.180 ±   1.255  ns/op
ArraysHashCode.shorts        10000  avgt   15  29520.151 ±  58.051  31577.025 ±  66.598  ns/op


T-Head RVB-ICE:

Benchmark                   (size)  Mode  Cnt      Score     Error      Score    Error  Units
ArraysHashCode.bytes            10  avgt   15     51.762 ±   0.378     46.688 ±  0.274  ns/op
ArraysHashCode.bytes           100  avgt   15    282.922 ±   0.891    228.657 ±  1.265  ns/op
ArraysHashCode.bytes          1000  avgt   15   2550.826 ±   3.773   1790.795 ±  3.891  ns/op
ArraysHashCode.bytes         10000  avgt   15  25165.387 ±  72.982  17510.131 ± 30.293  ns/op
ArraysHashCode.chars            10  avgt   15     53.831 ±   0.225     46.425 ±  0.231  ns/op
ArraysHashCode.chars           100  avgt   15    285.555 ±   0.813    237.081 ±  1.216  ns/op
ArraysHashCode.chars          1000  avgt   15   2558.697 ±   6.253   1893.147 ±  3.187  ns/op
ArraysHashCode.chars         10000  avgt   15  25162.198 ±  67.487  18558.521 ± 49.710  ns/op
ArraysHashCode.ints             10  avgt   15     52.046 ±   0.170     46.364 ±  0.240  ns/op
ArraysHashCode.ints            100  avgt   15    285.322 ±   0.924    238.531 ±  0.901  ns/op
ArraysHashCode.ints           1000  avgt   15   2557.016 ±   6.214   1892.898 ±  3.588  ns/op
ArraysHashCode.ints          10000  avgt   15  25272.506 ± 116.785  18599.428 ± 45.966  ns/op
ArraysHashCode.multibytes       10  avgt   15     26.190 ±   0.129     18.942 ±  0.103  ns/op
ArraysHashCode.multibytes      100  avgt   15    160.660 ±   0.400    116.278 ±  0.287  ns/op
ArraysHashCode.multibytes     1000  avgt   15   1366.136 ±   9.128    908.505 ±  2.456  ns/op
ArraysHashCode.multibytes    10000  avgt   15  13290.571 ±  21.784   8975.082 ± 18.118  ns/op
ArraysHashCode.multichars       10  avgt   15     26.630 ±   0.153     19.760 ±  0.178  ns/op
ArraysHashCode.multichars      100  avgt   15    164.371 ±   0.438    118.326 ±  0.334  ns/op
ArraysHashCode.multichars     1000  avgt   15   1399.774 ±   3.369   1031.653 ±  2.678  ns/op
ArraysHashCode.multichars    10000  avgt   15  13321.995 ±  27.186   9653.414 ± 44.167  ns/op
ArraysHashCode.multiints        10  avgt   15     25.878 ±   0.093     19.145 ±  0.217  ns/op
ArraysHashCode.multiints       100  avgt   15    169.129 ±   0.551    126.062 ±  0.239  ns/op
ArraysHashCode.multiints      1000  avgt   15   1405.709 ±   8.575   1046.932 ±  3.110  ns/op
ArraysHashCode.multiints     10000  avgt   15  13712.716 ±  28.671  10414.196 ± 19.044  ns/op
ArraysHashCode.multishorts      10  avgt   15     26.614 ±   0.240     19.742 ±  0.169  ns/op
ArraysHashCode.multishorts     100  avgt   15    164.488 ±   0.296    119.336 ±  0.434  ns/op
ArraysHashCode.multishorts    1000  avgt   15   1396.339 ±   3.062   1032.205 ±  4.604  ns/op
ArraysHashCode.multishorts   10000  avgt   15  13475.962 ±  27.035   9694.721 ± 38.618  ns/op
ArraysHashCode.shorts           10  avgt   15     52.145 ±   0.671     50.525 ±  0.560  ns/op
ArraysHashCode.shorts          100  avgt   15    284.563 ±   0.663    236.216 ±  1.160  ns/op
ArraysHashCode.shorts         1000  avgt   15   2565.527 ±   5.313   1895.385 ±  3.632  ns/op
ArraysHashCode.shorts        10000  avgt   15  25160.261 ±  78.896  18562.613 ± 62.708  ns/op


StarFive JH7110

Benchmark                   (size)  Mode  Cnt      Score    Error      Score     Error  Units
ArraysHashCode.bytes            10  avgt   15     40.824 ?  0.148     39.565 ?   0.069  ns/op
ArraysHashCode.bytes           100  avgt   15    250.700 ?  1.212    268.188 ?   0.864  ns/op
ArraysHashCode.bytes          1000  avgt   15   2290.265 ?  5.880   2524.649 ?   5.811  ns/op
ArraysHashCode.bytes         10000  avgt   15  22593.288 ?  4.222  25114.007 ?  41.732  ns/op
ArraysHashCode.chars            10  avgt   15     45.736 ?  0.356     40.116 ?   0.043  ns/op
ArraysHashCode.chars           100  avgt   15    261.146 ?  0.383    270.978 ?   0.697  ns/op
ArraysHashCode.chars          1000  avgt   15   2371.921 ?  0.679   2526.244 ?   6.915  ns/op
ArraysHashCode.chars         10000  avgt   15  23421.998 ?  2.523  25095.058 ?  71.641  ns/op
ArraysHashCode.ints             10  avgt   15     45.419 ?  0.007     40.214 ?   0.171  ns/op
ArraysHashCode.ints            100  avgt   15    262.007 ?  1.421    270.151 ?   0.429  ns/op
ArraysHashCode.ints           1000  avgt   15   2371.512 ?  0.402   2525.866 ?   1.160  ns/op
ArraysHashCode.ints          10000  avgt   15  29589.412 ? 13.383  31285.973 ? 163.943  ns/op
ArraysHashCode.multibytes       10  avgt   15     27.079 ?  0.172     22.170 ?   0.114  ns/op
ArraysHashCode.multibytes      100  avgt   15    155.937 ?  0.745    146.639 ?   0.165  ns/op
ArraysHashCode.multibytes     1000  avgt   15   1291.860 ?  2.052   1415.878 ?   2.299  ns/op
ArraysHashCode.multibytes    10000  avgt   15  12777.667 ?  2.627  14123.991 ?  68.454  ns/op
ArraysHashCode.multichars       10  avgt   15     28.005 ?  0.136     22.282 ?   0.077  ns/op
ArraysHashCode.multichars      100  avgt   15    166.277 ?  0.593    151.245 ?   0.524  ns/op
ArraysHashCode.multichars     1000  avgt   15   1432.254 ?  5.252   1513.058 ?   5.612  ns/op
ArraysHashCode.multichars    10000  avgt   15  14125.547 ? 52.368  15030.018 ?  89.649  ns/op
ArraysHashCode.multiints        10  avgt   15     26.678 ?  0.220     22.650 ?   0.260  ns/op
ArraysHashCode.multiints       100  avgt   15    179.278 ?  0.316    165.724 ?   0.606  ns/op
ArraysHashCode.multiints      1000  avgt   15   1605.150 ?  2.885   1684.205 ?   2.334  ns/op
ArraysHashCode.multiints     10000  avgt   15  16517.998 ? 71.869  17220.866 ?  65.161  ns/op
ArraysHashCode.multishorts      10  avgt   15     27.507 ?  0.133     22.270 ?   0.056  ns/op
ArraysHashCode.multishorts     100  avgt   15    166.159 ?  0.377    152.968 ?   0.696  ns/op
ArraysHashCode.multishorts    1000  avgt   15   1430.556 ?  1.569   1509.756 ?   1.608  ns/op
ArraysHashCode.multishorts   10000  avgt   15  14114.634 ?  5.609  14992.519 ?  11.684  ns/op
ArraysHashCode.shorts           10  avgt   15     45.606 ?  0.289     40.080 ?   0.006  ns/op
ArraysHashCode.shorts          100  avgt   15    261.538 ?  0.954    270.748 ?   3.619  ns/op
ArraysHashCode.shorts         1000  avgt   15   2385.091 ?  2.082   2527.360 ?   8.349  ns/op
ArraysHashCode.shorts        10000  avgt   15  23420.647 ?  3.081  25066.912 ?   4.099  ns/op


Let me check which updates for the patch caused such results.

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

PR Comment: https://git.openjdk.org/jdk/pull/16629#issuecomment-1842778944


More information about the hotspot-dev mailing list