tvm
|
Timer for a specific device. More...
#include <profiling.h>
Public Member Functions | |
TVM_DEFINE_MUTABLE_OBJECT_REF_METHODS (Timer, ObjectRef, TimerNode) | |
![]() | |
ObjectRef ()=default | |
default constructor More... | |
ObjectRef (ObjectPtr< Object > data) | |
Constructor from existing object ptr. More... | |
bool | same_as (const ObjectRef &other) const |
Comparator. More... | |
bool | operator== (const ObjectRef &other) const |
Comparator. More... | |
bool | operator!= (const ObjectRef &other) const |
Comparator. More... | |
bool | operator< (const ObjectRef &other) const |
Comparator. More... | |
bool | defined () const |
const Object * | get () const |
const Object * | operator-> () const |
bool | unique () const |
int | use_count () const |
template<typename ObjectType , typename = std::enable_if_t<std::is_base_of_v<Object, ObjectType>>> | |
const ObjectType * | as () const |
Try to downcast the internal Object to a raw pointer of a corresponding type. More... | |
template<typename ObjectRefType , typename = std::enable_if_t<std::is_base_of_v<ObjectRef, ObjectRefType>>> | |
Optional< ObjectRefType > | as () const |
Try to downcast the ObjectRef to a Optional<T> of the requested type. More... | |
Static Public Member Functions | |
static Timer | Start (Device dev) |
Get a device specific timer. More... | |
Additional Inherited Members | |
![]() | |
using | ContainerType = Object |
type indicate the container type. More... | |
![]() | |
static constexpr bool | _type_is_nullable = true |
![]() | |
Object * | get_mutable () const |
![]() | |
template<typename T > | |
static T | DowncastNoCheck (ObjectRef ref) |
Internal helper function downcast a ref without check. More... | |
static void | FFIClearAfterMove (ObjectRef *ref) |
Clear the object ref data field without DecRef after we successfully moved the field. More... | |
template<typename ObjectType > | |
static ObjectPtr< ObjectType > | GetDataPtr (const ObjectRef &ref) |
Internal helper function get data_ as ObjectPtr of ObjectType. More... | |
![]() | |
ObjectPtr< Object > | data_ |
Internal pointer that backs the reference. More... | |
Get a device specific timer.
dev | The device to time. |
Timer
that has already been started.Use this function to time runtime of arbitrary regions of code on a specific device. The code that you want to time should be running on the device otherwise the timer will not return correct results. This is a lower level interface than TimeEvaluator and only runs the timed code once (TimeEvaluator runs the code multiple times).
A default timer is used if a device specific one does not exist. This timer performs synchronization between the device and CPU, which can lead to overhead in the reported results.
Example usage:
To add a new device-specific timer, register a new function "profiler.timer.my_device" (where my_device
is the DeviceName
of your device). This function should accept a Device
and return a new Timer
that has already been started.
For example, this is how the CPU timer is implemented: