Uni20
Asynchronous tensor and runtime library.
Loading...
Searching...
No Matches
Classes | Namespaces | Concepts | Typedefs | Functions
buffers.hpp File Reference

Awaitable capabilities for shared reads and exclusive mutable access to Async<T>. More...

#include "async_task.hpp"
#include "async_task_promise.hpp"
#include "async_traits.hpp"
#include "epoch_context.hpp"
#include "shared_storage.hpp"
#include <uni20/common/trace.hpp>
#include <atomic>
#include <concepts>
#include <coroutine>
#include <cstddef>
#include <memory>
#include <mutex>
#include <new>
#include <optional>
#include <stdexcept>
#include <tuple>
#include <type_traits>
#include <utility>
Include dependency graph for buffers.hpp:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

class  uni20::async::OwningReadAccessProxy< T >
 Owning proxy returned by co_await read_buffer.transfer(). More...
 
class  uni20::async::OwningReadAwaiter< T >
 Awaiter that transfers a read handle into an owning read proxy. More...
 
class  uni20::async::OwningStorageAccessProxy< T >
 Owning proxy providing access to writer storage. More...
 
class  uni20::async::OwningStorageAwaiter< T >
 Awaiter that yields an owning storage-access proxy. More...
 
class  uni20::async::OwningTakeAwaiter< T >
 Awaiter that takes and releases a value from an owning writer. More...
 
class  uni20::async::OwningWriteAccessProxy< T >
 Owning proxy returned by co_await write_buffer.transfer(). More...
 
class  uni20::async::OwningWriteAwaiter< T >
 Awaiter that transfers a writer handle into an owning write proxy. More...
 
class  uni20::async::PropagateExceptionsAwaiter< Buffers >
 Awaiter that registers explicit exception sinks and then resumes immediately. More...
 
class  uni20::async::ReadBuffer< T >
 RAII handle for reading the value from an Async container at a given epoch. More...
 
class  uni20::async::ReadMaybeAwaiter< T >
 Awaiter returning an optional owning read proxy. More...
 
class  uni20::async::ReadMaybeAwaiter< T const & >
 Awaiter returning pointer-or-null read access for lvalue buffers. More...
 
class  uni20::async::ReadOrCancelAwaiter< T >
 Awaiter returning owning read access or throwing task_cancelled. More...
 
class  uni20::async::ReadOrCancelAwaiter< T const & >
 Awaiter returning borrowed read access or throwing task_cancelled. More...
 
class  uni20::async::StorageAwaiter< T >
 Awaiter returning direct access to a writer's shared storage object. More...
 
class  uni20::async::TakeAwaiter< T >
 Awaiter that takes the writer value without releasing the writer epoch. More...
 
class  uni20::async::TakeReleaseAwaiter< T >
 Awaiter that takes a value and immediately releases the writer epoch. More...
 
class  uni20::async::WriteAccessProxy< T >
 Non-owning proxy returned by co_await on an lvalue WriteBuffer<T>. More...
 
class  uni20::async::WriteAssignProxy< T >
 Assignment-only proxy returned by WriteBuffer::write(). More...
 
class  uni20::async::WriteBuffer< T >
 Exclusive mutable-access buffer for one Async<T> epoch. More...
 

Namespaces

namespace  uni20
 
namespace  uni20::async
 This represents the reverse-mode adjoint for functions of complex variables, assuming a real-valued scalar loss function ( L \colon \mathbb{C} \to \mathbb{R} ).
 

Concepts

concept  uni20::async::exception_sink_buffer
 Concept for buffers that can register explicit exception sinks.
 

Typedefs

template<typename T >
using uni20::async::OwningWriteProxy = OwningWriteAccessProxy< T >
 Alias for the owning write access proxy type.
 
template<typename T >
using uni20::async::WriteAwaitProxy = WriteAccessProxy< T >
 Alias for the non-owning write access proxy type.
 
template<typename T >
using uni20::async::WriteProxy = WriteAssignProxy< T >
 Alias for assignment-only writer proxy.
 

Functions

template<typename T >
void uni20::async::ProcessCoroutineArgument (TaskPromiseBase *promise, ReadBuffer< T > const &x)
 Register coroutine debug dependencies for a read-buffer argument.
 
template<typename T >
void uni20::async::ProcessCoroutineArgument (TaskPromiseBase *promise, WriteBuffer< T > const &x)
 Register coroutine debug dependencies and exception sink for a write-buffer argument.
 
template<exception_sink_buffer... Buffers>
auto uni20::async::propagate_exceptions_to (Buffers &... buffers)
 Register buffers that should receive unhandled coroutine exceptions.
 
template<typename T >
ReadBuffer< T > && uni20::async::release (ReadBuffer< T > &&in)
 Adaptor for forwarding an rvalue ReadBuffer into an await expression.
 
template<typename T >
ReadBuffer< T > && uni20::async::release (ReadBuffer< T > &in)
 Adaptor for transferring ReadBuffer ownership into an await expression.
 

Detailed Description

Awaitable capabilities for shared reads and exclusive mutable access to Async<T>.