-
Notifications
You must be signed in to change notification settings - Fork 907
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
Always enable per-thread default stream #11281
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is a massive change that impacts all downstream libraries that use libcudf. I think some discussion, notice, and deprecation are needed before making a change of this scope.
Making PTDS the default and allowing someone to opt out of it feels like a much more reasonable step here and then subsequent removal of the option can be discussed.
cc: @jakirkham @pentschev for thoughts as well. |
Thanks Ashwin for the ping. Overall this looks to me like a step in the right direction, but I agree with Keith that we need to give users some grace period for the move. For instance, have we done some actual testing with the rest of RAPIDS? If so, could you please point out to what kind of testing has been done so far? This is something I would like to try out with Dask, and knowing what has been tested so far and how it was tested would be of help. With the above said, having an opt-out feature should be the minimum and we should have broader testing before making this change mandatory, but even then I think it may be useful to allow switching back to the old behavior for debugging and testing purposes. I'm happy to test this with Dask and help in any other testing we deem necessary. |
cc @nirandaperera (Cylon) |
I started doing some testing with the Dask-CUDA Merge Benchmark and noticed that cuDF still doesn't specify PTDS when calling CuPy. One can override that by adding |
I would like to walk back my statement of making this the default to start even. For example, code could currently do something like:
This is a race with PTDS but is valid with the current default stream behavior. |
@kkraus14 @pentschev thanks for raising those concerns, I am happy to have a longer discussion about this. For context, this came about because we realized that the behavior with PTDS is not currently being tested (except of course by downstream consumers like Spark-RAPIDS), and that raises the possibility of silent bugs there. During the discussion of whether we should simply be adding additional tests with PTDS, there was support for simply migrating to PTDS by default, and (more limited) support for removing the option entirely. With your concerns in mind, here are a couple of questions:
|
Would we be able to build conda packages with a runtime switch -- like a |
Ideally we could have conda packages for both legacy default stream builds and PTDS builds and use a build variant to switch between them. Could also use a conda
I think it's premature to switch without giving any notice, having any documentation, having warnings / deprecations, etc. to make it loud and clear to downstream users of libcudf that the behavior is going to change in a subsequent release. I'm not clear on whether it would make sense to ever only support building with per thread default stream. Given libcudf hasn't landed on a specific stream management strategy quite yet, I think it's premature to try to answer this problem as well. |
@beckernick thanks for the headsup. @ahmet-uyar FYI |
This PR has been labeled |
I'm going to close this since we are instead moving towards explicitly exposing streams. That will allow anything interfacing with libcudf (the C++ cudf API) to pass through stream 1 when those libraries are running with PTDS enabled. The question of how to enable control over streams at the Python level is a separate question that should be addressed in discussions around other issues/PRs like rapidsai/rmm#633 and #5922. |
This PR removes all options around PTDS and enables it all the time. This change resolves #9165, which is caused by the fact that our CI builds all use the conda build.sh script that doesn't set the PTDS option. Now PTDS is simply always enabled.