On Mon, 7 Jul 2025 03:05:15 GMT, Mohamed Issa <mi...@openjdk.org> wrote:

> The goal of this PR is to implement an x86_64 intrinsic for 
> java.lang.Math.sinh() using libm. There is a new set of micro-benchmarks are 
> included to check the performance of specific input value ranges to help 
> prevent regressions in the future.
> 
> The command to run all range specific micro-benchmarks is posted below.
> 
> `make test TEST="micro:SinhPerf.SinhPerfRanges"`
> 
> The results of all tests posted below were captured with an [IntelĀ® Xeon 
> 8488C](https://advisor.cloudzero.com/aws/ec2/r7i.metal-24xl) using [OpenJDK 
> v26-b4](https://github.com/openjdk/jdk/releases/tag/jdk-26%2B4) as the 
> baseline version.
> 
> For performance data collected with the new built in range micro-benchmark, 
> see the table below. Each result is the mean of 8 individual runs, and the 
> input ranges used match those from the original Java implementation. Overall, 
> the intrinsic provides an an average uplift of 64% when input values fall 
> into the middle three ranges where heavy computation is required. However, 
> very small inputs and very large inputs show drops of 74% and 66% 
> respectively.
> 
> | Input range(s)                                 | Baseline throughput 
> (ops/ms) | Intrinsic throughput (ops/ms) | Speedup |
> | :------------------------------------: | :-------------------------------: 
> | :--------------------------------: | :--------: |
> | [-2^(-28), 2^(-28)]                          | 844160                       
>              | 216029                                     | 0.26x       |
> | [-22, -2^(-28)], [2^(-28), 22]           | 81662                            
>           | 157351                                    | 1.93x       |
> | [-709.78, -22], [22, 709.78]              | 119075                          
>           | 167635                                    | 1.41x       |
> | [-710.48, -709.78], [709.78, 710.48] | 111636                               
>     | 177125                                     | 1.59x       |
> | (-INF, -710.48], [710.48, INF)           | 959296                           
>          | 313839                                    | 0.33x       |
> 
> Finally, the `jtreg:test/jdk/java/lang/Math/HyperbolicTests.java` test passed 
> with the changes.

What is the accuracy of the algorithm in ulps (units the last place)?

The java.lang.Math specification has max error and various other accuracy 
requirements any implementation must meet.

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

PR Comment: https://git.openjdk.org/jdk/pull/26152#issuecomment-3055484802

Reply via email to