-
-
Notifications
You must be signed in to change notification settings - Fork 18
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
update to latest Symbolics (v6) and SymbolicUtils (v3) #345
Comments
I got behind on the testing/release process here, but this repo doesn't use |
There is also the issue that |
I will take a look at this over the weekend |
The tests pass with no problems but I am a bit worries about Sam's remark that |
|
Got it, thanks. Then it should be fine, I plan to merge and make a release soon |
Yes it really only makes a difference to printing. I'm not sure why it was brought up in the context here since symbolic analyses shouldn't have any difference (which is the reason for not sorting by default because it was about 99% of the time) |
We had several places where Catalyst was interfacing with other packages and it seemed to matter from updates @TorkelE needed to make, so I figured it was worth mentioning. |
It matters for display and DSLs because those deal with the outside world and read in / write out terms. But almost all symbolic passes can assume +,*, etc. are commutative, in which case they don't need to care about argument order. This is why the BasicSymbolic has Add,Pow, etc. forms, since in its manipulations it can specialize a lot by using hash tables for those operations. The order that then comes out of those is then always made up, because a dictionary is inherently an unordered object, so It's just things like printing, since then if you get random ordering users will think something is broken when in reality, it would be better to just say However, it was found that this |
And I will say that some of the sorting added back into Catalyst was actually unnecessary. For example, I think there was a case that was doing it for comparison between objects having a "change". It's really that comparison between two BasicSymbolics should be looking at the subtype of the BasicSymbolic, i.e. which form it is in the unityper, and if it's in this form it's equality between the dictionaries. One way to enforce you have equality is to write the But symbolics passes should almost certainly get away without any sorting, and so the defaulting choice is to force things down the path of no sorting (since it's a lot faster) and if things aren't working for someone give them a sorting option. That sorting option is then a major performance red flag that is easy to audit for and fix, for someone who knows how to deal with this kind of thing, which then makes it rather easy to push the ecosystem down a path where we get a 100x performance benefit. |
I have merged the PR with bumping reps but I got some precompilation errors for ModelingToolkit after the merge. I will take a look at them today-ish and hopefully make a new release. |
That's this mess JuliaObjects/ConstructionBase.jl#92, which also effects old versions. I did a release and a ton of backports so hopefully it should be gone within the next half hour. |
If we could get a release updating these it would be great -- they are holding us back in Catalyst from being able to fully update to them (and ModelingToolkit has now moved to them with the most recent release).
The text was updated successfully, but these errors were encountered: