-
Notifications
You must be signed in to change notification settings - Fork 82
Explicitely create new stream for Barrier concurrent #453
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
Conversation
// Otherwise, CUDA API calls to the problem stream may occur in both threads and throw graph | ||
// capture off | ||
auto barrier_handle = raft::handle_t(*op_problem.get_handle_ptr()); | ||
detail::problem_t<i_t, f_t> d_barrier_problem(problem); |
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.
detail::problem_t<i_t, f_t> d_barrier_problem(problem); | |
auto barrier_straem = rmm::cuda_stream_per_thread; | |
raft::resource::set_cuda_stream(barrier_handle, barrier_stream); | |
detail::problem_t<i_t, f_t> d_barrier_problem(problem, barrier_handle); |
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.
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.
cmake changes look good
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.
LGTM
/merge |
In C++ when spawning a new thread the cuda driver by default creates a legacy default stream for each thread with unique ids.
When calling concurrent mode from Python, PDLP and Barrier were running on the same stream.
Now we explicitly create a new handle for Barrier with a new stream.