26#ifndef TVM_TARGET_VIRTUAL_DEVICE_H_
27#define TVM_TARGET_VIRTUAL_DEVICE_H_
33#include <unordered_set>
247 namespace refl = tvm::ffi::reflection;
248 refl::ObjectDef<VirtualDeviceNode>()
249 .def_ro(
"device_type_int", &VirtualDeviceNode::device_type_int,
252 "The device id of the virtual device.", refl::DefaultValue(-1))
254 "The target describing how to compile for the virtual device.",
255 refl::DefaultValue(
Target()))
257 "The area of memory w.r.t. the virtual device where data is stored.",
258 refl::DefaultValue(
""));
281 int virtual_device_id = -1,
Target target = {},
299 return ForDeviceType(
static_cast<int>(device_type), virtual_device_id);
309 return VirtualDevice(device.device_type, device.device_id, std::move(target));
326 return VirtualDevice(device.device_type, device.device_id, std::move(target),
327 std::move(memory_scope));
370 std::unordered_set<VirtualDevice, ffi::StructuralHash, ffi::StructuralEqual> cache_;
Base class of all attribute class.
Definition attrs.h:49
Managed reference class to TargetNode.
Definition target.h:134
A cache of VirtualDevices. This can be used:
Definition virtual_device.h:357
VirtualDevice Unique(const VirtualDevice &virtual_device)
Returns the unique VirtualDevice structurally equal to the given virtual_device.
VirtualDevice Make(int device_type=kInvalidDeviceType, int virtual_device_id=-1, Target target={}, MemoryScope memory_scope={})
Returns the unique VirtualDevice representing given fields.
Describes at compile time the constraints on where data is to be stored at runtime down to the (virtu...
Definition virtual_device.h:172
static void RegisterReflection()
Definition virtual_device.h:246
TVM_FFI_DECLARE_OBJECT_INFO_FINAL("target.VirtualDevice", VirtualDeviceNode, AttrsNode)
DLDeviceType device_type() const
Definition virtual_device.h:188
Target target
The Target describing how to compile for the virtual device.
Definition virtual_device.h:205
int virtual_device_id
The device identifier for the virtual device. This must be resolved to a physical device identifier e...
Definition virtual_device.h:196
MemoryScope memory_scope
The scope of memory w.r.t. the virtual device which holds data.
Definition virtual_device.h:212
Device ToDevice() const
Returns the (virtual) Device implied by this VirtualDevice. Both the device_type and virtual_device_m...
Definition virtual_device.h:237
bool IsFullyUnconstrained() const
Returns true if virtual device is 'fully unconstrained', ie no target/device type,...
Definition virtual_device.h:218
bool IsFullyConstrained() const
Returns true if virtual device is 'fully constrained', ie target, device id and memory scope are all ...
Definition virtual_device.h:227
Managed reference class to VirtualDeviceNode.
Definition virtual_device.h:268
VirtualDevice(int device_type_int=kInvalidDeviceType, int virtual_device_id=-1, Target target={}, MemoryScope memory_scope={})
Construct a virtual device.
static ffi::Optional< VirtualDevice > Join(const VirtualDevice &lhs, const VirtualDevice &rhs)
Returns the 'join' of lhs and rhs. The result will agree pointwise with lhs and rhs on all their cons...
static VirtualDevice ForDeviceTargetAndMemoryScope(const Device &device, Target target, MemoryScope memory_scope)
Returns the VirtualDevice for device, target and memory_scope.
Definition virtual_device.h:324
static VirtualDevice ForMemoryScope(MemoryScope memory_scope)
Returns the VirtualDevice for memory_scope alone.
Definition virtual_device.h:319
static VirtualDevice Default(const VirtualDevice &lhs, const VirtualDevice &rhs)
Returns the 'default' of lhs and rhs. The result will be lhs, except any unconstrained fields in lhs ...
static VirtualDevice FullyUnconstrained()
Returns the unique fully unconstrained VirtualDevice.
static VirtualDevice ForDeviceAndTarget(const Device &device, Target target)
Returns the VirtualDevice for device and target.
Definition virtual_device.h:308
static VirtualDevice ForDevice(const Device &device)
Returns the VirtualDevice for device.
Definition virtual_device.h:303
TVM_FFI_DEFINE_OBJECT_REF_METHODS_NOTNULLABLE(VirtualDevice, ffi::ObjectRef, VirtualDeviceNode)
static VirtualDevice ForDeviceType(DLDeviceType device_type, int virtual_device_id=-1)
Returns the VirtualDevice for device_type and (if not -1) virtual_device_id. The target and memory sc...
Definition virtual_device.h:291
static VirtualDevice ForDeviceType(int device_type, int virtual_device_id=-1)
Definition virtual_device.h:295
static VirtualDevice ForDeviceType(int64_t device_type, int virtual_device_id=-1)
Definition virtual_device.h:298
static VirtualDevice ForTarget(Target target)
Returns the VirtualDevice for target.
Definition virtual_device.h:313
RAII wrapper function to enter and exit a context object similar to python's with syntax.
Definition with_context.h:59
An object that builds and maintains block scope and StmtSref mapping for Dependence analysis.
Definition analyzer.h:40
constexpr const char * kVirtualDevice
Definition virtual_device.h:378
constexpr int kInvalidDeviceType
Definition virtual_device.h:55
ffi::String MemoryScope
Abstract label for an area of memory.
Definition global_info.h:37
constexpr int kNullDeviceType
Definition virtual_device.h:52
Compilation target object.