MCPcopy Create free account
hub / github.com/pytorch/executorch / ExecutorchProgram

Class ExecutorchProgram

exir/program/_program.py:570–711  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

568
569@compatibility(is_backward_compatible=False)
570class ExecutorchProgram:
571 def __init__(
572 self,
573 exir_exported_program: ExirExportedProgram,
574 emit_stacktrace: bool,
575 extract_delegate_segments: bool,
576 segment_alignment: int,
577 constant_tensor_alignment: Optional[int] = None,
578 delegate_alignment: Optional[int] = None,
579 ) -> None:
580 if not exir_exported_program.after_to_edge_passes:
581 raise RuntimeError(
582 "Need to call prog.to_edge prior to constructing ExecutorchProgram."
583 )
584 self.exported_program = exir_exported_program.exported_program
585 self._pte_data: Optional[Cord] = None
586 self._tensor_data: Optional[Dict[str, Cord]] = None
587 self._buffer: Optional[bytes] = None
588 self._emitter_output: Optional[EmitterOutput] = None
589 self._emit_stacktrace: bool = emit_stacktrace
590 self._extract_delegate_segments: bool = extract_delegate_segments
591 self._segment_alignment: int = segment_alignment
592 self._constant_tensor_alignment: Optional[int] = constant_tensor_alignment
593 self._delegate_alignment: Optional[int] = delegate_alignment
594 from executorch.extension.flat_tensor.serialize.serialize import (
595 FlatTensorConfig,
596 FlatTensorSerializer,
597 )
598
599 self._data_serializer: DataSerializer = FlatTensorSerializer(
600 FlatTensorConfig(self._segment_alignment)
601 )
602
603 def _get_emitter_output(self) -> EmitterOutput:
604 if self._emitter_output is None:
605 self._emitter_output = emit_program(
606 self.exported_program, self._emit_stacktrace
607 )
608 return self._emitter_output
609
610 def _get_pte_data(self) -> Cord:
611 if self._pte_data is None:
612 self._pte_data, self._tensor_data = serialize_for_executorch(
613 self._get_emitter_output(),
614 ExecutorchBackendConfig(
615 extract_delegate_segments=self._extract_delegate_segments,
616 segment_alignment=self._segment_alignment,
617 constant_tensor_alignment=self._constant_tensor_alignment,
618 delegate_alignment=self._delegate_alignment,
619 ),
620 self._data_serializer,
621 )
622 assert self._pte_data is not None
623 return self._pte_data
624
625 @property
626 def buffer(self) -> bytes:
627 """Returns the serialized ExecuTorch binary as a byte string.

Callers 1

to_executorchMethod · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected