先決條件 | 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 以訪問這些資料並進行執行後分析。