先决条件 | ETDump - ExecuTorch Dump¶
ETDump (ExecuTorch Dump) 是 ExecuTorch 开发者工具的核心组件之一。它是从运行时提取所有形式的性能分析和调试数据的机制。用户不能直接解析 ETDump;相反,他们应该将其传递给 Inspector API,Inspector API 会反序列化数据,提供灵活的分析和调试接口。
生成 ETDump¶
生成 ETDump 是一个相对简单的过程。用户可以按照下面详细介绍的步骤将其集成到使用 ExecuTorch 的应用程序中。
包含 ETDump 头文件到您的代码中。
#include <executorch/devtools/etdump/etdump_flatcc.h>
创建 一个 ETDumpGen 类的实例,并将其传递到运行时调用的
load_method
函数中。
executorch::etdump::ETDumpGen etdump_gen;
Result<Method> method =
program->load_method(method_name, &memory_manager, &etdump_gen);
导出 ETDump 缓冲区 - 推理迭代完成后,用户可以导出 ETDump 缓冲区。如果用户所在的设备具有文件系统,可以直接将其写入文件系统。对于资源受限的嵌入式设备,用户需要通过最适合他们的方式(例如 UART、JTAG 等)从设备中提取 ETDump 缓冲区。
etdump_result result = etdump_gen.get_etdump_data();
if (result.buf != nullptr && result.size > 0) {
// On a device with a file system users can just write it out
// to the file-system.
FILE* f = fopen(FLAGS_etdump_path.c_str(), "w+");
fwrite((uint8_t*)result.buf, 1, result.size, f);
fclose(f);
free(result.buf);
}
编译 您的二进制文件时,使用 CMake 并加上
ET_EVENT_TRACER_ENABLED
预处理器标志,以在 ExecuTorch 运行时内启用事件跟踪并记录到 ETDump 中。此标志需要添加到 ExecuTorch 库以及您编译到二进制文件中的任何运算符库中。作为参考,您可以查看examples/sdk/CMakeLists.txt
。相关行如下:
target_compile_options(executorch INTERFACE -DET_EVENT_TRACER_ENABLED)
target_compile_options(portable_ops_lib INTERFACE -DET_EVENT_TRACER_ENABLED)
使用 ETDump¶
将此 ETDump 传递给 Inspector API 以访问这些数据并进行运行后分析。