FreeTensor
Loading...
Searching...
No Matches
Public Member Functions | Static Public Member Functions | List of all members
freetensor::Array Class Reference

#include <array.h>

Public Member Functions

 ~Array ()
 
 Array (Array &&)
 
 Array (const Array &)=delete
 
Arrayoperator= (Array &&)
 
Arrayoperator= (const Array &)=delete
 
size_t size () const
 
size_t nElem () const
 
const std::vector< size_t > & shape () const
 
DataType dtype () const
 
bool dontDropBorrow () const
 
void setDontDropBorrow (bool flag)
 
bool moved () const
 
void setMoved (bool flag)
 
void * rawSharedTo (const Ref< Device > &device)
 
void * rawMovedTo (const Ref< Device > &device)
 
void * rawInitTo (const Ref< Device > &device)
 
void * rawTemporarilyCopiedTo (const Ref< Device > &device)
 
void makePrivateCopy ()
 

Static Public Member Functions

static Array moveFromRaw (void *ptr, const std::vector< size_t > &shape, DataType dtype, const Ref< Device > &device)
 
static Array borrowFromRaw (void *ptr, const std::vector< size_t > &shape, DataType dtype, const Ref< Device > &device, bool dontDropBorrow, bool moved)
 

Detailed Description

Data stored on a Device or shared by multiple Devices

An Array manages one or more ArrayCopys, locating on different devices. An ArrayCopy can be a memory buffer managed by itself, or can be borrowed from a user object.

When an Array is required for read-only, an ArrayCopy will be copied to a specific device, if there isn't one on the device.

When an Array is requried for write-only, an ArrayCopy will be allocated without initialization on a specific device, if there isn't one, and copies on other devices will be dropped. Writing to a lending user object at a different device is not supported.

When an Array is requried for read-write, an ArrayCopy will be copied to a specific device, if there isn't one, and copies on other devices will be dropped. Writing to a lending user object at a different device is not supported.

Constructor & Destructor Documentation

◆ ~Array()

freetensor::Array::~Array ( )

◆ Array() [1/2]

freetensor::Array::Array ( Array &&  other)

◆ Array() [2/2]

freetensor::Array::Array ( const Array )
delete

Member Function Documentation

◆ borrowFromRaw()

Array freetensor::Array::borrowFromRaw ( void *  ptr,
const std::vector< size_t > &  shape,
DataType  dtype,
const Ref< Device > &  device,
bool  dontDropBorrow,
bool  moved 
)
static

Borrow from raw pointer.

Please make sure the owner keeps alive. Use keep_alive when exposing with PyBind11

◆ dontDropBorrow()

bool freetensor::Array::dontDropBorrow ( ) const
inline

◆ dtype()

DataType freetensor::Array::dtype ( ) const
inline

◆ makePrivateCopy()

void freetensor::Array::makePrivateCopy ( )

Somethings we can't keep track of user objects, so we need to ensure we don't borrow from user data

◆ moved()

bool freetensor::Array::moved ( ) const
inline

◆ moveFromRaw()

Array freetensor::Array::moveFromRaw ( void *  ptr,
const std::vector< size_t > &  shape,
DataType  dtype,
const Ref< Device > &  device 
)
static

Move from raw pointer. Use with cautious

◆ nElem()

size_t freetensor::Array::nElem ( ) const
inline

◆ operator=() [1/2]

Array & freetensor::Array::operator= ( Array &&  other)

◆ operator=() [2/2]

Array & freetensor::Array::operator= ( const Array )
delete

◆ rawInitTo()

void * freetensor::Array::rawInitTo ( const Ref< Device > &  device)

◆ rawMovedTo()

void * freetensor::Array::rawMovedTo ( const Ref< Device > &  device)

◆ rawSharedTo()

void * freetensor::Array::rawSharedTo ( const Ref< Device > &  device)

◆ rawTemporarilyCopiedTo()

void * freetensor::Array::rawTemporarilyCopiedTo ( const Ref< Device > &  device)

◆ setDontDropBorrow()

void freetensor::Array::setDontDropBorrow ( bool  flag)
inline

◆ setMoved()

void freetensor::Array::setMoved ( bool  flag)
inline

◆ shape()

const std::vector< size_t > & freetensor::Array::shape ( ) const
inline

◆ size()

size_t freetensor::Array::size ( ) const
inline

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