-
Notifications
You must be signed in to change notification settings - Fork 203
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 rmm::exec_policy_nosync #1009
Add rmm::exec_policy_nosync #1009
Conversation
Can one of the admins verify this patch? |
1 similar comment
Can one of the admins verify this patch? |
tbh, I'd been thinking about just changing the Technically this would be a breaking change, but I'd be surprised if anything in RAPIDS was depending on the synchronous behavior of Thrust algorithms. I suspect most would appreciate the elimination of the extra syncs. I'll see what @harrism thinks |
Really? I won't be surprised. Not saying I oppose it, just that we should do an investigation before flipping a switch like this. |
What can I say, people always tell me I'm such an optimist ¯_(ツ)_/¯ To be clear, algorithms like The |
Just saying we should test all RAPIDS libraries before merging such a change (not just RMM tests). Also test Spark since they rely on PTDS. |
I think I've changed my mind. I don't think the hassle of having to verify every usage of |
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.
Thanks @fkallen! Could you also add some tests?
Do you have a test in mind? I don't know how to test this other than taking a look at the profiler to check if there is a pool allocation and a missing sync. |
I was just thinking making sure that it works as a valid execution policy. So simply launch a Thrust algorithm with device data and make sure the result is sound. I was going to say "just do what we do for our current tests", but apparently that's nothing! |
ok to test |
rerun tests |
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.
nosync
isn't a term we use in rmm, or any rapids libraries as far as I know. What if we use async
, which is common?
Nevermind, I see now that this is based on thrust policy.
@gpucibot merge |
Add
rmm:exec_policy_nosync
.For Thrust 1.16 and newer, this policy is based on
execute_on_stream_nosync_base
instead ofexecute_on_stream_base
to allow Thrust algorithms to skip synchronizations.For older Thrust versions, this is an alias to rmm::exec_policy