[mpich-discuss] MPI-IO bug
Rob Latham
robl at mcs.anl.gov
Thu May 1 10:53:59 CDT 2014
On 04/09/2014 02:52 PM, Wei-keng Liao wrote:
>
> The patch below can fix this problem. Hope it does not break other tests.
I'm uncertain about this patch...
> Index: adio/common/ad_read_coll.c
it should have been in the write path, correct
?
> @@ -368,13 +368,16 @@
> #endif
> if (file_ptr_type == ADIO_INDIVIDUAL) {
> /* Wei-keng reworked type processing to be a bit more
> efficient */
> + for (i=0; i<flat_file->count; i++) /* skip blocklens[] == 0 */
> + if (flat_file->blocklens[i] > 0) break;
> +
the flat_file->blocklens[] array might contain a UB and LB marker. The
marker will be stored in the flattened representation with a zero-length
element at a particular offset. So if you resize a type, your flattened
representation would be like this:
(offset: 50, length: 0),
(offset: 100, length: 1024),
(offset: 200, length: 0)
furthermore, ADIOI_Optimize_flatten will coalesce multiple zero-length
elements into one, but will leave the first and last elements alone.
> offset = fd->fp_ind - disp;
> - n_filetypes = (offset - flat_file->indices[0]) /
> filetype_extent;
> + n_filetypes = (offset - flat_file->indices[i]) /
> filetype_extent;
doesn't this mess up tiling of the file view?
==rob
> offset -= (ADIO_Offset)n_filetypes * filetype_extent;
> /* now offset is local to this extent */
>
> /* find the block where offset is located, skip
> blocklens[i]==0 */
> - for (i=0; i<flat_file->count; i++) {
> + for (; i<flat_file->count; i++) {
> ADIO_Offset dist;
> if (flat_file->blocklens[i] == 0) continue;
> dist = flat_file->indices[i] + flat_file->blocklens[i]
> - offset;
>
> Wei-keng
>
>
>
> _______________________________________________
> discuss mailing list discuss at mpich.org
> To manage subscription options or unsubscribe:
> https://lists.mpich.org/mailman/listinfo/discuss
--
Rob Latham
Mathematics and Computer Science Division
Argonne National Lab, IL USA
More information about the discuss
mailing list