目录

先决条件 |ETDump - ExecuTorch 转储

ETDump (ExecuTorch Dump) 是 ExecuTorch SDK 体验的核心组件之一。通过该机制,可以从运行时中提取所有形式的分析和调试数据。用户不能直接解析 ETDump;相反,他们应该将其传递给 Inspector API,该 API 对数据进行反序列化,从而为灵活的分析和调试提供接口。

生成 ETDump

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

  1. 在代码中包含 ETDump 标头。

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

torch::executor::ETDumpGen etdump_gen = torch::executor::ETDumpGen();
Result<Method> method =
      program->load_method(method_name, &memory_manager, &etdump_gen);
  1. Dump Out the ETDump Buffer - 推理迭代完成后,用户可以转储 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. 使用 flag 编译二进制文件,以便在 ExecuTorch 运行时内跟踪事件并将其记录到 ETDump 中。ET_EVENT_TRACER_ENABLED

    i). 巴克

    在 Buck 中,用户只需依赖 etdump 目标,即:

    //executorch/sdk/etdump:etdump_flatcc
    

    当通过 Buck 编译他们的二进制文件时,用户可以传入这个 buck 配置来启用预处理器标志。例如,当编译以启用 ETDump 生成时,用户使用以下命令进行编译:sdk_example_runner

    buck2 build -c executorch.event_tracer_enabled=true examples/sdk/sdk_example_runner:sdk_example_runner
    

    CMake (简体中文

    在 CMake 中,用户将以下内容添加到他们的编译标志中:

    -DET_EVENT_TRACER_ENABLED
    

    此标志需要添加到 ExecuTorch 库和用户正在编译到其二进制文件中的任何运算符库中。作为参考,用户可以查看 。感兴趣的行是:examples/sdk/CMakeLists.txt

    target_compile_options(executorch PUBLIC -DET_EVENT_TRACER_ENABLED)
    target_compile_options(portable_ops_lib PUBLIC -DET_EVENT_TRACER_ENABLED)
    

使用 ETDump

  1. 将此 ETDump 传递到 Inspector API 中以访问此数据并进行运行后分析。

文档

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

查看文档

教程

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

查看教程

资源

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

查看资源