@@ -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,
@@ -388,19 +390,22 @@ inline std::unique_ptr<Module> load_module_from_buffer(
388
390
const void * ptr,
389
391
size_t ptr_len,
390
392
bool enable_etdump,
391
- size_t debug_buffer_size) {
393
+ size_t debug_buffer_size,
394
+ Program::Verification program_verification) {
392
395
EXECUTORCH_SCOPE_PROF (" load_module_from_buffer" );
393
396
auto loader = std::make_unique<BufferDataLoader>(ptr, ptr_len);
394
397
return std::make_unique<Module>(
395
398
std::move (loader),
396
399
enable_etdump ? std::make_unique<torch::executor::ETDumpGen>() : nullptr ,
397
- debug_buffer_size);
400
+ debug_buffer_size,
401
+ program_verification);
398
402
}
399
403
400
404
inline std::unique_ptr<Module> load_module_from_file (
401
405
const std::string& path,
402
406
bool enable_etdump,
403
- size_t debug_buffer_size) {
407
+ size_t debug_buffer_size,
408
+ Program::Verification program_verification) {
404
409
EXECUTORCH_SCOPE_PROF (" load_module_from_file" );
405
410
406
411
Result<MmapDataLoader> res = MmapDataLoader::from (
@@ -415,7 +420,8 @@ inline std::unique_ptr<Module> load_module_from_file(
415
420
return std::make_unique<Module>(
416
421
std::move (loader),
417
422
enable_etdump ? std::make_unique<torch::executor::ETDumpGen>() : nullptr ,
418
- debug_buffer_size);
423
+ debug_buffer_size,
424
+ program_verification);
419
425
}
420
426
421
427
static constexpr size_t kDEFAULT_BUNDLED_INPUT_POOL_SIZE = 16 * 1024U ;
@@ -578,30 +584,41 @@ struct PyModule final {
578
584
explicit PyModule (
579
585
const py::bytes& buffer,
580
586
bool enable_etdump,
581
- size_t debug_buffer_size = 0 )
587
+ size_t debug_buffer_size = 0 ,
588
+ Program::Verification program_verification =
589
+ Program::Verification::InternalConsistency)
582
590
: module_(load_module_from_buffer(
583
591
buffer.cast<std::string_view>().data(),
584
592
py::len(buffer),
585
593
enable_etdump,
586
- debug_buffer_size)) {}
594
+ debug_buffer_size,
595
+ program_verification)) {}
587
596
588
597
explicit PyModule (
589
598
const void * ptr,
590
599
size_t ptr_len,
591
600
bool enable_etdump,
592
- size_t debug_buffer_size = 0 )
601
+ size_t debug_buffer_size = 0 ,
602
+ Program::Verification program_verification =
603
+ Program::Verification::InternalConsistency)
593
604
: module_(load_module_from_buffer(
594
605
ptr,
595
606
ptr_len,
596
607
enable_etdump,
597
- debug_buffer_size)) {}
608
+ debug_buffer_size,
609
+ program_verification)) {}
598
610
599
611
explicit PyModule (
600
612
const std::string& path,
601
613
bool enable_etdump,
602
- size_t debug_buffer_size = 0 )
603
- : module_(load_module_from_file(path, enable_etdump, debug_buffer_size)) {
604
- }
614
+ size_t debug_buffer_size = 0 ,
615
+ Program::Verification program_verification =
616
+ Program::Verification::InternalConsistency)
617
+ : module_(load_module_from_file(
618
+ path,
619
+ enable_etdump,
620
+ debug_buffer_size,
621
+ program_verification)) {}
605
622
606
623
PyModule (const PyModule&) = delete ;
607
624
PyModule& operator =(const PyModule&) = delete ;
@@ -612,14 +629,20 @@ struct PyModule final {
612
629
static std::unique_ptr<PyModule> load_from_buffer (
613
630
const py::bytes& buffer,
614
631
bool enable_etdump,
615
- size_t debug_buffer_size = 0 ) {
616
- return std::make_unique<PyModule>(buffer, enable_etdump, debug_buffer_size);
632
+ size_t debug_buffer_size = 0 ,
633
+ Program::Verification program_verification =
634
+ Program::Verification::InternalConsistency) {
635
+ return std::make_unique<PyModule>(
636
+ buffer, enable_etdump, debug_buffer_size, program_verification);
617
637
}
618
638
static std::unique_ptr<PyModule> load_from_file (
619
639
const std::string& path,
620
640
bool enable_etdump,
621
- size_t debug_buffer_size = 0 ) {
622
- return std::make_unique<PyModule>(path, enable_etdump, debug_buffer_size);
641
+ size_t debug_buffer_size = 0 ,
642
+ Program::Verification program_verification =
643
+ Program::Verification::InternalConsistency) {
644
+ return std::make_unique<PyModule>(
645
+ path, enable_etdump, debug_buffer_size, program_verification);
623
646
}
624
647
625
648
static std::unique_ptr<PyModule> load_from_bundled_program (
@@ -944,19 +967,29 @@ PYBIND11_MODULE(EXECUTORCH_PYTHON_MODULE_NAME, m) {
944
967
// Redirects cout and cerr for function calls this guards to the python env.
945
968
auto call_guard = py::
946
969
call_guard<py::scoped_ostream_redirect, py::scoped_estream_redirect>();
970
+
971
+ // Bind the verification enum to python.
972
+ py::enum_<Program::Verification>(m, " Verification" )
973
+ .value (" Minimal" , Program::Verification::Minimal)
974
+ .value (" InternalConsistency" , Program::Verification::InternalConsistency);
975
+
947
976
m.def (
948
977
" _load_for_executorch" ,
949
978
PyModule::load_from_file,
950
979
py::arg (" path" ),
951
980
py::arg (" enable_etdump" ) = false ,
952
981
py::arg (" debug_buffer_size" ) = 0 ,
982
+ py::arg (" program_verification" ) =
983
+ Program::Verification::InternalConsistency,
953
984
call_guard);
954
985
m.def (
955
986
" _load_for_executorch_from_buffer" ,
956
987
&PyModule::load_from_buffer,
957
988
py::arg (" buffer" ),
958
989
py::arg (" enable_etdump" ) = false ,
959
990
py::arg (" debug_buffer_size" ) = 0 ,
991
+ py::arg (" program_verification" ) =
992
+ Program::Verification::InternalConsistency,
960
993
call_guard);
961
994
m.def (
962
995
" _load_for_executorch_from_bundled_program" ,
0 commit comments