Uni20
Asynchronous tensor and runtime library.
Loading...
Searching...
No Matches
Namespaces | Functions
cuda_access.hpp File Reference

CUDA data-handle acquisition for buffer descriptors and tensor views. More...

#include <uni20/mdspan/conjugate_accessor.hpp>
#include <uni20/storage/cuda_storage.hpp>
#include <uni20/tensor/access.hpp>
#include <concepts>
#include <cstddef>
#include <type_traits>
#include <utility>
Include dependency graph for cuda_access.hpp:

Go to the source code of this file.

Namespaces

namespace  uni20
 

Functions

template<cuda::BufferMdspec Mdspec>
requires std::is_const_v<typename std::remove_cvref_t<Mdspec>::element_type>
auto uni20::acquire_cuda_read_access_async (Mdspec const &mdspec, cuda::Stream const &stream)
 Resolve borrowed CUDA read access synchronized with an operation stream.
 
template<class Tensor >
requires (!std::is_lvalue_reference_v<Tensor>) && TensorView<std::remove_cvref_t<Tensor>> && (!ImmediateTensorView<std::remove_cvref_t<Tensor>>) && OwningTensor<std::remove_cvref_t<Tensor>> && cuda::BufferMdspec<tensor_mdspec_t<std::remove_cvref_t<Tensor>>> && requires(Tensor&& tensor) { { std::move(tensor).release_storage() } -> std::same_as<typename std::remove_cvref_t<Tensor>::storage_type>; }
auto uni20::acquire_cuda_read_access_async (Tensor &&tensor, cuda::Stream const &stream)
 Move an owning CUDA tensor into a stream-ordered read lease.
 
template<class Tensor >
requires TensorView<Tensor> && (!ImmediateTensorView<Tensor>) && cuda::BufferMdspec<tensor_mdspec_t<Tensor>>
auto uni20::acquire_cuda_read_access_async (Tensor &tensor, cuda::Stream const &stream)
 Acquire stream-ordered read access as an immediately-ready awaitable.
 
template<cuda::BufferMdspec Mdspec>
requires std::is_const_v<typename std::remove_cvref_t<Mdspec>::element_type>
auto uni20::acquire_cuda_read_access_sync (Mdspec const &mdspec)
 Host-wait for prior CUDA work and resolve a borrowed read descriptor.
 
template<class Tensor >
requires (!std::is_lvalue_reference_v<Tensor>) && TensorView<std::remove_cvref_t<Tensor>> && (!ImmediateTensorView<std::remove_cvref_t<Tensor>>) && OwningTensor<std::remove_cvref_t<Tensor>> && cuda::BufferMdspec<tensor_mdspec_t<std::remove_cvref_t<Tensor>>> && requires(Tensor&& tensor) { { std::move(tensor).release_storage() } -> std::same_as<typename std::remove_cvref_t<Tensor>::storage_type>; }
auto uni20::acquire_cuda_read_access_sync (Tensor &&tensor)
 Move an owning CUDA tensor into a synchronized CUDA read lease.
 
template<class Tensor >
requires TensorView<Tensor> && (!ImmediateTensorView<Tensor>) && cuda::BufferMdspec<tensor_mdspec_t<Tensor>>
auto uni20::acquire_cuda_read_access_sync (Tensor &tensor)
 Host-wait for prior CUDA work and acquire a CUDA-accessible read lease.
 
template<class Mdspec >
requires cuda::BufferMdspec<Mdspec> && MutableMdspecLike<Mdspec>
auto uni20::acquire_cuda_write_access_async (Mdspec &mdspec, cuda::Stream const &stream)
 Resolve borrowed CUDA write access synchronized with an operation stream.
 
template<class Tensor >
requires MutableTensorView<Tensor> && (!MutableImmediateTensorView<Tensor>) && cuda::BufferMdspec<tensor_mdspec_t<Tensor>> && cuda::BufferMdspec<mutable_tensor_mdspec_t<Tensor>>
auto uni20::acquire_cuda_write_access_async (Tensor &tensor, cuda::Stream const &stream)
 Acquire stream-ordered write access as an immediately-ready awaitable.
 
template<class Mdspec >
requires cuda::BufferMdspec<Mdspec> && MutableMdspecLike<Mdspec>
auto uni20::acquire_cuda_write_access_sync (Mdspec &mdspec)
 Host-wait for prior CUDA work and resolve a borrowed write descriptor.
 
template<class Tensor >
requires MutableTensorView<Tensor> && (!MutableImmediateTensorView<Tensor>) && cuda::BufferMdspec<tensor_mdspec_t<Tensor>> && cuda::BufferMdspec<mutable_tensor_mdspec_t<Tensor>>
auto uni20::acquire_cuda_write_access_sync (Tensor &tensor)
 Host-wait for prior CUDA work and acquire a CUDA-accessible write lease.
 

Detailed Description

CUDA data-handle acquisition for buffer descriptors and tensor views.