@@ -102,29 +102,34 @@ def serialize_for_executorch(
102
102
)
103
103
104
104
for tag in all_external_tags :
105
+ buffers = []
105
106
fqn_to_tensor_entry : Dict [str , TensorEntry ] = {}
106
107
# pyre-ignore[16]: Undefined attribute: `Optional` has no attribute `get`.
107
108
fqn_to_index = emitter_output .external_constant_map .get (tag , {})
108
109
# Create a TensorEntry for each external tensor.
109
110
for fqn , index in fqn_to_index .items ():
110
111
assert fqn in fqn_to_tensor_layout
111
112
fqn_to_tensor_entry [fqn ] = TensorEntry (
112
- buffer_index = index ,
113
+ buffer_index = len ( buffers ) ,
113
114
layout = fqn_to_tensor_layout [fqn ],
114
115
)
116
+ buffers .append (emitter_output .external_constant_buffer [index ])
115
117
116
118
# Extract external data.
117
119
key_to_data : Dict [str , DataEntry ] = {}
118
120
# pyre-ignore[16]: Undefined attribute: `Optional` has no attribute `get`.
119
121
key_to_buffer_index = named_data .external_data .get (tag , {})
120
122
for key , index in key_to_buffer_index .items ():
121
123
# pyre-ignore[16]: Undefined attribute: `Optional` has no attribute `buffers`.
122
- key_to_data [key ] = DataEntry (index , named_data .buffers [index ].alignment )
124
+ key_to_data [key ] = DataEntry (
125
+ len (buffers ), named_data .buffers [index ].alignment
126
+ )
127
+ buffers .append (named_data .buffers [index ].buffer )
123
128
124
129
# Serialize into PTD file.
125
130
ptd_files [tag ] = data_serializer .serialize (
126
131
DataPayload (
127
- buffers = emitter_output . external_constant_buffer ,
132
+ buffers = buffers ,
128
133
fqn_to_tensor = fqn_to_tensor_entry ,
129
134
key_to_data = key_to_data ,
130
135
)
0 commit comments