Short reads mit sion_dup
Reported by Bert Wesarg:
ich hab mal wieder ein Problem. Wenn ich mit einem dup ein short read habe, knallt es.
Wie üblich hängt der code an und hier ist die Anleitung:
file schreiben, mit je 2 keys und chunksize=4M und keder key schreibt nur 20 bytes
$ mpirun -np 2 ./test-sion-key-writer-mpi test-key-mpi.2.2.1.dat 2 1 0: sion_generic_paropen( aid=0, fname="test-key-mpi.2.2.1.dat", mode="bw,keyval=inline", chunksize=4194304, fsblksize=-1, global, grank=0, gsize=2, filenumber=0, numfiles=1, lrank=0, lsize=2, fp=NULL, newfname=NULL ) 0: sion_generic_paropen( ..., grank=0, gsize=2, ... ) = ( sid=1 ) 0: writing for key 0, chunk 0 0: sion_fwrite_key( 0x8a9b20, key=0, 1, size=20, sid=1 ) 0: sion_fwrite_key( 0x8a9b20, key=0, 1, size=20, sid=1 ) = 20 0: writing for key 2, chunk 0 0: sion_fwrite_key( 0x8a9b20, key=2, 1, size=20, sid=1 ) 0: sion_fwrite_key( 0x8a9b20, key=2, 1, size=20, sid=1 ) = 20 1: sion_generic_paropen( aid=0, fname="test-key-mpi.2.2.1.dat", mode="bw,keyval=inline", chunksize=4194304, fsblksize=-1, global, grank=1, gsize=2, filenumber=0, numfiles=1, lrank=1, lsize=2, fp=NULL, newfname=NULL ) 1: sion_generic_paropen( ..., grank=1, gsize=2, ... ) = ( sid=1 ) 1: writing for key 1, chunk 0 1: sion_fwrite_key( 0x2539d60, key=1, 1, size=20, sid=1 ) 1: sion_fwrite_key( 0x2539d60, key=1, 1, size=20, sid=1 ) = 20 1: writing for key 3, chunk 0 1: sion_fwrite_key( 0x2539d60, key=3, 1, size=20, sid=1 ) 1: sion_fwrite_key( 0x2539d60, key=3, 1, size=20, sid=1 ) = 20
Alle keys von rank 0 lesen, ohne dup
$ ./test-sion-key-reader test-key-mpi.2.2.1.dat 2 1 0 0 2 0: sion_get_endianness() = 0 0: sion_generic_paropen_mapped( aid=0, fname="test-key-mpi.2.2.1.dat", mode="br,keyval=unknown", numfiles=&, global, grank=0, gsize=1, nlocaltasks=1, globalranks=[], chunksizes=&[], mapping_filenrs=&[], mapping_lranks=&[], fsblksize=&, fp=NULL ) 0: sion_generic_paropen_mapped( ..., grank=0, gsize=1, ..., globalranks[0]=0, ... ) 0: sion_generic_paropen_mapped( ..., grank=0, gsize=1, ... ) = ( sid=1, numfiles=1, fsblksize=-1 ) 0: sion_generic_paropen_mapped( ..., grank=0, gsize=1, ... ) = ( chunksizes[0]=4194304, mapping_filenrs[0]=0, mapping_lranks[0]=0 ) 0: sion_get_keyval_mode( sid=1 ) = 51 (=SION_KEYVAL_INLINE) 0: sion_key_full_scan( sid=1 ) 0: sion_key_full_scan( sid=1 ) = 1 0: reading from rank 0, key 2, chunk 0 0: sion_seek( sid=1, rank=0, SION_CURRENT_CHUNK, SION_CURRENT_POS ) 0: sion_seek( sid=1, rank=0, SION_CURRENT_CHUNK, SION_CURRENT_POS ) = 1 0: sion_seek_key( sid=1, key=2, SION_CURRENT_CHUNK, SION_CURRENT_POS ) 0: sion_seek_key( sid=1, key=2, SION_CURRENT_CHUNK, SION_CURRENT_POS ) = 1 0: sion_fread_key( 0x7ffab68ae010, key=2, 1, nitems=4194304, sid=1 ) 0: sion_fread_key( 0x7ffab68ae010, key=2, 1, nitems=4194304, sid=1 ) = 20 0: reading from rank 0, key 0, chunk 0 0: sion_seek( sid=1, rank=0, SION_CURRENT_CHUNK, SION_CURRENT_POS ) 0: sion_seek( sid=1, rank=0, SION_CURRENT_CHUNK, SION_CURRENT_POS ) = 1 0: sion_seek_key( sid=1, key=0, SION_CURRENT_CHUNK, SION_CURRENT_POS ) 0: sion_seek_key( sid=1, key=0, SION_CURRENT_CHUNK, SION_CURRENT_POS ) = 1 0: sion_fread_key( 0x7ffab68ae010, key=0, 1, nitems=4194304, sid=1 ) 0: sion_fread_key( 0x7ffab68ae010, key=0, 1, nitems=4194304, sid=1 ) = 20
Alle keys von rank 0 lesen, mit dup
$ ./test-sion-key-reader test-key-mpi.2.2.1.dat 2 1 0 1 2 0: sion_get_endianness() = 0 0: sion_generic_paropen_mapped( aid=0, fname="test-key-mpi.2.2.1.dat", mode="br,keyval=unknown", numfiles=&, global, grank=0, gsize=1, nlocaltasks=1, globalranks=[], chunksizes=&[], mapping_filenrs=&[], mapping_lranks=&[], fsblksize=&, fp=NULL ) 0: sion_generic_paropen_mapped( ..., grank=0, gsize=1, ..., globalranks[0]=0, ... ) 0: sion_generic_paropen_mapped( ..., grank=0, gsize=1, ... ) = ( sid=1, numfiles=1, fsblksize=-1 ) 0: sion_generic_paropen_mapped( ..., grank=0, gsize=1, ... ) = ( chunksizes[0]=4194304, mapping_filenrs[0]=0, mapping_lranks[0]=0 ) 0: sion_get_keyval_mode( sid=1 ) = 51 (=SION_KEYVAL_INLINE) 0: sion_key_full_scan( sid=1 ) 0: sion_key_full_scan( sid=1 ) = 1 0: sion_dup( sid=1, SION_DUP_RANK_KEY, rank=0, key=0 ) 0: sion_dup( sid=1, SION_DUP_RANK_KEY, rank=0, key=0 ) = ( dup=3 ) 0: sion_dup( sid=1, SION_DUP_RANK_KEY, rank=0, key=2 ) 0: sion_dup( sid=1, SION_DUP_RANK_KEY, rank=0, key=2 ) = ( dup=4 ) 0: reading from rank 0, key 2, chunk 0 0: sion_fread_key( 0x7f07babbd010, key=2, 1, nitems=4194304, sid=4 ) SION_ERROR_RETURN on rank 0, rc=-1: could not read data (0 bytes) to file (end of file readched, frc=0 sid=4) ... SION_ERROR_RETURN on rank 0, rc=0: could not read data (20 bytes) from file ... 0: sion_fread_key( 0x7f07babbd010, key=2, 1, nitems=4194304, sid=4 ) = 0 0: error reading for rank 0, key 2