Announcement: cuda-api-wrappers v0.6.9 - released

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 of unique_region’s and unique_span’s - which are (untyped) memory regions and (typed) spans - but with unique ownership semantics like unique_ptr’s. These are more convenient as containers for use with the library. Note that unique_region is a bit like static_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.