-
Notifications
You must be signed in to change notification settings - Fork 9
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
Default split strategy for GreedyScheduler #124
Comments
Good question. I can't recall it. @MasonProtter any idea why we have this different default? (In any case, speaking about different defaults, it's worth noting that the
Maybe I misunderstand but doesn't |
No, I don't think so. I am after the decoupling of |
Honestly I don't remember either. Maybe the motivation was that if you're using the GreedyScheduler, then that's because each iteration is likely taking an unpredictable amount of time, so a round robin approach might help, but that's just a guess, I have no idea. |
That was it. We argued that the This line of reasoning seems reasonable to me but I'm generally open to considering changing the default. It might be insightful to test this argument with benchmarks. Especially in the light of #121, which makes the
I see. Out of curiosity, why are you after the decoupling of |
Yes, potentially. The case I am considering is assembly of finite elements matrices. In many cases, depending on the problem you are solving, all elements are identical and then of course just splitting into The reason I want to limit the total number of tasks is that you typically need task local scratch data which, again depending on the problem, can be somewhat large an/ord expensive to setup.
I guess this depends on whether you expect the workload to be sorted or not. If it is truly random then the strategy shouldn't matter I think? |
The task-local scratch data setup I get (in fact, we mention it in the docs). What I'm curious about is why you need decoupled chunking. By assigning In the context of non-uniform workload, the decoupling - as implemented by the greedy scheduler - makes sense to me, because what will eventually constitute a "bundle" is dynamically decided. In some loose sense, the greedy scheduler is a dynamic variant of
The workload doesn't have to be sorted I think. With
I agree. |
Maybe I am misunderstanding you, but this wouldn't result in the workstealing behavior of the greedy scheduler, right? |
Anyway, this can probably be closes and certainly shouldn't hold up the new release. I was just curious. |
It wouldn't. It just isn't obvious to me in what cases the greedy scheduler performs better than
Yep, I think the current default |
The default split strategy is
:scatter
forGreedyScheduler
(and:batch
for the others). I didn't see this being discussed in #77 -- what was the rationale?In my case I essentially want to use the GreedyScheduler as a "ntasks-limited" version of DynamicScheduler but was wondering why they had different defaults for this.
The text was updated successfully, but these errors were encountered: