Skip to content
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

Ensure that the handling for the V128_BITCAST APIs is correctly performant on Mono WASM #105009

Merged
merged 1 commit into from
Jul 17, 2024

Conversation

tannergooding
Copy link
Member

Only gave a single example below, but did run a sampling of benchmarks and the results look to be correct now.

Notably the docs for running WASM benchmarks is very out of date right now: https://github.com/dotnet/performance/blob/main/docs/benchmarking-workflow-dotnet-runtime.md#dotnet-runtime-testing-for-wasm, I ended up getting it working but having up to date guidance would be great.
-- Most notably test-main.js was moved, tests won't run since it can't find the 9.0.0-dev packages, and test-main.js was updated to require --module

This should resolve dotnet/perf-autofiling-issues#38466

Interpreter

No Handling

Method BufferLength Mean Error StdDev Median Min Max Allocated
Round 128 4.964 us 0.0753 us 0.0705 us 4.983 us 4.879 us 5.061 us ?
Round 3079 115.186 us 1.6031 us 1.4996 us 115.301 us 113.414 us 117.719 us ?

V128_BITCAST Handling

Method BufferLength Mean Error StdDev Median Min Max Allocated
Round 128 24.16 us 0.411 us 0.422 us 23.99 us 23.77 us 25.20 us ?
Round 3079 560.19 us 6.621 us 6.193 us 556.65 us 555.04 us 570.42 us ?

MOV_VT Handling

Method BufferLength Mean Error StdDev Median Min Max Allocated
Round 128 4.631 us 0.0281 us 0.0263 us 4.622 us 4.602 us 4.688 us ?
Round 3079 106.797 us 0.8264 us 0.7730 us 106.628 us 105.733 us 107.948 us ?

AOT

No Handling

Method BufferLength Mean Error StdDev Median Min Max Allocated
Round 128 6.862 us 0.0570 us 0.0476 us 6.852 us 6.793 us 6.969 us ?
Round 3079 158.344 us 7.1171 us 8.1960 us 162.109 us 147.830 us 170.130 us ?

V128_BITCAST Handling

Method BufferLength Mean Error StdDev Median Min Max Allocated
Round 128 6.536 us 0.0304 us 0.0284 us 6.528 us 6.494 us 6.586 us ?
Round 3079 166.275 us 1.5275 us 1.3541 us 166.335 us 163.915 us 168.996 us ?

MOV_VT Handling

Method BufferLength Mean Error StdDev Median Min Max Allocated
Round 128 6.151 us 0.0253 us 0.0224 us 6.157 us 6.114 us 6.182 us ?
Round 3079 149.354 us 2.2647 us 2.2242 us 149.108 us 147.509 us 156.868 us ?

Copy link
Contributor

Tagging subscribers to this area: @BrzVlad, @kotlarmilos
See info in area-owners.md if you want to be subscribed.

@kg
Copy link
Member

kg commented Jul 17, 2024

The MOV_VT numbers are very promising! Thanks for chasing this down.

@tannergooding
Copy link
Member Author

This should be ready for review, CI failures are flaky tests hitting OOM/timeouts and I'm rerunning them

@tannergooding tannergooding merged commit bc45b3e into dotnet:main Jul 17, 2024
77 of 79 checks passed
@tannergooding tannergooding deleted the mono-v128-bitcast branch July 17, 2024 21:48
@lewing
Copy link
Member

lewing commented Jul 18, 2024

@tannergooding thanks for getting this done so quickly, the initial data from our benchmarks also indicate there now a net improvement in here. Excellent work.

@lewing
Copy link
Member

lewing commented Jul 18, 2024

@mkhamoyan can you please update the documentation in dotnet/performance

@tannergooding
Copy link
Member Author

Glad I was finally able to figure it out, hopefully it should make future improvements easier as well 😄

@github-actions github-actions bot locked and limited conversation to collaborators Aug 18, 2024
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[Perf] Linux/x64: 646 Regressions on 7/12/2024 7:02:19 PM
4 participants