[WIP] New Dask Scheduler for cuDF - #5053
Conversation
|
Please update the changelog in order to start CI tests. View the gpuCI docs here. |
Codecov Report
@@ Coverage Diff @@
## branch-0.15 #5053 +/- ##
===============================================
- Coverage 88.50% 88.28% -0.22%
===============================================
Files 54 56 +2
Lines 10270 10366 +96
===============================================
+ Hits 9089 9152 +63
- Misses 1181 1214 +33
Continue to review full report at Codecov.
|
|
Also cross-listing dask/dask#6059 |
|
First, I totally understand that you all have to do whatever you have to do. RAPIDS is under constant time pressure it seems. However, I will say that it would be great to have things fixed upstream. This takes longer, and it means that you'll need to fix more than what is necessary for your specific problem, but I think that it would help other groups a ton. In the particular situation of task annotations I think that people would really like this feature. It's not that upstream is unhappy about the feature, it's that there are other considerations that would need to be resolved. My guess is that it would take an excellent dev, like @madsbk , weeks to solve correctly. You all may not have that time, which I totally understand, but I wanted to make it clear that you are absolutely welcome to make these changes upstream. |
|
@mrocklin, what work you think I will have to do to get dask/dask#6059 moving forward? |
|
There are probably many approaches here. Previously you took the approach of using task annotations. I think that task annotations is a general feature that would help out a lot of people (including several other GPU use cases for people who want to use resource restrictions). You started down this path by annotating the functions themselves. That solution had problems because it wasn't robust to fusion. It also wasn't clear if we wanted to do something more serious, like have a full As a side effect of that work, it would be easy to annotate the tasks in dask.dataframe.shuffle with a priority, solving your problem here. Anyway, that's one approach, there might be others, but that one solves enough user issues that have accrued over the years that I think that people would be really excited by it. It does require a lot of work though, both technical and social. |
| """ | ||
|
|
||
| __dask_scheduler__ = staticmethod(dask.get) | ||
| __dask_scheduler__ = staticmethod(scheduler.get_sync) |
There was a problem hiding this comment.
Is this just for debugging purposes to make this synchronous?
There was a problem hiding this comment.
Oops yes, I will fix that.
|
No recent updates, moving to 0.15. @madsbk is this still needed? |
Let's close it, I am working on a general solution in Dask/Distributed |
This PR introduce a new task scheduler for cuDF's
Frame, which makes it possible to implement specialized optimizations that might be hard to get accepted into upstream Dask.For now, this PR implements the task ordering optimization from dask/dask#6051.
My hope is that we can use this to implement Dask scheduling and task graph optimizations. Then, when we get to a stable state, we can work on getting the changes into upstream Dask.
cc. @beckernick, @VibhuJawa