-
Notifications
You must be signed in to change notification settings - Fork 6.1k
8321010: RISC-V: C2 RoundVF #17745
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
8321010: RISC-V: C2 RoundVF #17745
Conversation
👋 Welcome back mli! A progress list of the required criteria for merging this PR into |
@Hamlin-Li The following label will be automatically applied to this pull request:
When this pull request is ready to be reviewed, an "RFR" email will be sent to the corresponding mailing list. If you would like to change these labels, use the /label pull request command. |
/solves JDK-8321011 |
Webrevs
|
@Hamlin-Li |
Hello Hamlin, I recall you had licheepi board. This PR showed it's not always easy to win perf just by using rvv - #17413 I understand it might not be possible, but would be nice to give it a try (I can share hsdis with support for 0.7.1 if needed) |
@VladimirKempik Thanks for your comments, I'll consider it. |
Hey, I'll be on vacation for a while, so maybe slow in response. |
test/hotspot/jtreg/compiler/vectorization/TestRoundVectRiscv64.java
Outdated
Show resolved
Hide resolved
test/hotspot/jtreg/compiler/vectorization/TestRoundVectRiscv64.java
Outdated
Show resolved
Hide resolved
Had a internal discussion about your suggestion, seems 0.7.1 is not incompatible with 1.0/2.0, and for this simple intrinsic, we think a better path is to have it first, then re-visit it when we have real hardware to measure the performance later. |
@Hamlin-Li This change now passes all automated pre-integration checks. ℹ️ This project also has non-automated pre-integration requirements. Please see the file CONTRIBUTING.md for details. After integration, the commit message for the final commit will be:
You can use pull request commands such as /summary, /contributor and /issue to adjust it as needed. At the time when this comment was updated there had been 436 new commits pushed to the
As there are no conflicts, your changes will automatically be rebased on top of these commits when integrating. If you prefer to avoid this automatic rebasing, please check the documentation for the /integrate command for further details. ➡️ To integrate this PR with the above commit message to the |
Hey, Is someone avaiable to review this patch again? Thanks! |
@RealFYang @turbanoff could we please have another review? Thank you! |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Seems alright, thanks!
@Hamlin-Li This pull request has not yet been marked as ready for integration. |
/integrate |
Going to push as commit bacd046.
Your commit was automatically rebased without conflicts. |
@Hamlin-Li Pushed as commit bacd046. 💡 You may see a message that your pull request was closed with unmerged commits. This can be safely ignored. |
Hi,
Can you have a review on this patch to add RoundVF/RoundDF intrinsics?
Current test shows that, it bring performance gain when vlenb >= 32 (which is on bananapi), but bring regression when vlenb == 16 (which is on k230). So I only enable the intrinsic when vlenb >= 32.
For double, even vlenb == 32, there is still some regression, so in this pr I only enable it when vlenb >= 64. Although there is no hardware to verify it, I think from the trend of performance data on bananapi and k230, it's promising to bring better performance rather than regression for double when vlenb == 64+. Please compare the data of
Benchmark on bananapi, +UseSuperWord
andBenchmark on k230, +UseSuperWord, enable RoundVF/D when vlenb == 16
.Thanks!
Tests
test/hotspot/jtreg/compiler/vectorization/TestRoundVectRiscv64.java test/hotspot/jtreg/compiler/c2/cr6340864/TestFloatVect.java test/hotspot/jtreg/compiler/c2/cr6340864/TestDoubleVect.java test/hotspot/jtreg/compiler/floatingpoint/TestRound.java
test/jdk/java/lang/Math/RoundTests.java
Performance - with Intrinsic
on bananapi
Benchmark on bananapi, +UseSuperWord
on k230 (enable intrinsic even when vlenb == 16)
Benchmark on k230, +UseSuperWord, enable RoundVF/D when vlenb == 16
Performance - without Intrinsic
on bananapi, intrinsic disabled due to -UseSuperWord
Benchmark on bananapi, -UseSuperWord
on k230, intrinsic disabled due to -UseSuperWord
Benchmark on k230, -UseSuperWord
on k230, intrinsic disabled due to vlenb == 16
Benchmark on k230, +UseSuperWord
Progress
Issues
Reviewers
Reviewing
Using
git
Checkout this PR locally:
$ git fetch https://git.openjdk.org/jdk.git pull/17745/head:pull/17745
$ git checkout pull/17745
Update a local copy of the PR:
$ git checkout pull/17745
$ git pull https://git.openjdk.org/jdk.git pull/17745/head
Using Skara CLI tools
Checkout this PR locally:
$ git pr checkout 17745
View PR using the GUI difftool:
$ git pr show -t 17745
Using diff file
Download this PR as a diff file:
https://git.openjdk.org/jdk/pull/17745.diff
Webrev
Link to Webrev Comment