AGX Dynamics 2.41.2.0
Loading...
Searching...
No Matches
agx::Device Class Referenceabstract

An agx::Device is an abstract representation of a device on which data can be stored and processed. More...

#include <Device.h>

+ Inheritance diagram for agx::Device:

Public Types

enum  ByteOrder { AGX_LITTLE_ENDIAN , AGX_BIG_ENDIAN , UNDEFINED }
 Device dependent byte order, AGX prefix to avoid clash with macro definitions. More...
 
enum  Type {
  CPU , OPEN_CL , OPEN_GL , NUM_COMPUTE_DEVICES ,
  DISK , REMOTE_HOST , GROUP
}
 Explicit list of device types. More...
 
- Public Types inherited from agx::Component
typedef Event2< Component *, Object * > ObjectEvent
 Event when adding removing child objects.
 
typedef Callback1< Object * > TraverseCallback
 
- Public Types inherited from agx::Object
typedef agx::observer_ptr< const EventEventConstObserver
 
typedef agx::ref_ptr< const EventEventConstRef
 
typedef agx::observer_ptr< EventEventObserver
 
typedef agx::Vector< EventObserverEventObserverVector
 
typedef agx::VectorPOD< Event * > EventPtrVector
 
typedef agx::ref_ptr< EventEventRef
 
typedef agx::Vector< EventRefEventRefVector
 

Public Member Functions

 Device (const agx::Name &name, Type type, const agx::String &typeName, ByteOrder byteOrder=UNDEFINED)
 Constructor.
 
virtual agxData::BuffercreateBuffer (agxData::Format *format)=0
 
agxData::BuffercreateBuffer (agxData::Type *type)
 
agxData::BuffergetBuffer (agxData::Buffer *buffer)
 
ByteOrder getByteOrder () const
 
Type getType () const
 
agxData::FormatgetTypeFormat (agxData::Type *type)
 
const agx::StringgetTypeName () const
 
virtual agx::SyncTag * receiveData (void *hostBuffer, agxData::Buffer *Buffer, size_t offset, size_t size, bool blocking)=0
 Receive data from a buffer on the device.
 
virtual agx::SyncTag * sendData (const void *hostBuffer, agxData::Buffer *Buffer, size_t offset, size_t size, bool blocking)=0
 Send data to a buffer on the device.
 
void setTypeFormat (agxData::Type *type, agxData::Format *format)
 Set the type format for a specific type.
 
void setTypeFormat (const agx::String &typeName, const agx::String &formatName)
 
- Public Member Functions inherited from agx::Component
 Component (const agx::Name &name=agx::Name(), agx::Model *model=agx::Component::ClassModel(), agx::Device *device=nullptr)
 
virtual void addObject (agx::Object *object, bool assignContext=true)
 Add an object to the component.
 
virtual String autoComplete (const String &partialName, StringVector &matchingNames) const
 
virtual void buildNavigationTree (agxJson::Value &eNode) const override
 
void configure (Model *model)
 
virtual void configure (TiXmlElement *eComponent) override
 
agx::DevicegetDevice ()
 
template<typename T >
T * getDevice ()
 
const agx::DevicegetDevice () const
 
template<typename T >
const T * getDevice () const
 
size_t getNumObjects (const agx::Name &name) const
 
agx::ObjectgetObject (const agx::Name &name, agx::Model *model, size_t index=0)
 
const agx::ObjectgetObject (const agx::Name &name, agx::Model *model, size_t index=0) const
 
agx::ObjectgetObject (const agx::Name &name, size_t index=0)
 
template<typename T >
T * getObject (const agx::Name &name, size_t index=0)
 
const agx::ObjectgetObject (const agx::Name &name, size_t index=0) const
 
template<typename T >
const T * getObject (const agx::Name &name, size_t index=0) const
 
const agx::ObjectRefVectorgetObjects () const
 
template<typename T >
void getObjects (agx::ObjectPtrVector &result, bool recursive=false) const
 
void getObjects (agx::ObjectPtrVector &result, const agx::Model *model, bool recursive=false) const
 
virtual ObjectgetResourceImpl (const Path &path, agx::Model *model) override
 
virtual void printSubtree () const override
 
void printSubtree (std::ostream &stream, int depth=0) const
 
virtual void rebind () override
 
void removeAllObjects ()
 Remove all components.
 
virtual void removeObject (agx::Object *object)
 Remove an object from the component.
 
void removeObject (const agx::Name &name, size_t index=0)
 Remove an object with a specified name (and optional index) from the component.
 
virtual void snapshot (TiXmlNode *eParent, const String &directory) const override
 
void traverse (ComponentVisitor *)
 
void traverse (const TraverseCallback &callback)
 
- Public Member Functions inherited from agx::Object
 Object (const Name &name=Name(), Model *model=Object::ClassModel())
 
void addListener (EventListener *listener)
 
virtual void buildNavigationTree (agxJson::Value &eNode) const
 
virtual void configure (TiXmlElement *)
 
agx::String fullName () const
 
agx::String fullPath () const
 
agx::String fullPath (const agx::Object *root) const
 
