cuda-api-wrappers
Thin C++-flavored wrappers for the CUDA Runtime API
Todo List
Member cuda::context_t::maximum_depth_of_child_grid_synch_calls () const
Is this really a feature of the context? Not of the device?
Member cuda::context_t::maximum_outstanding_kernel_launches () const
Is this really a feature of the context? Not of the device?
Member cuda::context_t::memory_allocation_heap_size () const
Is this really a feature of the context? Not of the device?
Member cuda::context_t::printf_buffer_size () const
Is this really a feature of the context? Not of the device?
Member cuda::context_t::stack_size () const
Is this really a feature of the context? Not of the device?
Member cuda::context_t::stream_priority_range () const
isn't this a feature of devices?
Member cuda::device::peer_to_peer::disable_access (device_t accessor, device_t peer)
Consider disabling this, given that access is context-specific
Member cuda::device::peer_to_peer::enable_access (device_t accessor, device_t peer)
Consider disabling this, given that access is context-specific
Member cuda::grid::block_dimensions_t
Consider having both grid and block dims inhert from the same dimensions_t structure, but be incompatible, to prevent mis-casting one as the other.
Member cuda::link::options_t::fallback_strategy
Use an optional.
Member cuda::link::options_t::max_num_registers_per_thread
Use an optional.
Member cuda::link::options_t::min_num_threads_per_block
Use an optional.
Member cuda::link::options_t::optimization_level
Use an optional.
Member cuda::link::options_t::target
Use a variant or optional+variant.
Member cuda::memory::host::allocate (size_t size_in_bytes, allocation_options options)
Consider a variant of this supporting the cudaHostAlloc flags
Member cuda::memory::mapped::is_part_of_a_region_pair (const void *ptr)
What if it's a managed pointer?
Member cuda::memory::shared::size_t
consider using uint32_t.
Member cuda::module::load_from_file (const context_t &context, const char *path, link::options_t link_options={})

: consider adding load_module methods to context_t

: When switching to the C++17 standard, use string_view's instead of the const char* and ::std::string reference

Member cuda::rtc::compilation_options_t::additional_include_paths
In C++17, consider making the elements std::filesystem::path's.
Member cuda::rtc::compilation_options_t::compile_extensible_whole_program
explain what that is.
Member cuda::rtc::compilation_options_t::maximum_register_count
Use ::std::optional
Member cuda::rtc::compilation_options_t::preinclude_files

In C++17, consider making the elements std::filesystem::path's.

Check how these strings are interpreted. Do they need quotation marks? brackets? full paths?

Member cuda::rtc::compilation_options_t::targets_
Use something less fancy than ::std::unordered_set, e.g. a vector-backed ordered set or a dynamic bit-vector for membership.
Class cuda::runtime_error
Consider renaming this to avoid confusion with the CUDA Runtime.
Class cuda::span< T >
: Replace this with a more proper span, possibly in a file of its own.
Member cuda::stream_t::has_work_remaining () const
What if there are incomplete operations, but they're all waiting on something on another queue? Should the queue count as "busy" then?
Member cuda::synchronize (const event_t &event)
Determine how this waiting takes place (as opposed to stream synchronization).
Class cuda::texture::descriptor_t
Could be expanded into a richer wrapper class allowing actual settings of the various fields.
Member cuda::version_numbers::driver ()
In future CUDA versions which support C++17 - return an optional
File pointer.hpp
Consider allowing for storing attributes within the class, lazily (e.g. with an ::std::optional).