-
Notifications
You must be signed in to change notification settings - Fork 68
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
Deprecate LV for Julia >= 1.11-DEV #519
Conversation
Codecov ReportAttention:
Additional details and impacted files@@ Coverage Diff @@
## main #519 +/- ##
==========================================
- Coverage 88.64% 80.29% -8.35%
==========================================
Files 39 39
Lines 9600 9608 +8
==========================================
- Hits 8510 7715 -795
- Misses 1090 1893 +803 ☔ View full report in Codecov by Sentry. |
Fixes #518 |
It's sad to see this project get mothballed, but I understand not wanting to deal with the maintenance burden when you're trying to get LoopModels up to parity. Do you think LoopModels will be usable in the v1.11-release timeframe, or is it still too early in its lifecycle to guess on a release date? |
This reverts commit a4a160f.
I agree, this package will be sorely missed. Thank you Chris for your work on this package, it is quite an achievement. For future implementers, would you share any ideas towards a more minimal version of the package with less maintenance burden and less compile time? Something that e.g. faithfully unrolls the inner loop, manually applies simd instructions, and tries different loop permutations without getting too serious about it? |
LV will often unroll and SIMD one of the outer loops, not the inner most! Another major component for getting good performance is code generation. Relatively little code in LV was dedicated towards what it should do, and a fairly substantial amount towards actual code generation. I saw an example recently where someone reproduced what LV did, but performance was over 2x worse, simply because LV takes a lot of care in its implementation to generate good code following the execution plan it lays out. Another point is, if you care about architectures with wide vectors (especially AVX512), don't use scalar clean up loops, but predicates. Unfortunately, If SIMD code can be written to use In terms of maintenance burden, my suggestions would be to avoid anything that isn't standard, boring Julia code. Of course, that tends to be at odds with getting good performance. So your best bet would probably be to have a close, open dialogue with the core compiler team on getting standard and stable ways of doing everything you need that they approve of. |
It's too early to guess on a release date, but I would not except it by Julia 1.11. |
No description provided.