-
-
Notifications
You must be signed in to change notification settings - Fork 217
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
Add more optional threading #1833
Conversation
Signed-off-by: ErikQQY <2283984853@qq.com>
Signed-off-by: ErikQQY <2283984853@qq.com>
Signed-off-by: ErikQQY <2283984853@qq.com>
Signed-off-by: ErikQQY <2283984853@qq.com>
Signed-off-by: ErikQQY <2283984853@qq.com>
I think maybe the buildkite test failure is not caused by this PR? |
That's a stochastic failure. Don't worry about that one. |
Yes. Those branches are for compile time reduction, though I'm not sure that they are necessary anymore since when you do |
That or Polyester. Will you be following up with that? Otherwise we should make sure that we document that threading choices don't apply to those methods when Float64, but I think a simple deletion is all that's necessary (and testing first solve times) |
That's because it wasn't actually using multithreading. If you solve with Array{Float64}, it's to hit the Array{Float64} branches. My guess is that this case is too small for multithreading to help. But |
I used SnoopCompile.jl to test the compile time: Before I removed that branch:julia> tinf = @snoopi_deep solve(prob,Vern7(OrdinaryDiffEq.True()))
InferenceTimingNode: 2.508216/3.608172 on Core.Compiler.Timings.ROOT() with 3 direct children And the corresponding flamegraph: After I removed that branch:julia> tinf = @snoopi_deep solve(prob,Vern7(OrdinaryDiffEq.True()))
InferenceTimingNode: 2.427201/3.539494 on Core.Compiler.Timings.ROOT() with 3 direct children The corresponding flamegraph: Is this the correct way to test the compile time of the |
Yeah, looks like it can be safely removed. |
OK, I will send another PR to remove these branches. |
This PR continues the work by @ranocha in PR #1508 and adds the optional threading to all of the explicit RK methods.
Fix: #1511
I still have some questions:
Vern7
andVern9
, in the second perform step function concerningVern7Cache
andVern9Cache
:it uses
@simd
rather than@..
, do we need to add optional threading here too?Feagin
, I didn't see any@..
used in these algorithms, do we need to add optional threading for these algorithms?