22
22
)
23
23
24
24
from executorch .exir ._serialize .utils import (
25
- _aligned_size ,
26
- _HEADER_BYTEORDER ,
27
- _pad_to ,
28
- _padding_required ,
25
+ aligned_size ,
26
+ HEADER_BYTEORDER ,
27
+ pad_to ,
28
+ padding_required ,
29
29
)
30
30
31
31
from executorch .exir .schema import (
@@ -90,11 +90,11 @@ def _insert_flatbuffer_header(
90
90
return flatbuffer_data
91
91
92
92
# We will need to adjust the root object offset after inserting the header.
93
- root_offset = int .from_bytes (flatbuffer_data [0 :4 ], byteorder = _HEADER_BYTEORDER )
93
+ root_offset = int .from_bytes (flatbuffer_data [0 :4 ], byteorder = HEADER_BYTEORDER )
94
94
95
95
return (
96
96
# New root offset.
97
- (root_offset + len (header_data )).to_bytes (4 , byteorder = _HEADER_BYTEORDER )
97
+ (root_offset + len (header_data )).to_bytes (4 , byteorder = HEADER_BYTEORDER )
98
98
# Existing magic bytes.
99
99
+ flatbuffer_data [4 :8 ]
100
100
# Provided header + padding.
@@ -159,11 +159,9 @@ def from_bytes(data: bytes) -> "_ExtendedHeader":
159
159
160
160
return _ExtendedHeader (
161
161
magic = data [0 :4 ],
162
- length = int .from_bytes (data [4 :8 ], byteorder = _HEADER_BYTEORDER ),
163
- program_size = int .from_bytes (data [8 :16 ], byteorder = _HEADER_BYTEORDER ),
164
- segment_base_offset = int .from_bytes (
165
- data [16 :24 ], byteorder = _HEADER_BYTEORDER
166
- ),
162
+ length = int .from_bytes (data [4 :8 ], byteorder = HEADER_BYTEORDER ),
163
+ program_size = int .from_bytes (data [8 :16 ], byteorder = HEADER_BYTEORDER ),
164
+ segment_base_offset = int .from_bytes (data [16 :24 ], byteorder = HEADER_BYTEORDER ),
167
165
)
168
166
169
167
def is_valid (self ) -> bool :
@@ -189,12 +187,12 @@ def to_bytes(self) -> bytes:
189
187
# fields to this header in the future. Always use the proper size
190
188
# (i.e., ignore self.length) since there's no reason to create an
191
189
# invalid header.
192
- + self .EXPECTED_LENGTH .to_bytes (4 , byteorder = _HEADER_BYTEORDER )
190
+ + self .EXPECTED_LENGTH .to_bytes (4 , byteorder = HEADER_BYTEORDER )
193
191
# uint64_t: Size of the flatbuffer data, including this header.
194
- + self .program_size .to_bytes (8 , byteorder = _HEADER_BYTEORDER )
192
+ + self .program_size .to_bytes (8 , byteorder = HEADER_BYTEORDER )
195
193
# uint64_t: Offset to the start of the first segment, or zero if
196
194
# there are no segments.
197
- + self .segment_base_offset .to_bytes (8 , byteorder = _HEADER_BYTEORDER )
195
+ + self .segment_base_offset .to_bytes (8 , byteorder = HEADER_BYTEORDER )
198
196
)
199
197
return data
200
198
@@ -299,7 +297,7 @@ def _extract_constant_segment(
299
297
constant_segment_data .append (buffer .storage )
300
298
buffer_length = len (buffer .storage )
301
299
pad_length = (
302
- _padding_required (buffer_length , tensor_alignment )
300
+ padding_required (buffer_length , tensor_alignment )
303
301
if tensor_alignment is not None
304
302
else 0
305
303
)
@@ -401,11 +399,11 @@ def serialize_pte_binary(
401
399
)
402
400
program .segments .append (
403
401
DataSegment (
404
- offset = _aligned_size (prev_end , segment_alignment ), size = len (data )
402
+ offset = aligned_size (prev_end , segment_alignment ), size = len (data )
405
403
)
406
404
)
407
405
# Add to aggregate segments cord with padding.
408
- padding_length = _padding_required (len (segments_data ), segment_alignment )
406
+ padding_length = padding_required (len (segments_data ), segment_alignment )
409
407
if padding_length > 0 :
410
408
segments_data .append (b"\x00 " * padding_length )
411
409
segments_data .append (data )
@@ -423,15 +421,15 @@ def serialize_pte_binary(
423
421
424
422
# Size of the header to insert. Its size is padded to the largest
425
423
# force_align value present in the schema.
426
- padded_header_length : int = _aligned_size (
424
+ padded_header_length : int = aligned_size (
427
425
input_size = _ExtendedHeader .EXPECTED_LENGTH ,
428
426
alignment = result .max_alignment ,
429
427
)
430
428
# Size of the program with the header inserted.
431
429
program_size : int = padded_header_length + len (result .data )
432
430
# Offset to the first segment, or zero if there are no segments.
433
431
segment_base_offset : int = (
434
- _aligned_size (input_size = program_size , alignment = segment_alignment )
432
+ aligned_size (input_size = program_size , alignment = segment_alignment )
435
433
if len (segments_data ) > 0
436
434
else 0
437
435
)
@@ -440,7 +438,7 @@ def serialize_pte_binary(
440
438
header_data : bytes = _ExtendedHeader (
441
439
program_size = program_size , segment_base_offset = segment_base_offset
442
440
).to_bytes ()
443
- header_data = _pad_to (header_data , padded_header_length )
441
+ header_data = pad_to (header_data , padded_header_length )
444
442
445
443
# Insert the header into the flatbuffer data.
446
444
program_data : bytes = _insert_flatbuffer_header (
@@ -465,7 +463,7 @@ def serialize_pte_binary(
465
463
# - segments data (optional); aligned to segment_alignment.
466
464
pte_data = Cord (program_data )
467
465
if len (segments_data ) > 0 :
468
- padding_length = _padding_required (len (pte_data ), segment_alignment )
466
+ padding_length = padding_required (len (pte_data ), segment_alignment )
469
467
pte_data .append (b"\x00 " * padding_length )
470
468
# The first segment after program data should start at the segment base offset.
471
469
assert (
0 commit comments