Hello fellow CUDA’ers,
I’ve released a new version of cuda-api-wrappers , my lightweight, Modern-C++, header-only wrapper library for CUDA.
Changes since 0.6.7, announced in January:
- Now available through conan and vcpkg
- Build system robustness improvement in some corner cases.
- Added documentation for all constructs for which it was missing
- Improvements to the launch configuration structure, and more importantly, the launch config builder object.
- Support for so-called CUDA libraries (not libraries in the OS sense, libraries of compiled kernels only)
- More-robust memory region support (
memory::region_t
): A memory region is essentially an address and a size in bytes with no type information and no inherent ownership - a bit similar to a type-erased span, if you will. It is used for allocation, copying, defining memory characteristics and performing memory-space mappings. It’s too bad we don’t have it in the standard library (as Andrei Alexandrescu more-or-less suggested in his famous allocators talk) - as this class is not inherently CUDA-related even. Anyway, there are now more opportunities to use it, and it can be passed directly to more functions. - Got rid of CUDA-esque
unique_ptr
’s in favor ofunique_region
’s andunique_span
’s - which are (untyped) memory regions and (typed) spans - but with unique ownership semantics likeunique_ptr
’s. These are more convenient as containers for use with the library. Note thatunique_region
is a bit likestatic_vector
- Support for various CUDA 12.x features
- Restored CUDA 9 compatibility
- A few bug fixes, including one memory leak
As usual, and since I’m the sole developer - user feedback is very much appreciated, either as issues you can file or a simple email with questions, suggestions, or just sharing the experiences of using the wrappers on some project.