Realm
A distributed, event-based tasking library
Loading...
Searching...
No Matches
Realm::AffineAccessor< FT, N, T > Class Template Reference

#include <inst_layout.h>

Inheritance diagram for Realm::AffineAccessor< FT, N, T >:
Collaboration diagram for Realm::AffineAccessor< FT, N, T >:

Public Member Functions

REALM_CUDA_HD AffineAccessor (void)
 
 AffineAccessor (RegionInstance inst, FieldID field_id, size_t subfield_offset=0)
 
 AffineAccessor (RegionInstance inst, FieldID field_id, const Rect< N, T > &subrect, size_t subfield_offset=0)
 
REALM_CUDA_HD ~AffineAccessor (void)
 
 AffineAccessor (const AffineAccessor &)=default
 
AffineAccessoroperator= (const AffineAccessor &)=default
 
 AffineAccessor (AffineAccessor &&) noexcept=default
 
AffineAccessoroperator= (AffineAccessor &&) noexcept=default
 
REALM_CUDA_HD void reset ()
 
void reset (RegionInstance inst, FieldID field_id, size_t subfield_offset=0)
 
void reset (RegionInstance inst, FieldID field_id, const Rect< N, T > &subrect, size_t subfield_offset=0)
 
template<int N2, typename T2 >
void reset (RegionInstance inst, const Matrix< N2, N, T2 > &transform, const Point< N2, T2 > &offset, FieldID field_id, size_t subfield_offset=0)
 
template<int N2, typename T2 >
void reset (RegionInstance inst, const Matrix< N2, N, T2 > &transform, const Point< N2, T2 > &offset, FieldID field_id, const Rect< N, T > &subrect, size_t subfield_offset=0)
 
REALM_CUDA_HD FT * ptr (const Point< N, T > &p) const
 
REALM_CUDA_HD FT read (const Point< N, T > &p) const
 
REALM_CUDA_HD void write (const Point< N, T > &p, FT newval) const
 
REALM_CUDA_HD FT & operator[] (const Point< N, T > &p) const
 
REALM_CUDA_HD bool is_dense_arbitrary (const Rect< N, T > &bounds) const
 
REALM_CUDA_HD bool is_dense_col_major (const Rect< N, T > &bounds) const
 
REALM_CUDA_HD bool is_dense_row_major (const Rect< N, T > &bounds) const
 
template<int N2, typename T2 >
 AffineAccessor (RegionInstance inst, const Matrix< N2, N, T2 > &transform, const Point< N2, T2 > &offset, FieldID field_id, size_t subfield_offset=0)
 
template<int N2, typename T2 >
 AffineAccessor (RegionInstance inst, const Matrix< N2, N, T2 > &transform, const Point< N2, T2 > &offset, FieldID field_id, const Rect< N, T > &subrect, size_t subfield_offset=0)
 

Static Public Member Functions

static bool is_compatible (RegionInstance inst, FieldID field_id)
 
static bool is_compatible (RegionInstance inst, FieldID field_id, const Rect< N, T > &subrect)
 
template<int N2, typename T2 >
static bool is_compatible (RegionInstance inst, const Matrix< N2, N, T2 > &transform, const Point< N2, T2 > &offset, FieldID field_id)
 
template<int N2, typename T2 >
static bool is_compatible (RegionInstance inst, const Matrix< N2, N, T2 > &transform, const Point< N2, T2 > &offset, FieldID field_id, const Rect< N, T > &subrect)
 

Public Attributes

uintptr_t base
 
Point< N, size_t > strides
 

Protected Member Functions

REALM_CUDA_HD FT * get_ptr (const Point< N, T > &p) const
 

Detailed Description

template<typename FT, int N, typename T = int>
class Realm::AffineAccessor< FT, N, T >

An accessor that works for any instance layout that can be linearized using an affine transformation. AffineAccessors are generally more efficient than GenericAccessors, but are only applicable to a subset of instance layouts. The random-access look-ups are O(1) in the size of the instance.

Constructor & Destructor Documentation

◆ AffineAccessor() [1/7]

