-
Notifications
You must be signed in to change notification settings - Fork 4.8k
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
[mono][perf] iOS disk size regression on 11 Nov 2022 #78851
Comments
I couldn't figure out the best area label to add to this issue. If you have write-permissions please help me learn by adding exactly one area label. |
@kotlarmilos if this affected Mono iOS sample size it probably regressed MAUI iOS sizes as well. |
Good point, #78182 is not backported to |
/cc @jonathanpeppers |
So the extra methods look to be Vector/Scalar method instances, these were previously shared, but now we generate specialized instances for them, leading to the size increase. |
Most of these methods appear to be the fallback methods in case SIMD is not found. If SIMD is enabled on ios, then this code will not be called, if it's not enabled, then the app should not call it since the performance is not good. So there should be a way to avoid generating code for them. |
@vargaz just to clarify, are you suggesting that:
|
If SIMD is enabled, then these methods are never going to be called. So putting a |
If I am understanding this correctly, something similar was attempted here: #71430 (comment) |
Was just an idea, not sure whenever it will work. |
I guess this comment: dotnet/perf-autofiling-issues#9599 (comment) goes along with what Zoltan said. If I understand correctly, before going further, we would need to have SIMD work completed on the Mono side. |
All the SIMD support that we added so far should be fully enabled for full AOT mode, which is what iOS is using. @vargaz Are the size increase here caused by code patterns involving generics, which used to be generated into a gsharedvt function, now generated into concrete type instances to facilitate the previous performance regression? |
Previously, we were emitting shared methods, now we emit the same shared methods (to handle all cases) and concrete instances as well (for better performance). |
Tagging subscribers to 'size-reduction': @eerhardt, @SamMonoRT, @marek-safar Issue DetailsDescriptionMicrobenchmark improvement #78182 introduced concrete instances in addition to the gshared methods in AOT mode to optimize #78163. For Mono iOS sample app, binary disk size (SOD) has increased by 8%.
Number of symbols has increased by 5k.
At the same time 80208e6 excluded dynamic libraries from the bundle as static linking is used. For Mono iOS sample app, SOD has decreased by 5%.
cc @ivanpovazan ConfigurationOS: iOS
|
Description
Microbenchmark improvement #78182 introduced concrete instances in addition to the gshared methods in AOT mode to optimize #78163.
For Mono iOS sample app, binary disk size (SOD) has increased by 8%.
Number of symbols has increased by 5k.
At the same time 80208e6 excluded dynamic libraries from the bundle as static linking is used.
For Mono iOS sample app, SOD has decreased by 5%.
cc @ivanpovazan
Configuration
OS: iOS
Architecture: arm64
.NET version: 7.0.100-rc.1.22431.12
The text was updated successfully, but these errors were encountered: