-
Notifications
You must be signed in to change notification settings - Fork 5
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
Remove the use of CUDA API wrappers #386
Comments
@fwyzard About the |
I'll start with removing the streams and events. |
OK. |
|
I believe it is just a wrapper for the kernel launch |
First part of streams and events is done in #389. |
@makortel I have prepared an alternative for Do you prefer to keep the same syntax, e.g. launch(kernel, {gridDim, blockDim, sharedMem = 0, stream = nullptr}, args...); or something more like what Cupla uses, e.g. launch(kernel)(gridDim, blockDim, sharedMem = 0, stream = nullptr)(args...); ? |
@fwyzard I don't have a clear preference (I would have probably gone with the bare kernel launch syntax, i.e. |
OK, I'll stick to the current syntax then, since it is simpler to implement. The advantage over the |
I have asked @waredjeb to look into the
|
The IIRC all calls to |
Would it work to explicitly pass stream 0 (actually |
Probably, since all |
I think they do. |
Sorry @makortel looks like I never answered you: given that an uncaught exception results anyway in an |
I didn't follow if you meant " (also, exceptions from places where we call CUDA APIs should get caught by the framework) |
I meant,
Right... but they would still result in a stack trace and in the job ending, shouldn't they ? Edit: see #398 . |
#404 completes the work for streams and events. |
I can take care of |
I can work on the remaining |
The last references to the CUDA API Wrappers were removed via #417 . |
This issue is to track progress for removing the use of CUDA API wrappers. The library turned out to not be that useful (see some discussion in #279 (comment))).
We are currently using the following components (extracted with
git grep
, may be incomplete)cuda::device_t::create_stream()
done partly in Replace use of API wrapper stream and event with plain CUDA, part 1 #389, completed in Replace use of API wrapper stream and event with plain CUDA, part 2 #404cuda::stream_t<>
done partly in Replace use of API wrapper stream and event with plain CUDA, part 1 #389, completed in Replace use of API wrapper stream and event with plain CUDA, part 2 #404 (except forHeterogeneousEDProducer
)cuda::stream::wrap()
done in Replace use of API wrapper stream and event with plain CUDA, part 1 #389cuda::stream_t<>::enqueue::callback()
done in Replace use of API wrapper stream and event with plain CUDA, part 1 #389 (except forHeterogeneousEDProducer
)cuda::event_t
done partly in Replace use of API wrapper stream and event with plain CUDA, part 1 #389, completed in Replace use of API wrapper stream and event with plain CUDA, part 2 #404cuda::event::create()
done partly in Replace use of API wrapper stream and event with plain CUDA, part 1 #389, completed in Replace use of API wrapper stream and event with plain CUDA, part 2 #404cuda::memory::copy()
done in Replace CUDA API wrapper memory operations with native CUDA calls #395cuda::memory::async::copy()
done in Replace CUDA API wrapper memory operations with native CUDA calls #395cuda::memory::device::zero()
done in Replace CUDA API wrapper memory operations with native CUDA calls #395cuda::memory::device::async::set()
done in Replace CUDA API wrapper memory operations with native CUDA calls #395cuda::memory::device::make_unique()
done in Replace use of CUDA API wrapper unique_ptrs with CUDAUtilities unique_ptrs #396cuda::memory::host::make_unique()
done in Replace use of CUDA API wrapper unique_ptrs with CUDAUtilities unique_ptrs #396cuda::device::count()
done in Replace remaining cuda::device operations with native CUDA calls. #408cuda::device::get()
done in Replace remaining cuda::device operations with native CUDA calls. #408cuda::device::set()
done in Replace remaining cuda::device operations with native CUDA calls. #408cuda::device::current::get()
done in Replace remaining cuda::device operations with native CUDA calls. #408cuda::device::current::scoped_override_t<>
done in Replace use of cuda::device::current::scoped_override_t with plain CUDA #407cuda::launch()
done in Implement library-only wrappers for launching CUDA kernels #390cuda::throw_if_error()
done in Replace cuda::throw_if_error() with cudaCheck() #414cuda::is_success()
done in Replace use of API wrapper stream and event with plain CUDA, part 1 #389The text was updated successfully, but these errors were encountered: