Skip to content

Commit 3f4740a

Browse files
cccclaifacebook-github-bot
authored andcommitted
use etdump instead of event tracer
Differential Revision: D70356526
1 parent 6346348 commit 3f4740a

File tree

3 files changed

+52
-20
lines changed

3 files changed

+52
-20
lines changed

extension/module/module.cpp

Lines changed: 19 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ runtime::Result<std::unique_ptr<runtime::DataLoader>> load_file(
6666
Module::Module(
6767
const std::string& file_path,
6868
const LoadMode load_mode,
69-
std::unique_ptr<runtime::EventTracer> event_tracer)
69+
std::unique_ptr<etdump::ETDumpGen> event_tracer)
7070
: file_path_(file_path),
7171
load_mode_(load_mode),
7272
memory_allocator_(std::make_unique<MallocMemoryAllocator>()),
@@ -81,7 +81,7 @@ Module::Module(
8181
const std::string& file_path,
8282
const std::string& data_map_path,
8383
const LoadMode load_mode,
84-
std::unique_ptr<runtime::EventTracer> event_tracer)
84+
std::unique_ptr<etdump::ETDumpGen> event_tracer)
8585
: file_path_(file_path),
8686
data_map_path_(data_map_path),
8787
load_mode_(load_mode),
@@ -97,8 +97,10 @@ Module::Module(
9797
std::unique_ptr<runtime::DataLoader> data_loader,
9898
std::unique_ptr<runtime::MemoryAllocator> memory_allocator,
9999
std::unique_ptr<runtime::MemoryAllocator> temp_allocator,
100-
std::unique_ptr<runtime::EventTracer> event_tracer,
101-
std::unique_ptr<runtime::DataLoader> data_map_loader)
100+
std::unique_ptr<etdump::ETDumpGen> event_tracer,
101+
std::unique_ptr<runtime::DataLoader> data_map_loader,
102+
size_t debug_buffer_size,
103+
runtime::Program::Verification program_verification)
102104
: data_loader_(std::move(data_loader)),
103105
memory_allocator_(
104106
memory_allocator ? std::move(memory_allocator)
@@ -108,15 +110,17 @@ Module::Module(
108110
: std::make_unique<MallocMemoryAllocator>()),
109111
event_tracer_(std::move(event_tracer)),
110112
data_map_loader_(std::move(data_map_loader)),
111-
data_map_(nullptr) {
113+
data_map_(nullptr),
114+
debug_buffer_size_(debug_buffer_size),
115+
program_verification_(program_verification) {
112116
runtime::runtime_init();
113117
}
114118

115119
Module::Module(
116120
std::shared_ptr<runtime::Program> program,
117121
std::unique_ptr<runtime::MemoryAllocator> memory_allocator,
118122
std::unique_ptr<runtime::MemoryAllocator> temp_allocator,
119-
std::unique_ptr<runtime::EventTracer> event_tracer,
123+
std::unique_ptr<etdump::ETDumpGen> event_tracer,
120124
std::unique_ptr<runtime::DataLoader> data_map_loader)
121125
: program_(std::move(program)),
122126
memory_allocator_(
@@ -129,6 +133,14 @@ Module::Module(
129133
data_map_loader_(std::move(data_map_loader)),
130134
data_map_(nullptr) {
131135
runtime::runtime_init();
136+
if (event_tracer_ && debug_buffer_size_ > 0) {
137+
// If a debug buffer was requested for the ETDump, allocate it and make
138+
// sure its lifetime is as long as the event_tracer.
139+
debug_buffer_ = std::make_unique<uint8_t[]>(debug_buffer_size_);
140+
event_tracer_->set_debug_buffer(get_etdump_debug_buffer());
141+
event_tracer_->set_event_tracer_debug_level(
142+
runtime::EventTracerDebugLogLevel::kIntermediateOutputs);
143+
}
132144
}
133145

134146
runtime::Error Module::load(const runtime::Program::Verification verification) {
@@ -266,12 +278,6 @@ runtime::Error Module::set_inputs(
266278
const std::vector<runtime::EValue>& input_values) {
267279
ET_CHECK_OK_OR_RETURN_ERROR(load_method(method_name));
268280
auto& inputs = methods_.at(method_name).inputs;
269-
ET_CHECK_OR_RETURN_ERROR(
270-
inputs.size() == input_values.size(),
271-
InvalidArgument,
272-
"input size: %zu does not match method input size: %zu",
273-
input_values.size(),
274-
inputs.size());
275281
inputs = input_values;
276282
return runtime::Error::Ok;
277283
}
@@ -292,5 +298,6 @@ runtime::Error Module::set_output(
292298
output_tensor.mutable_data_ptr(), output_tensor.nbytes(), output_index);
293299
}
294300

301+
295302
} // namespace extension
296303
} // namespace executorch

extension/module/module.h

Lines changed: 32 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
#include <unordered_map>
1414
#include <unordered_set>
1515
#include <vector>
16-
16+
#include <executorch/devtools/etdump/etdump_flatcc.h>
1717
#include <executorch/runtime/executor/program.h>
1818

1919
namespace executorch {
@@ -49,7 +49,7 @@ class Module {
4949
explicit Module(
5050
const std::string& file_path,
5151
const LoadMode load_mode = LoadMode::MmapUseMlock,
52-
std::unique_ptr<runtime::EventTracer> event_tracer = nullptr);
52+
std::unique_ptr<etdump::ETDumpGen> event_tracer = nullptr);
5353

5454
/**
5555
* Constructs an instance by loading a program from a file with specified
@@ -64,7 +64,7 @@ class Module {
6464
const std::string& file_path,
6565
const std::string& data_map_path,
6666
const LoadMode load_mode = LoadMode::MmapUseMlock,
67-
std::unique_ptr<runtime::EventTracer> event_tracer = nullptr);
67+
std::unique_ptr<etdump::ETDumpGen> event_tracer = nullptr);
6868

6969
/**
7070
* Constructs an instance with the provided data loader and memory allocator.
@@ -80,8 +80,10 @@ class Module {
8080
std::unique_ptr<runtime::DataLoader> data_loader,
8181
std::unique_ptr<runtime::MemoryAllocator> memory_allocator = nullptr,
8282
std::unique_ptr<runtime::MemoryAllocator> temp_allocator = nullptr,
83-
std::unique_ptr<runtime::EventTracer> event_tracer = nullptr,
84-
std::unique_ptr<runtime::DataLoader> data_map_loader = nullptr);
83+
std::unique_ptr<etdump::ETDumpGen> event_tracer = nullptr,
84+
std::unique_ptr<runtime::DataLoader> data_map_loader = nullptr,
85+
size_t debug_buffer_size = 0,
86+
runtime::Program::Verification program_verification_ = runtime::Program::Verification::InternalConsistency);
8587

8688
/**
8789
* Constructs an instance using an existing shared program.
@@ -98,7 +100,7 @@ class Module {
98100
std::shared_ptr<runtime::Program> program,
99101
std::unique_ptr<runtime::MemoryAllocator> memory_allocator = nullptr,
100102
std::unique_ptr<runtime::MemoryAllocator> temp_allocator = nullptr,
101-
std::unique_ptr<runtime::EventTracer> event_tracer = nullptr,
103+
std::unique_ptr<etdump::ETDumpGen> event_tracer = nullptr,
102104
std::unique_ptr<runtime::DataLoader> data_map_loader = nullptr);
103105

104106
Module(const Module&) = delete;
@@ -438,10 +440,29 @@ class Module {
438440
* @returns A pointer to the EventTracer instance. Returns nullptr if no
439441
* EventTracer is set.
440442
*/
441-
inline runtime::EventTracer* event_tracer() const {
443+
inline etdump::ETDumpGen* event_tracer() const {
442444
return event_tracer_.get();
443445
}
444446

447+
bool has_etdump() {
448+
return static_cast<bool>(event_tracer_);
449+
}
450+
451+
bool has_etdump_debug_buffer() const {
452+
return static_cast<bool>(debug_buffer_);
453+
}
454+
455+
ET_NODISCARD
456+
runtime::Span<uint8_t> get_etdump_debug_buffer() {
457+
return runtime::Span<uint8_t>(debug_buffer_.get(), debug_buffer_size_);
458+
}
459+
460+
461+
ET_NODISCARD
462+
runtime::Method& get_method(const std::string& method_name) {
463+
return *methods_[method_name].method;
464+
}
465+
445466
private:
446467
struct MethodHolder {
447468
std::vector<std::vector<uint8_t>> planned_buffers;
@@ -459,9 +480,12 @@ class Module {
459480
std::unique_ptr<runtime::DataLoader> data_loader_;
460481
std::unique_ptr<runtime::MemoryAllocator> memory_allocator_;
461482
std::unique_ptr<runtime::MemoryAllocator> temp_allocator_;
462-
std::unique_ptr<runtime::EventTracer> event_tracer_;
483+
std::unique_ptr<etdump::ETDumpGen> event_tracer_;
463484
std::unique_ptr<runtime::DataLoader> data_map_loader_;
464485
std::unique_ptr<runtime::NamedDataMap> data_map_;
486+
std::unique_ptr<uint8_t[]> debug_buffer_;
487+
size_t debug_buffer_size_;
488+
runtime::Program::Verification program_verification_ = runtime::Program::Verification::InternalConsistency;
465489

466490
protected:
467491
std::unordered_map<std::string, MethodHolder> methods_;

extension/module/targets.bzl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ def define_common_targets():
2828
"//executorch/extension/flat_tensor:flat_tensor_data_map",
2929
],
3030
exported_deps = [
31+
"//executorch/devtools/etdump:etdump_flatcc" + aten_suffix,
3132
"//executorch/runtime/executor:program" + aten_suffix,
3233
],
3334
)

0 commit comments

Comments
 (0)