template<typename T >
T * getAutoScopedResource (const agx::Path &path)
 
template<typename T >
const T * getAutoScopedResource (const agx::Path &path) const
 
agx::ObjectgetAutoScopedResource (const agx::Path &path, agx::Model *model=nullptr)
 
const agx::ObjectgetAutoScopedResource (const agx::Path &path, agx::Model *model=nullptr) const
 
agx::ObjectgetContext ()
 
template<typename T >
T * getContext ()
 
const agx::ObjectgetContext () const
 
template<typename T >
const T * getContext () const
 
agx::UInt32 getId () const
 
const agx::NamegetImplementationName () const
 
agx::ModelgetModel ()
 
const agx::ModelgetModel () const
 
const agx::NamegetName () const
 
agx::ObjectgetNextSibling ()
 
const agx::ObjectgetNextSibling () const
 
agx::Path getPath () const
 
agx::Path getPath (const agx::Object *root) const
 
template<typename T >
T * getResource (const agx::Path &path)
 
template<typename T >
const T * getResource (const agx::Path &path) const
 
agx::ObjectgetResource (const agx::Path &path, agx::Model *model=nullptr)
 
const agx::ObjectgetResource (const agx::Path &path, agx::Model *model=nullptr) const
 
virtual agx::ObjectgetResourceImpl (const agx::Path &path, agx::Model *model)
 
agx::ObjectgetRootContext ()
 
const agx::ObjectgetRootContext () const
 
bool hasListener (EventListener *listener)
 
bool hasParent (const agx::Object *node) const
 
bool isUnique () const
 
virtual void printSubtree () const
 
virtual void rebind ()
 
void removeListener (EventListener *listener)
 
virtual void save (TiXmlElement *) const
 
virtual void setContext (agx::Object *context)
 
void setId (UInt32 id)
 
void setModel (agx::Model *model)
 Set the object model (handled automatically).
 
void setName (const agx::Name &name)
 Set the name of the object.
 
virtual void snapshot (TiXmlNode *, const String &) const
 
- Public Member Functions inherited from agx::Referenced
 Referenced ()
 Default constructor.
 
 Referenced (const Referenced &)
 
template<typename T >
T * as ()
 Subclass casting.
 
template<typename T >
const T * as () const
 
template<typename T >
T * asSafe ()
 Safe subclass casting, return nullptr if template type does not match.
 
template<typename T >
const T * asSafe () const
 
int getReferenceCount () const
 
template<typename T >
bool is () const
 Subclass test.
 
Referencedoperator= (const Referenced &)
 Assignment operator. Will increment the number of references to the referenced object.
 
void reference (void *ptr=nullptr) const
 Explicitly increment the reference count by one, indicating that this object has another pointer which is referencing it.
 
void unreference (void *ptr=nullptr) const
 Decrement the reference count by one, indicating that a pointer to this object is referencing it.
 
void unreference_nodelete () const
 Decrement the reference count by one, indicating that a pointer to this object is referencing it.
 

Static Public Member Functions

static agx::ModelClassModel ()
 
static Deviceload (TiXmlElement *eDevice, Device *device)
 
- Static Public Member Functions inherited from agx::Component
static Component_load (TiXmlElement *eComponent, Device *device)
 
static agx::ModelClassModel ()
 
static Componentload (const Path &path, const Name &implementation, Device *device, const Path &_namespace=Path())
 
static Componentload (const String &path, const Path &_namespace=Path())
 
static Componentload (const String &path, Device *device, const Path &_namespace=Path())
 
static Componentload (TiXmlElement *eComponent, Device *device)
 
- Static Public Member Functions inherited from agx::Object
static agx::ModelClassModel ()
 
static agx::String generateName (const agx::String &bindPath)
 
static const HashSet< Object * > & getActiveObjects ()
 
static bool getEnableRebind ()
 Should rebinding be allowed? Right now a global setting.
 
static Objectload (const String &path, Device *device, const String &type, const String &attribute, const String &value)
 
template<typename T >
static T * load (const String &path, Device *device, const String &type, const String &attribute, const String &value)
 
static Objectload (const String &path, Device *device, const String &type="", size_t instance=0)
 
template<typename T >
static T * load (const String &path, Device *device, const String &type="", size_t instance=0)
 
static void load (const String &path, Device *device, ObjectPtrVector &loadedObjects)
 
static Objectload (TiXmlElement *eObject, Device *device)
 
template<typename T >
static T * load (TiXmlElement *eObject, Device *device)
 
static TiXmlDocument openDocument (const String &path)
 
static void setEnableRebind (bool flag)
 Sets if rebinding of objects should be allowed (Right now a global setting).
 
- Static Public Member Functions inherited from agx::Referenced
template<typename T >
static bool ValidateCast (const Referenced *object)
 

Protected Member Functions

virtual ~Device ()
 
virtual void destroyCallback (agx::Object *object) override
 
void setByteOrder (ByteOrder byteOrder)
 
- Protected Member Functions inherited from agx::Component
virtual ~Component ()
 
String expandAutoCompletionMatch (const String &query, const StringVector &matchingNames) const
 
