目录

前提条件 | ETDump - ExecuTorch 转储

ETDump(ExecuTorch 转储)是 ExecuTorch 开发者工具的核心组件之一。它是从运行时提取各类性能分析和调试数据的机制。用户无法直接解析 ETDump,而应将其传入 Inspector API;该 API 会对数据进行反序列化,并提供灵活的接口以支持分析与调试。

生成 ETDump

生成 ETDump 是一个相对简单的过程。用户可以按照以下详细步骤,将其集成到使用 ExecuTorch 的应用程序中。

  1. 在代码中包含 ETDump 头文件。

#include <executorch/devtools/etdump/etdump_flatcc.h>
  1. 创建 ETDumpGen 类的实例,并将其传递给运行时中调用的 load_method 调用。

executorch::etdump::ETDumpGen etdump_gen;
Result<Method> method =
      program->load_method(method_name, &memory_manager, &etdump_gen);
  1. 导出 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);
  }
  1. 编译您的二进制文件时,请使用 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 以访问此数据并进行运行后分析。

文档

访问 PyTorch 的全面开发人员文档

查看文档

教程

获取面向初学者和高级开发人员的深入教程

查看教程

资源

查找开发资源并解答您的问题

查看资源