@@ -116,33 +116,33 @@ mod mmap {
116
116
117
117
// Read and discard chunk length.
118
118
read. read_u64 :: < LittleEndian > ( )
119
- . map_err ( |e| Error :: io_error ( "Cannot read embedding matrix chunk length" , e) ) ?;
119
+ . map_err ( |e| Error :: read_error ( "Cannot read embedding matrix chunk length" , e) ) ?;
120
120
121
121
let rows = read
122
122
. read_u64 :: < LittleEndian > ( )
123
123
. map_err ( |e| {
124
- Error :: io_error ( "Cannot read number of rows of the embedding matrix" , e)
124
+ Error :: read_error ( "Cannot read number of rows of the embedding matrix" , e)
125
125
} ) ?
126
126
. try_into ( )
127
127
. map_err ( |_| Error :: Overflow ) ?;
128
128
let cols = read. read_u32 :: < LittleEndian > ( ) . map_err ( |e| {
129
- Error :: io_error ( "Cannot read number of columns of the embedding matrix" , e)
129
+ Error :: read_error ( "Cannot read number of columns of the embedding matrix" , e)
130
130
} ) ? as usize ;
131
131
let shape = Ix2 ( rows, cols) ;
132
132
133
133
// The components of the embedding matrix should be of type f32.
134
134
f32:: ensure_data_type ( read) ?;
135
135
136
136
let n_padding = padding :: < f32 > ( read. seek ( SeekFrom :: Current ( 0 ) ) . map_err ( |e| {
137
- Error :: io_error ( "Cannot get file position for computing padding" , e)
137
+ Error :: read_error ( "Cannot get file position for computing padding" , e)
138
138
} ) ?) ;
139
139
read. seek ( SeekFrom :: Current ( n_padding as i64 ) )
140
- . map_err ( |e| Error :: io_error ( "Cannot skip padding" , e) ) ?;
140
+ . map_err ( |e| Error :: read_error ( "Cannot skip padding" , e) ) ?;
141
141
142
142
// Set up memory mapping.
143
143
let matrix_len = shape. size ( ) * size_of :: < f32 > ( ) ;
144
144
let offset = read. seek ( SeekFrom :: Current ( 0 ) ) . map_err ( |e| {
145
- Error :: io_error (
145
+ Error :: read_error (
146
146
"Cannot get file position for memory mapping embedding matrix" ,
147
147
e,
148
148
)
@@ -153,12 +153,12 @@ mod mmap {
153
153
. offset ( offset)
154
154
. len ( matrix_len)
155
155
. map ( & * read. get_ref ( ) )
156
- . map_err ( |e| Error :: io_error ( "Cannot memory map embedding matrix" , e) ) ?
156
+ . map_err ( |e| Error :: read_error ( "Cannot memory map embedding matrix" , e) ) ?
157
157
} ;
158
158
159
159
// Position the reader after the matrix.
160
160
read. seek ( SeekFrom :: Current ( matrix_len as i64 ) )
161
- . map_err ( |e| Error :: io_error ( "Cannot skip embedding matrix" , e) ) ?;
161
+ . map_err ( |e| Error :: read_error ( "Cannot skip embedding matrix" , e) ) ?;
162
162
163
163
Ok ( MmapArray { map, shape } )
164
164
}
@@ -199,11 +199,10 @@ impl NdArray {
199
199
{
200
200
write
201
201
. write_u32 :: < LittleEndian > ( ChunkIdentifier :: NdArray as u32 )
202
- . map_err ( |e| Error :: io_error ( "Cannot write embedding matrix chunk identifier" , e) ) ?;
203
- let n_padding =
204
- padding :: < f32 > ( write. seek ( SeekFrom :: Current ( 0 ) ) . map_err ( |e| {
205
- Error :: io_error ( "Cannot get file position for computing padding" , e)
206
- } ) ?) ;
202
+ . map_err ( |e| Error :: write_error ( "Cannot write embedding matrix chunk identifier" , e) ) ?;
203
+ let n_padding = padding :: < f32 > ( write. seek ( SeekFrom :: Current ( 0 ) ) . map_err ( |e| {
204
+ Error :: write_error ( "Cannot get file position for computing padding" , e)
205
+ } ) ?) ;
207
206
// Chunk size: rows (u64), columns (u32), type id (u32),
208
207
// padding ([0,4) bytes), matrix.
209
208
let chunk_len = size_of :: < u64 > ( )
@@ -213,20 +212,20 @@ impl NdArray {
213
212
+ ( data. nrows ( ) * data. ncols ( ) * size_of :: < f32 > ( ) ) ;
214
213
write
215
214
. write_u64 :: < LittleEndian > ( chunk_len as u64 )
216
- . map_err ( |e| Error :: io_error ( "Cannot write embedding matrix chunk length" , e) ) ?;
215
+ . map_err ( |e| Error :: write_error ( "Cannot write embedding matrix chunk length" , e) ) ?;
217
216
write
218
217
. write_u64 :: < LittleEndian > ( data. nrows ( ) as u64 )
219
218
. map_err ( |e| {
220
- Error :: io_error ( "Cannot write number of rows of the embedding matrix" , e)
219
+ Error :: write_error ( "Cannot write number of rows of the embedding matrix" , e)
221
220
} ) ?;
222
221
write
223
222
. write_u32 :: < LittleEndian > ( data. ncols ( ) as u32 )
224
223
. map_err ( |e| {
225
- Error :: io_error ( "Cannot write number of columns of the embedding matrix" , e)
224
+ Error :: write_error ( "Cannot write number of columns of the embedding matrix" , e)
226
225
} ) ?;
227
226
write
228
227
. write_u32 :: < LittleEndian > ( f32:: type_id ( ) )
229
- . map_err ( |e| Error :: io_error ( "Cannot write embedding matrix type identifier" , e) ) ?;
228
+ . map_err ( |e| Error :: write_error ( "Cannot write embedding matrix type identifier" , e) ) ?;
230
229
231
230
// Write padding, such that the embedding matrix starts on at
232
231
// a multiple of the size of f32 (4 bytes). This is necessary
@@ -242,13 +241,13 @@ impl NdArray {
242
241
let padding = vec ! [ 0 ; n_padding as usize ] ;
243
242
write
244
243
. write_all ( & padding)
245
- . map_err ( |e| Error :: io_error ( "Cannot write padding" , e) ) ?;
244
+ . map_err ( |e| Error :: write_error ( "Cannot write padding" , e) ) ?;
246
245
247
246
for row in data. outer_iter ( ) {
248
247
for col in row. iter ( ) {
249
- write
250
- . write_f32 :: < LittleEndian > ( * col )
251
- . map_err ( |e| Error :: io_error ( "Cannot write embedding matrix component" , e ) ) ?;
248
+ write. write_f32 :: < LittleEndian > ( * col ) . map_err ( |e| {
249
+ Error :: write_error ( "Cannot write embedding matrix component" , e )
250
+ } ) ?;
252
251
}
253
252
}
254
253
@@ -311,30 +310,32 @@ impl ReadChunk for NdArray {
311
310
312
311
// Read and discard chunk length.
313
312
read. read_u64 :: < LittleEndian > ( )
314
- . map_err ( |e| Error :: io_error ( "Cannot read embedding matrix chunk length" , e) ) ?;
313
+ . map_err ( |e| Error :: read_error ( "Cannot read embedding matrix chunk length" , e) ) ?;
315
314
316
315
let rows = read
317
316
. read_u64 :: < LittleEndian > ( )
318
- . map_err ( |e| Error :: io_error ( "Cannot read number of rows of the embedding matrix" , e) ) ?
317
+ . map_err ( |e| {
318
+ Error :: read_error ( "Cannot read number of rows of the embedding matrix" , e)
319
+ } ) ?
319
320
. try_into ( )
320
321
. map_err ( |_| Error :: Overflow ) ?;
321
322
let cols = read. read_u32 :: < LittleEndian > ( ) . map_err ( |e| {
322
- Error :: io_error ( "Cannot read number of columns of the embedding matrix" , e)
323
+ Error :: read_error ( "Cannot read number of columns of the embedding matrix" , e)
323
324
} ) ? as usize ;
324
325
325
326
// The components of the embedding matrix should be of type f32.
326
327
f32:: ensure_data_type ( read) ?;
327
328
328
329
let n_padding =
329
330
padding :: < f32 > ( read. seek ( SeekFrom :: Current ( 0 ) ) . map_err ( |e| {
330
- Error :: io_error ( "Cannot get file position for computing padding" , e)
331
+ Error :: read_error ( "Cannot get file position for computing padding" , e)
331
332
} ) ?) ;
332
333
read. seek ( SeekFrom :: Current ( n_padding as i64 ) )
333
- . map_err ( |e| Error :: io_error ( "Cannot skip padding" , e) ) ?;
334
+ . map_err ( |e| Error :: read_error ( "Cannot skip padding" , e) ) ?;
334
335
335
336
let mut data = Array2 :: zeros ( ( rows, cols) ) ;
336
337
read. read_f32_into :: < LittleEndian > ( data. as_slice_mut ( ) . unwrap ( ) )
337
- . map_err ( |e| Error :: io_error ( "Cannot read embedding matrix" , e) ) ?;
338
+ . map_err ( |e| Error :: read_error ( "Cannot read embedding matrix" , e) ) ?;
338
339
339
340
Ok ( NdArray { inner : data } )
340
341
}
0 commit comments