先決條件 | ETDump - ExecuTorch Dump¶
ETDump (ExecuTorch Dump) 是 ExecuTorch 開發者工具的核心組件之一。它是從運行時提取所有形式的性能分析和除錯資料的機制。使用者不能直接解析 ETDump;相反地,他們應該將其傳遞到 Inspector API 中,該 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);
}
編譯 您的二進位檔,使用帶有
ET_EVENT_TRACER_ENABLED
預處理器旗標的 CMake,以啟用事件追蹤並記錄到 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 以存取此資料並進行運行後分析。