NV::Rules::IFrontend

class IFrontend

前端接口。

前端负责通过用户界面、日志或输出文件将消息和结果传递给调用者。

公共类型

using Dict = std::map<std::string, double>
enum class MarkerKind

标记类型。

在源页面中使用 source_marker 创建的标记的类型。 SASS 标记将与 SASS 指令关联。 SOURCE 标记将与源行关联。

enumerator SASS
enumerator SOURCE
enum class MsgType

消息类型。

调用 message 时,发送到前端的消息所代表的类型。 MSG_NONE 此消息没有特定类型。 MSG_OK 该消息是信息性的。 MSG_OPTIMIZATION 该消息代表性能优化的建议。 MSG_WARNING 该消息代表警告或可修复的问题。 MSG_ERROR 该消息代表错误,可能是在执行规则时发生的错误。

enumerator MSG_NONE
enumerator MSG_OK
enumerator MSG_OPTIMIZATION
enumerator MSG_WARNING
enumerator MSG_ERROR
using RuleId = std::string
enum class Severity

焦点指标严重性。

调用 focus_metric 时,焦点指标代表的严重性。规则系统客户端在处理焦点指标时可以使用严重性。 SEVERITY_DEFAULT 默认严重性。 SEVERITY_LOW 低严重性。 SEVERITY_HIGH 高严重性。

enumerator SEVERITY_DEFAULT
enumerator SEVERITY_LOW
enumerator SEVERITY_HIGH
enum class SpeedupType

加速估计类型。

调用 speedup 时使用的加速估计类型。 LOCAL 从隔离的角度查看性能问题时,硬件使用效率的成比例增加。 GLOBAL 整个工作负载运行时的成比例减少。

enumerator LOCAL
enumerator GLOBAL

公共函数

virtual bool _generate_table(int message_id, const NV::Rules::TableData &table) = 0

将表格附加到规则结果消息。

建议使用高级 API #generate_table 而不是直接调用此函数。

将表格附加到 ID 为 message_id 的规则结果消息,以及 table 中包含的表格数据和配置。

virtual bool focus_metric(int message_id, const char *metric_name, double metric_value, Severity severity, const char *info) = 0

规则焦点指标消息。

向前端发出焦点指标消息,例如,指示触发规则输出的关键指标。可以使用其 message_id 与之前的消息关联。severity 可用于指示此指标对结果的影响/严重性。info 字段可以设置为描述性字符串以获取更多信息,例如,导致此指标成为焦点的计算。返回是否可以为 message_id 成功设置 focus_metric。

virtual void load_chart_from_file(const char *filename) = 0

filename 加载 ProfilerSection google protcol buffer 图表。

virtual int message(const char *str, const char *name = nullptr) = 0

规则结果消息。

向前端发出消息 str,使用默认的 MsgType 和可选的名称 name。返回在此规则调用中唯一的 message ID。

virtual int message(MsgType type, const char *str, const char *name = nullptr) = 0

规则结果消息。

向前端发出具有特定消息 type 和可选名称 name 的消息 str。返回在此规则调用中唯一的 message ID。

virtual Dict receive_dict_from_parent(const RuleId &parent_id) = 0

从父规则 parent_id 接收字典。

接收使用 send_dict_to_children 发送的 dict[str,float] 类型的字典。如果 parent_id 不代表此规则的预先指定的父规则,或者如果父规则尚未执行,则将返回空字典。

virtual void send_dict_to_children(const Dict &dict) = 0

将字典 dict 发送到所有子规则。

将 dict[str,float] 类型的 Python 字典发送到所有指定此规则为父规则的规则。子规则可以使用 receive_dict_from_parent 检索消息。如果重复调用此函数,则字典会相应更新,从而添加新的键值对,并覆盖预先存在的键的值。

virtual void source_marker(const char *str, uint64_t address_or_line, MarkerKind kind, const char *file_name, MsgType type = MsgType::MSG_NONE) = 0

规则源标记。

在源位置 address_or_line 的适当 kind 源中创建带有消息 str 的源标记。此函数支持多文件程序,这意味着必须指定 file_nametype 表示与此标记关联的紧急程度,是可选的。

virtual void source_marker(const char *str, uint64_t address_or_line, MarkerKind kind, MsgType type = MsgType::MSG_NONE) = 0

规则源标记。

在源位置 address_or_line 的适当 kind 源中创建带有消息 str 的源标记。type 表示与此标记关联的紧急程度,是可选的。

virtual bool speedup(int message_id, SpeedupType type, double estimated_speedup) = 0

规则估计加速消息。

向前端发出与 ID 为 message_id 的消息关联的估计加速。当 typeSpeedupType::GLOBAL 时,它表示在遵循规则指南时,工作负载运行时可能实现的成比例减少。当 typeSpeedupType::LOCAL 时,它表示在性能问题的上下文中,硬件使用效率可能提高的幅度。返回是否可以为 message_id 成功设置加速。

inline virtual ~IFrontend()