|
tvm
|
TVM Runtime Device API, abstracts the device specific interface for memory management. More...
#include <device_api.h>
Public Member Functions | |
| virtual | ~DeviceAPI () |
| virtual destructor | |
| virtual void | SetDevice (Device dev)=0 |
| Set the environment device id to device. | |
| virtual int | GetDeviceIndex () |
| Get the currently selected runtime device index on the calling host thread. | |
| virtual ffi::Any | GetAttr (DLDevice dev, const ffi::String &name)=0 |
| Query an attribute of a device. | |
| virtual ffi::Tensor | Empty (ffi::ShapeView shape, DLDataType dtype, DLDevice device, ffi::Optional< ffi::String > mem_scope=std::nullopt)=0 |
| Create an owning, compact tensor with uninitialized contents. | |
| virtual void | CopyDataFromTo (DLTensor *from, DLTensor *to, TVMStreamHandle stream) |
| copy data from one place to another | |
| virtual TVMStreamHandle | CreateStream (Device dev) |
| Create a new stream of execution. | |
| virtual void | FreeStream (Device dev, TVMStreamHandle stream) |
| Free a stream of execution. | |
| virtual void | StreamSync (Device dev, TVMStreamHandle stream)=0 |
| Synchronize the stream. | |
| virtual void | SetStream (Device dev, TVMStreamHandle stream) |
| Set the stream. | |
| virtual TVMStreamHandle | GetCurrentStream (Device dev) |
| Get the current stream. | |
| virtual void | SyncStreamFromTo (Device dev, TVMStreamHandle event_src, TVMStreamHandle event_dst) |
| Synchronize 2 streams of execution. | |
| virtual void * | AllocWorkspace (Device dev, size_t nbytes, DLDataType type_hint={}) |
| Allocate temporal workspace for backend execution. | |
| virtual void | FreeWorkspace (Device dev, void *ptr) |
| Free temporal workspace in backend execution. | |
| virtual bool | SupportsDevicePointerArithmeticsOnHost () |
| Whether pointer arithmetics on a device owned pointer may be performed on the host. | |
Static Public Member Functions | |
| static DeviceAPI * | Get (Device dev, bool allow_missing=false) |
| Get device API based on device. | |
| static bool | NeedSetDevice (int device_type) |
| Whether a certian device type requires set device device before launching the kernel function. | |
Protected Member Functions | |
| virtual void | CopyDataFromTo (const void *from, size_t from_offset, void *to, size_t to_offset, size_t num_bytes, Device dev_from, Device dev_to, DLDataType type_hint, TVMStreamHandle stream) |
| copy data from one place to another | |
TVM Runtime Device API, abstracts the device specific interface for memory management.
|
inlinevirtual |
virtual destructor
|
virtual |
Allocate temporal workspace for backend execution.
| dev | The device of allocation. |
| nbytes | The size to be allocated. |
| type_hint | The type of elements. Only needed by certain backends such as OpenGL, as nbytes is sufficient for most backends. |
|
protectedvirtual |
copy data from one place to another
| from | The source array. |
| from_offset | The byte offeset in the from. |
| to | The target array. |
| to_offset | The byte offset in the to. |
| num_bytes | The size of the memory in bytes |
| dev_from | The source device |
| dev_to | The target device |
| type_hint | The type of elements, only neded by certain backends. can be useful for cross device endian converison. |
| stream | Optional stream object. |
|
virtual |
copy data from one place to another
| from | The source array. |
| to | The target array. |
| stream | Optional stream object. |
|
virtual |
Create a new stream of execution.
| dev | The device of allocation. |
|
pure virtual |
Create an owning, compact tensor with uninitialized contents.
| shape | Logical shape, copied into the returned tensor. |
| dtype | Element datatype. |
| device | Device on which to allocate storage. |
| mem_scope | Optional backend memory scope. |
|
virtual |
Free a stream of execution.
| dev | The device of the stream |
| stream | The pointer to be freed. |
Free temporal workspace in backend execution.
| dev | The device of allocation. |
| ptr | The pointer to be freed. |
Get device API based on device.
| dev | The device |
| allow_missing | Whether allow missing |
|
pure virtual |
Query an attribute of a device.
| dev | The device to query. |
| name | Attribute name. "exist" returns a boolean; unsupported optional attributes return None. Errors querying a supported attribute are propagated. |
|
virtual |
Get the current stream.
| dev | The device to get stream. |
Get the currently selected runtime device index on the calling host thread.
The device type is determined by this DeviceAPI instance. The result is a runtime device index (DLDevice::device_id), not a device type or a target configuration index. Implementations must query the current selection without changing it. The default implementation throws NotImplementedError; support for SetDevice does not imply support for this query. RPC devices are excluded.
Whether a certian device type requires set device device before launching the kernel function.
| device_type | The device type. |
Set the environment device id to device.
| dev | The device to be set. |
|
virtual |
Set the stream.
| dev | The device to set stream. |
| stream | The stream to be set. |
|
pure virtual |
Synchronize the stream.
| dev | The device to perform operation. |
| stream | The stream to be sync. |
Whether pointer arithmetics on a device owned pointer may be performed on the host.
|
virtual |
Synchronize 2 streams of execution.
An event is created in event_src stream that the second then stream waits on. Neither event_src or event_dst need to be of the same device ID as the device, but they must be of the same device type.
| dev | The device of the streams. |
| event_src | The source stream to synchronize. |
| event_dst | The destination stream to synchronize. |