@@ -168,13 +168,15 @@ class Module final {
168
168
explicit Module (
169
169
std::unique_ptr<DataLoader> loader,
170
170
std::unique_ptr<ETDumpGen> tracer = nullptr ,
171
- size_t debug_buffer_size = 0 )
171
+ size_t debug_buffer_size = 0 ,
172
+ Program::Verification program_verification =
173
+ Program::Verification::InternalConsistency)
172
174
: loader_(std::move(loader)),
173
175
event_tracer_(std::move(tracer)),
174
176
debug_buffer_size_(debug_buffer_size) {
175
177
::executorch::runtime::runtime_init ();
176
- Result<Program> program = Program::load (
177
- loader_.get (), Program::Verification::InternalConsistency );
178
+ Result<Program> program =
179
+ Program::load ( loader_.get (), program_verification );
178
180
THROW_IF_ERROR (
179
181
program.error (),
180
182
" loading program failed with error: 0x%" PRIx32,
@@ -386,19 +388,22 @@ inline std::unique_ptr<Module> load_module_from_buffer(
386
388
const void * ptr,
387
389
size_t ptr_len,
388
390
bool enable_etdump,
389
- size_t debug_buffer_size) {
391
+ size_t debug_buffer_size,
392
+ Program::Verification program_verification) {
390
393
EXECUTORCH_SCOPE_PROF (" load_module_from_buffer" );
391
394
auto loader = std::make_unique<BufferDataLoader>(ptr, ptr_len);
392
395
return std::make_unique<Module>(
393
396
std::move (loader),
394
397
enable_etdump ? std::make_unique<torch::executor::ETDumpGen>() : nullptr ,
395
- debug_buffer_size);
398
+ debug_buffer_size,
399
+ program_verification);
396
400
}
397
401
398
402
inline std::unique_ptr<Module> load_module_from_file (
399
403
const std::string& path,
400
404
bool enable_etdump,
401
- size_t debug_buffer_size) {
405
+ size_t debug_buffer_size,
406
+ Program::Verification program_verification) {
402
407
EXECUTORCH_SCOPE_PROF (" load_module_from_file" );
403
408
404
409
Result<MmapDataLoader> res = MmapDataLoader::from (
@@ -413,7 +418,8 @@ inline std::unique_ptr<Module> load_module_from_file(
413
418
return std::make_unique<Module>(
414
419
std::move (loader),
415
420
enable_etdump ? std::make_unique<torch::executor::ETDumpGen>() : nullptr ,
416
- debug_buffer_size);
421
+ debug_buffer_size,
422
+ program_verification);
417
423
}
418
424
419
425
static constexpr size_t kDEFAULT_BUNDLED_INPUT_POOL_SIZE = 16 * 1024U ;
@@ -576,30 +582,41 @@ struct PyModule final {
576
582
explicit PyModule (
577
583
const py::bytes& buffer,
578
584
bool enable_etdump,
579
- size_t debug_buffer_size = 0 )
585
+ size_t debug_buffer_size = 0 ,
586
+ Program::Verification program_verification =
587
+ Program::Verification::InternalConsistency)
580
588
: module_(load_module_from_buffer(
581
589
buffer.cast<std::string_view>().data(),
582
590
py::len(buffer),
583
591
enable_etdump,
584
- debug_buffer_size)) {}
592
+ debug_buffer_size,
593
+ program_verification)) {}
585
594
586
595
explicit PyModule (
587
596
const void * ptr,
588
597
size_t ptr_len,
589
598
bool enable_etdump,
590
- size_t debug_buffer_size = 0 )
599
+ size_t debug_buffer_size = 0 ,
600
+ Program::Verification program_verification =
601
+ Program::Verification::InternalConsistency)
591
602
: module_(load_module_from_buffer(
592
603
ptr,
593
604
ptr_len,
594
605
enable_etdump,
595
- debug_buffer_size)) {}
606
+ debug_buffer_size,
607
+ program_verification)) {}
596
608
597
609
explicit PyModule (
598
610
const std::string& path,
599
611
bool enable_etdump,
600
- size_t debug_buffer_size = 0 )
601
- : module_(load_module_from_file(path, enable_etdump, debug_buffer_size)) {
602
- }
612
+ size_t debug_buffer_size = 0 ,
613
+ Program::Verification program_verification =
614
+ Program::Verification::InternalConsistency)
615
+ : module_(load_module_from_file(
616
+ path,
617
+ enable_etdump,
618
+ debug_buffer_size,
619
+ program_verification)) {}
603
620
604
621
PyModule (const PyModule&) = delete ;
605
622
PyModule& operator =(const PyModule&) = delete ;
@@ -610,14 +627,20 @@ struct PyModule final {
610
627
static std::unique_ptr<PyModule> load_from_buffer (
611
628
const py::bytes& buffer,
612
629
bool enable_etdump,
613
- size_t debug_buffer_size = 0 ) {
614
- return std::make_unique<PyModule>(buffer, enable_etdump, debug_buffer_size);
630
+ size_t debug_buffer_size = 0 ,
631
+ Program::Verification program_verification =
632
+ Program::Verification::InternalConsistency) {
633
+ return std::make_unique<PyModule>(
634
+ buffer, enable_etdump, debug_buffer_size, program_verification);
615
635
}
616
636
static std::unique_ptr<PyModule> load_from_file (
617
637
const std::string& path,
618
638
bool enable_etdump,
619
- size_t debug_buffer_size = 0 ) {
620
- return std::make_unique<PyModule>(path, enable_etdump, debug_buffer_size);
639
+ size_t debug_buffer_size = 0 ,
640
+ Program::Verification program_verification =
641
+ Program::Verification::InternalConsistency) {
642
+ return std::make_unique<PyModule>(
643
+ path, enable_etdump, debug_buffer_size, program_verification);
621
644
}
622
645
623
646
static std::unique_ptr<PyModule> load_from_bundled_program (
@@ -934,19 +957,29 @@ PYBIND11_MODULE(EXECUTORCH_PYTHON_MODULE_NAME, m) {
934
957
// Redirects cout and cerr for function calls this guards to the python env.
935
958
auto call_guard = py::
936
959
call_guard<py::scoped_ostream_redirect, py::scoped_estream_redirect>();
960
+
961
+ // Bind the verification enum to python.
962
+ py::enum_<Program::Verification>(m, " Verification" )
963
+ .value (" Minimal" , Program::Verification::Minimal)
964
+ .value (" InternalConsistency" , Program::Verification::InternalConsistency);
965
+
937
966
m.def (
938
967
" _load_for_executorch" ,
939
968
PyModule::load_from_file,
940
969
py::arg (" path" ),
941
970
py::arg (" enable_etdump" ) = false ,
942
971
py::arg (" debug_buffer_size" ) = 0 ,
972
+ py::arg (" program_verification" ) =
973
+ Program::Verification::InternalConsistency,
943
974
call_guard);
944
975
m.def (
945
976
" _load_for_executorch_from_buffer" ,
946
977
&PyModule::load_from_buffer,
947
978
py::arg (" buffer" ),
948
979
py::arg (" enable_etdump" ) = false ,
949
980
py::arg (" debug_buffer_size" ) = 0 ,
981
+ py::arg (" program_verification" ) =
982
+ Program::Verification::InternalConsistency,
950
983
call_guard);
951
984
m.def (
952
985
" _load_for_executorch_from_bundled_program" ,
0 commit comments