void setDevice (Device *device)
 
- Protected Member Functions inherited from agx::Object
virtual ~Object ()
 
- Protected Member Functions inherited from agx::Referenced
virtual ~Referenced ()
 Destructor.
 
void allocateObserverVector () const
 
void deleteUsingDeleteHandler () const
 

Additional Inherited Members

- Public Attributes inherited from agx::Component
ObjectEvent addObjectEvent
 
ObjectEvent removeObjectEvent
 
- Static Protected Member Functions inherited from agx::Referenced
static DeleteHandlergetDeleteHandler ()
 
static void setDeleteHandler (DeleteHandler *handler)
 Internal: Set a DeleteHandler to which deletion of all referenced counted objects will be delegated to.
 
- Protected Attributes inherited from agx::Referenced
Mutex m_mutex
 
ObserverContainer m_observers
 
AtomicValue m_refCount
 

Detailed Description

An agx::Device is an abstract representation of a device on which data can be stored and processed.

Devices are hierarchical.

Example:

A distributed memory machine (computer cluster), is a device, in which each host machine is a device. Each host has a number of subdevices, eg each GPU is a device, with subdevices for compute groups the CPU is a device, with subdevices for each CPU socket, with subdevices for individual cores

Definition at line 57 of file Device.h.

Member Enumeration Documentation

◆ ByteOrder

Device dependent byte order, AGX prefix to avoid clash with macro definitions.

Enumerator
AGX_LITTLE_ENDIAN 
AGX_BIG_ENDIAN 
UNDEFINED 

Definition at line 67 of file Device.h.

◆ Type

Explicit list of device types.

Enumerator
CPU 
OPEN_CL 
OPEN_GL 
NUM_COMPUTE_DEVICES 
DISK 
REMOTE_HOST 
GROUP 

Definition at line 75 of file Device.h.

Constructor & Destructor Documentation

◆ Device()

agx::Device::Device ( const agx::Name name,
Type  type,
const agx::String typeName,
ByteOrder  byteOrder = UNDEFINED 
)

Constructor.

Parameters
byteOrderThe byteOrder of the device.

◆ ~Device()

virtual agx::Device::~Device ( )
protectedvirtual

Reimplemented in agxGL::Device.

Member Function Documentation

◆ ClassModel()

static agx::Model * agx::Device::ClassModel ( )
static

◆ createBuffer() [1/2]

virtual agxData::Buffer * agx::Device::createBuffer ( agxData::Format format)
pure virtual

◆ createBuffer() [2/2]

agxData::Buffer * agx::Device::createBuffer ( agxData::Type type)

◆ destroyCallback()

virtual void agx::Device::destroyCallback ( agx::Object object)
overrideprotectedvirtual

◆ getBuffer()

agxData::Buffer * agx::Device::getBuffer ( agxData::Buffer buffer)

◆ getByteOrder()

Device::ByteOrder agx::Device::getByteOrder ( ) const
Returns
The device byte order.

Definition at line 265 of file Device.h.

◆ getType()

Device::Type agx::Device::getType ( ) const
Returns
The device type.

Definition at line 263 of file Device.h.

◆ getTypeFormat()

agxData::Format * agx::Device::getTypeFormat ( agxData::Type type)
Returns
The type format for a type. Default formatting if no special formatting is registered.

◆ getTypeName()

const String & agx::Device::getTypeName ( ) const
Returns
The device type name.

Definition at line 264 of file Device.h.

◆ load()

static Device * agx::Device::load ( TiXmlElement *  eDevice,
Device device 
)
static

◆ receiveData()

virtual agx::SyncTag * agx::Device::receiveData ( void *  hostBuffer,
agxData::Buffer Buffer,
size_t  offset,
size_t  size,
bool  blocking 
)
pure virtual

Receive data from a buffer on the device.

Parameters
hostBufferThe target buffer.
BufferThe source buffer.
offsetThe offset (number of elements).
sizeThe size (number of elements).
blockingTrue if blocking.
Returns
A transfer tag to track the transfer.

Implemented in agx::DeviceGroup, agx::CpuDevice, and agxGL::Device.

◆ sendData()

virtual agx::SyncTag * agx::Device::sendData ( const void *  hostBuffer,
agxData::Buffer Buffer,
size_t  offset,
size_t  size,
bool  blocking 
)
pure virtual

Send data to a buffer on the device.

Parameters
hostBufferThe source buffer.
BufferThe target buffer.
offsetThe offset (number of elements).
sizeThe size (number of elements).
blockingTrue if blocking.
Returns
A transfer tag to track the transfer.

Implemented in agx::DeviceGroup, agx::CpuDevice, and agxGL::Device.

◆ setByteOrder()

void agx::Device::setByteOrder ( ByteOrder  byteOrder)
protected

◆ setTypeFormat() [1/2]

void agx::Device::setTypeFormat ( agxData::Type type,
agxData::Format format 
)

Set the type format for a specific type.

◆ setTypeFormat() [2/2]

void agx::Device::setTypeFormat ( const agx::String typeName,
const agx::String formatName 
)

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