RFR: 8267190: Optimize Vector API test operations
Sandhya Viswanathan
sviswanathan at openjdk.java.net
Sat May 15 00:18:17 UTC 2021
Vector API test operations (IS_DEFAULT, IS_FINITE, IS_INFINITE, IS_NAN and IS_NEGATIVE) are computed in three steps:
1) reinterpreting the floating point vectors as integral vectors (int/long)
2) perform the test in integer domain to get a int/long mask
3) reinterpret the int/long mask as float/double mask
Step 3) currently is very slow. It can be optimized by modifying the Java code to utilize the existing reinterpret intrinsic.
For the VectorTestPerf attached to the JBS for JDK-8267190, the performance improves as follows:
Base:
Benchmark (size) Mode Cnt Score Error Units
VectorTestPerf.IS_DEFAULT 1024 thrpt 5 223.156 ± 90.452 ops/ms
VectorTestPerf.IS_FINITE 1024 thrpt 5 223.841 ± 91.685 ops/ms
VectorTestPerf.IS_INFINITE 1024 thrpt 5 224.561 ± 83.890 ops/ms
VectorTestPerf.IS_NAN 1024 thrpt 5 223.777 ± 70.629 ops/ms
VectorTestPerf.IS_NEGATIVE 1024 thrpt 5 218.392 ± 79.806 ops/ms
With patch:
Benchmark (size) Mode Cnt Score Error Units
VectorTestPerf.IS_DEFAULT 1024 thrpt 5 8812.357 ± 40.477 ops/ms
VectorTestPerf.IS_FINITE 1024 thrpt 5 7425.739 ± 296.622 ops/ms
VectorTestPerf.IS_INFINITE 1024 thrpt 5 8932.730 ± 269.988 ops/ms
VectorTestPerf.IS_NAN 1024 thrpt 5 8574.872 ± 498.649 ops/ms
VectorTestPerf.IS_NEGATIVE 1024 thrpt 5 8838.400 ± 11.849 ops/ms
Best Regards,
Sandhya
-------------
Commit messages:
- 8267190: Optimize Vector API test operations
Changes: https://git.openjdk.java.net/jdk/pull/4039/files
Webrev: https://webrevs.openjdk.java.net/?repo=jdk&pr=4039&range=00
Issue: https://bugs.openjdk.java.net/browse/JDK-8267190
Stats: 809 lines in 32 files changed: 714 ins; 0 del; 95 mod
Patch: https://git.openjdk.java.net/jdk/pull/4039.diff
Fetch: git fetch https://git.openjdk.java.net/jdk pull/4039/head:pull/4039
PR: https://git.openjdk.java.net/jdk/pull/4039
More information about the hotspot-compiler-dev
mailing list