NV::Rules::IAction

class IAction

Action 接口。

表示一个活动,例如在单个范围内执行的 CUDA 内核,为此收集了零个或多个指标

公共类型

enum class NameBase

Action 名称的基础。

此基础决定了在调用 name 时如何表示 action 名称。FUNCTION 是不带参数或返回值的最小基本名称。DEMANGLED 是 demangled 名称,包括参数和返回值。MANGLED 是 mangled 名称,包括参数和返回值。

enumerator FUNCTION
enumerator DEMANGLED
enumerator MANGLED
enum class WorkloadType

IActions 可以表示的工作负载类型。

工作负载类型可以使用 workload_type 查询。KERNEL 表示常规 CUDA 内核启动。RANGE 表示 CUDA API 调用和内核启动的范围。CMDLIST 表示 CBL cmdlist。GRAPH 表示 CUDA 图。

enumerator KERNEL

常规 CUDA 内核启动

enumerator RANGE

CUDA API 调用和内核启动的范围

enumerator CMDLIST

CBL cmdlist。

enumerator GRAPH

CUDA 图。

公共函数

virtual IMetric *add_double_metric(const char *value_name, IMetric::ValueKind value_kind, double value) = 0

向此 action 添加单个浮点指标。

向此 action 添加一个名为 value_name 且类型为 value_kind 的浮点指标

返回

新的 IMetric

virtual IMetric *add_integer_metric(const char *value_name, IMetric::ValueKind value_kind, uint64_t value) = 0

向此 action 添加单个整数指标。

向此 action 添加一个名为 value_name 且类型为 value_kind 的整数指标。

返回

新的 IMetric

virtual IMutableMetric *add_metric(const char *value_name) = 0

向此 action 添加单个可变指标。

向此 action 添加一个名为 value_name 的单个可变指标。该指标未初始化任何类型或值,之后需要分配适当的值和/或实例。IMutableMetric 提供以下接口

void set_double(IMetric::ValueKind value_kind, double value)

如果值已设置,则返回 true,否则返回 false。为指标分配 value_kind 类型的浮点值。可接受的类型为 FLOAT、DOUBLE 或 ANY(实现会内部选择类型)

bool set_double(size_t instance, IMetric::ValueKind value_kind, double value)

如果实例值已设置,则返回 true,否则返回 false。为指标分配 value_kind 类型的实例浮点值。可接受的类型为 FLOAT、DOUBLE 或 ANY(实现会内部选择类型)

void set_uint64(IMetric::ValueKind value_kind, uint64_t value)

如果值已设置,则返回 true,否则返回 false。为指标分配 value_kind 类型的整数值。可接受的类型为 UINT32、UINT64 或 ANY(实现会内部选择类型)

bool set_uint64(size_t instance, IMetric::ValueKind value_kind, uint64_t value)

如果实例值已设置,则返回 true,否则返回 false。为指标分配 value_kind 类型的实例整数值。可接受的类型为 UINT32、UINT64 或 ANY(实现会内部选择类型)

void set_string(IMetric::ValueKind value_kind, const char* value)

如果值已设置,则返回 true,否则返回 false。为指标分配 value_kind 类型的字符串值。可接受的类型为 STRING 或 ANY(实现会内部选择类型)

bool set_string(size_t instance, IMetric::ValueKind value_kind, const char* value)

如果实例值已设置,则返回 true,否则返回 false。为指标分配 value_kind 类型的实例字符串值。可接受的类型为 STRING 或 ANY(实现会内部选择类型)

IMutableMetric *mutable_correlation_ids()

返回一个新的可变指标对象,表示指标实例值的关联 ID。关联 ID 用于将实例值与它们的值所代表的“实例”相关联。在返回的新指标对象中,关联 ID 是该对象的实例值。

返回

新的 IMutableMetric

virtual IMetric *add_string_metric(const char *value_name, IMetric::ValueKind value_kind, const char *value) = 0

向此 action 添加单个字符串指标。

向此 action 添加一个名为 value_name 且类型为 value_kind 的字符串指标

返回

新的 IMetric

virtual IMetric *metric_by_name(const char *metric_name) = 0

通过名称获取单个指标。

通过 metric_name 获取单个 IMetric

virtual std::set<std::string> metric_names() = 0

获取指标名称的集合。

获取此 action 可用的指标集合

virtual const char *name(NameBase base = NameBase::FUNCTION) = 0

获取 action 名称。

获取 action 名称

virtual INvtxState *nvtx_state() = 0

获取与此 action 关联的 NVTX 状态。

返回

如果此 action 有任何 NVTX 状态可用,则返回一个新的 INvtxState 对象。

virtual std::string ptx_by_pc(uint64_t address) = 0

获取此 action 中函数地址的 PTX。

获取此 action 中函数 address 的 PTX。该地址应为绝对地址,即从源相关指标的关联 ID 中获得。

返回

PTX 字符串。如果此地址没有关联的 PTX,则返回空字符串

virtual std::string sass_by_pc(uint64_t address) = 0

获取此 action 中函数地址的反汇编 SASS。

获取此 action 中函数 address 的反汇编 SASS。该地址应为绝对地址,即从源相关指标的关联 ID 中获得。SASS 可能包含反汇编程序生成的格式化空格。

返回

SASS 字符串。如果此地址没有关联的 SASS,则返回空字符串

virtual std::map<std::string, std::string> source_files() = 0

获取与 action 关联的源文件。

获取与此 action 关联的源文件及其内容的映射。如果某个文件的内容不可用(例如,因为它尚未导入到报告中),则文件名将映射到空字符串。

返回

从文件名到文件内容的映射

virtual ISourceInfo *source_info(uint64_t address) = 0

获取此 action 中函数地址的源信息。

获取此 action 中 address 的源信息。地址通常作为源相关指标的关联 ID 获得。

返回

如果可用,则返回一个新的 ISourceInfo 对象

virtual WorkloadType workload_type() = 0

获取工作负载类型。

获取 action 代表的工作负载类型。

inline virtual ~IAction()