template<typename FT , int N, typename T = int>
REALM_CUDA_HD Realm::AffineAccessor< FT, N, T >::AffineAccessor ( void  )

◆ AffineAccessor() [2/7]

template<typename FT , int N, typename T = int>
Realm::AffineAccessor< FT, N, T >::AffineAccessor ( RegionInstance  inst,
FieldID  field_id,
size_t  subfield_offset = 0 
)

Construct an AffineAccessor for the specified instance and field. Implicitly tries to cover the entire instance's domain. NOTE: this constructor will die if the instance is not compatible with AffineAccessor. Call is_compatible(...) first if you're not sure.

Parameters
instRegionInstance to construct accessor for.
field_idFieldID of field to construct accessor for.
subfield_offsetOffset of subfield to construct accessor for.

◆ AffineAccessor() [3/7]

template<typename FT , int N, typename T = int>
Realm::AffineAccessor< FT, N, T >::AffineAccessor ( RegionInstance  inst,
FieldID  field_id,
const Rect< N, T > &  subrect,
size_t  subfield_offset = 0 
)

Construct an AffineAccessor for the specified instance and field. Limits the domain to the specified subrectangle. NOTE: this constructor will die if the instance is not compatible with AffineAccessor. Call is_compatible(...) first if you're not sure.

Parameters
instRegionInstance to construct accessor for.
field_idFieldID of field to construct accessor for.
subrectSubrectangle to limit domain to.
subfield_offsetOffset of subfield to construct accessor for.

◆ AffineAccessor() [4/7]

template<typename FT , int N, typename T = int>
template<int N2, typename T2 >
Realm::AffineAccessor< FT, N, T >::AffineAccessor ( RegionInstance  inst,
const Matrix< N2, N, T2 > &  transform,
const Point< N2, T2 > &  offset,
FieldID  field_id,
size_t  subfield_offset = 0 
)

Construct an AffineAccessor for the specified instance, field, and coordinate transform.

Parameters
instRegionInstance to construct accessor for.
transformAffine transform to apply to coordinates.
offsetOffset to apply to coordinates.
field_idFieldID of field to construct accessor for.
subfield_offsetOffset of subfield to construct accessor for.

◆ AffineAccessor() [5/7]

template<typename FT , int N, typename T = int>
template<int N2, typename T2 >
Realm::AffineAccessor< FT, N, T >::AffineAccessor ( RegionInstance  inst,
const Matrix< N2, N, T2 > &  transform,
const Point< N2, T2 > &  offset,
FieldID  field_id,
const Rect< N, T > &  subrect,
size_t  subfield_offset = 0 
)

◆ ~AffineAccessor()

template<typename FT , int N, typename T = int>
REALM_CUDA_HD Realm::AffineAccessor< FT, N, T >::~AffineAccessor ( void  )

◆ AffineAccessor() [6/7]

template<typename FT , int N, typename T = int>
Realm::AffineAccessor< FT, N, T >::AffineAccessor ( const AffineAccessor< FT, N, T > &  )
default

◆ AffineAccessor() [7/7]

template<typename FT , int N, typename T = int>
Realm::AffineAccessor< FT, N, T >::AffineAccessor ( AffineAccessor< FT, N, T > &&  )
defaultnoexcept

Member Function Documentation

◆ get_ptr()

template<typename FT , int N, typename T = int>
REALM_CUDA_HD FT * Realm::AffineAccessor< FT, N, T >::get_ptr ( const Point< N, T > &  p) const
protected

◆ is_compatible() [1/4]

template<typename FT , int N, typename T = int>
template<int N2, typename T2 >
static bool Realm::AffineAccessor< FT, N, T >::is_compatible ( RegionInstance  inst,
const Matrix< N2, N, T2 > &  transform,
const Point< N2, T2 > &  offset,
FieldID  field_id 
)
static

◆ is_compatible() [2/4]

template<typename FT , int N, typename T = int>
template<int N2, typename T2 >
static bool Realm::AffineAccessor< FT, N, T >::is_compatible ( RegionInstance  inst,
const Matrix< N2, N, T2 > &  transform,
const Point< N2, T2 > &  offset,
FieldID  field_id,
const Rect< N, T > &  subrect 
)
static

◆ is_compatible() [3/4]

template<typename FT , int N, typename T = int>
static bool Realm::AffineAccessor< FT, N, T >::is_compatible ( RegionInstance  inst,
FieldID  field_id 
)
static

◆ is_compatible() [4/4]

template<typename FT , int N, typename T = int>
static bool Realm::AffineAccessor< FT, N, T >::is_compatible ( RegionInstance  inst,
FieldID  field_id,
const Rect< N, T > &  subrect 
)
static

◆ is_dense_arbitrary()

template<typename FT , int N, typename T = int>
REALM_CUDA_HD bool Realm::AffineAccessor< FT, N, T >::is_dense_arbitrary ( const Rect< N, T > &  bounds) const

◆ is_dense_col_major()

template<typename FT , int N, typename T = int>
REALM_CUDA_HD bool Realm::AffineAccessor< FT, N, T >::is_dense_col_major ( const Rect< N, T > &  bounds) const

◆ is_dense_row_major()

template<typename FT , int N, typename T = int>
REALM_CUDA_HD bool Realm::AffineAccessor< FT, N, T >::is_dense_row_major ( const Rect< N, T > &  bounds) const

◆ operator=() [1/2]

template<typename FT , int N, typename T = int>
AffineAccessor & Realm::AffineAccessor< FT, N, T >::operator= ( AffineAccessor< FT, N, T > &&  )
defaultnoexcept

◆ operator=() [2/2]

template<typename FT , int N, typename T = int>
AffineAccessor & Realm::AffineAccessor< FT, N, T >::operator= ( const AffineAccessor< FT, N, T > &  )
default

◆ operator[]()

template<typename FT , int N, typename T = int>
REALM_CUDA_HD FT & Realm::AffineAccessor< FT, N, T >::operator[] ( const Point< N, T > &  p) const

◆ ptr()

template<typename FT , int N, typename T = int>
REALM_CUDA_HD FT * Realm::AffineAccessor< FT, N, T >::ptr ( const Point< N, T > &  p) const

◆ read()

template<typename FT , int N, typename T = int>
REALM_CUDA_HD FT Realm::AffineAccessor< FT, N, T >::read ( const Point< N, T > &  p) const

◆ reset() [1/5]

template<typename FT , int N, typename T = int>
REALM_CUDA_HD void Realm::AffineAccessor< FT, N, T >::reset ( )

◆ reset() [2/5]

template<typename FT , int N, typename T = int>
template<int N2, typename T2 >
void Realm::AffineAccessor< FT, N, T >::reset ( RegionInstance  inst,
const Matrix< N2, N, T2 > &  transform,
const Point< N2, T2 > &  offset,
FieldID  field_id,
const Rect< N, T > &  subrect,
size_t  subfield_offset = 0 
)

◆ reset() [3/5]

template<typename FT , int N, typename T = int>
template<int N2, typename T2 >
void Realm::AffineAccessor< FT, N, T >::reset ( RegionInstance  inst,
const Matrix< N2, N, T2 > &  transform,
const Point< N2, T2 > &  offset,
FieldID  field_id,
size_t  subfield_offset = 0 
)

◆ reset() [4/5]

template<typename FT , int N, typename T = int>
void Realm::AffineAccessor< FT, N, T >::reset ( RegionInstance  inst,
FieldID  field_id,
const Rect< N, T > &  subrect,
size_t  subfield_offset = 0 
)

◆ reset() [5/5]

template<typename FT , int N, typename T = int>
void Realm::AffineAccessor< FT, N, T >::reset ( RegionInstance  inst,
FieldID  field_id,
size_t  subfield_offset = 0 
)

◆ write()

template<typename FT , int N, typename T = int>
REALM_CUDA_HD void Realm::AffineAccessor< FT, N, T >::write ( const Point< N, T > &  p,
FT  newval 
) const

Member Data Documentation

◆ base

template<typename FT , int N, typename T = int>
uintptr_t Realm::AffineAccessor< FT, N, T >::base

◆ strides

template<typename FT , int N, typename T = int>
Point<N, size_t> Realm::AffineAccessor< FT, N, T >::strides

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