Uni20
Asynchronous tensor and runtime library.
Loading...
Searching...
No Matches
Public Types | Public Member Functions | List of all members
uni20::cuda::CudaComplexReference< Real > Class Template Reference

Assignable CUDA execution proxy over one persistent complex value. More...

#include <cuda_accessor.hpp>

Public Types

using execution_type = ::cuda::std::complex< Real >
 
using logical_type = uni20::complex< Real >
 

Public Member Functions

UNI20_HOST_DEVICE constexpr CudaComplexReference (CudaComplexReference const &) noexcept=default
 
UNI20_HOST_DEVICE constexpr CudaComplexReference (logical_type *storage, std::size_t offset) noexcept
 
UNI20_HOST_DEVICE constexpr operator execution_type () const noexcept
 Load the persistent components into a CUDA execution value.
 
UNI20_HOST_DEVICE constexpr CudaComplexReference & operator= (CudaComplexReference const &value) noexcept
 Copy the observed value rather than rebinding the proxy.
 
UNI20_HOST_DEVICE constexpr CudaComplexReference & operator= (execution_type const &value) noexcept
 Store a CUDA execution value componentwise.
 
UNI20_HOST_DEVICE constexpr CudaComplexReference & operator= (logical_type const &value) noexcept
 Store a host logical value componentwise.
 

Detailed Description

template<class Real>
requires std::is_trivially_copyable_v<uni20::complex<Real>>
class uni20::cuda::CudaComplexReference< Real >

Assignable CUDA execution proxy over one persistent complex value.

Persistent storage remains uni20::complex<Real>. Device reads and writes use cuda::std::complex<Real> without treating the two complex class types as alias-compatible objects.

Member Typedef Documentation

◆ execution_type

template<class Real >
using uni20::cuda::CudaComplexReference< Real >::execution_type = ::cuda::std::complex<Real>

◆ logical_type

template<class Real >
using uni20::cuda::CudaComplexReference< Real >::logical_type = uni20::complex<Real>

Constructor & Destructor Documentation

◆ CudaComplexReference() [1/2]

template<class Real >
UNI20_HOST_DEVICE constexpr uni20::cuda::CudaComplexReference< Real >::CudaComplexReference ( logical_type *  storage,
std::size_t  offset 
)
inlineconstexprnoexcept

◆ CudaComplexReference() [2/2]

template<class Real >
UNI20_HOST_DEVICE constexpr uni20::cuda::CudaComplexReference< Real >::CudaComplexReference ( CudaComplexReference< Real > const &  )
constexprdefaultnoexcept

Member Function Documentation

◆ operator execution_type()

template<class Real >
UNI20_HOST_DEVICE constexpr uni20::cuda::CudaComplexReference< Real >::operator execution_type ( ) const
inlineconstexprnoexcept

Load the persistent components into a CUDA execution value.

◆ operator=() [1/3]

template<class Real >
UNI20_HOST_DEVICE constexpr CudaComplexReference & uni20::cuda::CudaComplexReference< Real >::operator= ( CudaComplexReference< Real > const &  value)
inlineconstexprnoexcept

Copy the observed value rather than rebinding the proxy.

◆ operator=() [2/3]

template<class Real >
UNI20_HOST_DEVICE constexpr CudaComplexReference & uni20::cuda::CudaComplexReference< Real >::operator= ( execution_type const &  value)
inlineconstexprnoexcept

Store a CUDA execution value componentwise.

◆ operator=() [3/3]

template<class Real >
UNI20_HOST_DEVICE constexpr CudaComplexReference & uni20::cuda::CudaComplexReference< Real >::operator= ( logical_type const &  value)
inlineconstexprnoexcept

Store a host logical value componentwise.


The documentation for this class was generated from the following file: