<br><br><div class="gmail_quote">On Wed, Mar 10, 2010 at 3:19 PM, Rob Latham <span dir="ltr"><<a href="mailto:robl@mcs.anl.gov">robl@mcs.anl.gov</a>></span> wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div class="im">On Wed, Mar 10, 2010 at 02:47:09PM -0500, Shawn Kim wrote:<br>
><br>
> 1. MPI_File_write_all (mpich2-1.0.8/src/mpi/romio/mpi-io/write_all.c)<br>
> 2. MPIOI_File_write_all (mpich2-1.0.8/src/mpi/romio/mpi-io/write_all.c)<br>
> 3. ADIO_WriteStridedColl<br>
> 4. ADIOI_GEN_WriteStridedColl<br>
> (mpich2-1.0.8/src/mpi/romio/adio/common/ad_write_coll.c)<br>
> -------------------------------------------------------------------------------------------------------------------------------------<br>
> >From here, I can't trace it<br>
> 5. ADIO_WriteContig (ad_pvfs2_write.c)<br>
> 6. ADIOI_PVFS2_WriteContig<br>
> 7. PVFS_sys_write<br>
> ====================================<br>
> 8. PVFS_sys_io (<a href="http://sys-io.sm" target="_blank">sys-io.sm</a>)<br>
><br>
> Is there anybody who knows why these call sequences don't work? If anybody<br>
> ran Flash IO before, is the result correct?<br>
> Or, am I missing something?<br>
<br>
</div>Hi: this looks correct to me. what are you confused about?<br>
<br>
if the I/O accesses overlap, or the "romio_cb_write" hint is set to<br>
"enable", "ADIOI_GEN_WriteStridedColl will carry out the two-phase<br>
collective I/O optimization.<br>
<br>
If you are jumping to ADIO_WriteContig, then you might have hit this<br>
test fairly early in ADIOI_GEN_WriteStridedColl:<br>
<br>
if (fd->hints->cb_write == ADIOI_HINT_DISABLE ||<br>
(!interleave_count && (fd->hints->cb_write == ADIOI_HINT_AUTO))) {<br>
<br>
if that evaluates true, then you fall into "process this request<br>
independently".<br></blockquote><div><br>Yes, Flash IO fell into this independence accesses before jumping to ADIO_WriteContig. This means Flash IO does not carry out two-phase collective I/O optimization, doesn't it? <br>
I can't still find ADIO_WriteContig() from ADIOI_GEN_WriteStridedColl.<br><br> if (buftype_is_contig && filetype_is_contig) {<br> if (file_ptr_type == ADIO_EXPLICIT_OFFSET) {<br>
off = fd->disp + (fd->etype_size) * offset; <br> ADIO_WriteContig(fd, buf, count, datatype, ADIO_EXPLICIT_OFFSET, off, status, error_code); <br> }<br> else<br>
-----------> This is called by Flash IO<br><div id=":5z" class="ii gt"> ----------> ADIO_WriteContig(fd, buf, count, datatype, ADIO_INDIVIDUAL, 0, status, error_code);<br>
<br> }<br> else <br> ADIO_WriteStrided(fd, buf, count, datatype, file_ptr_type, offset, status, error_code); </div><br><br></div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<br>
Otherwise, ADIOI_Exch_and_write and ADIOI_W_Exchange_data contain the<br>
heart of the two-phase optimization. Phase one is exchanging data with<br>
processors to re-order the I/O, and Phase two is the actual<br>
(contiguous) write, or ADIO_WriteContig.<br>
<br>
==rob<br>
<div class="im"><br>
> Thank you<br>
><br>
> - Best regards,<br>
> Shawn<br>
<br>
</div><div class="im">> _______________________________________________<br>
> mpich-discuss mailing list<br>
> <a href="mailto:mpich-discuss@mcs.anl.gov">mpich-discuss@mcs.anl.gov</a><br>
> <a href="https://lists.mcs.anl.gov/mailman/listinfo/mpich-discuss" target="_blank">https://lists.mcs.anl.gov/mailman/listinfo/mpich-discuss</a><br>
<br>
<br>
--<br>
</div><font color="#888888">Rob Latham<br>
Mathematics and Computer Science Division<br>
Argonne National Lab, IL USA<br>
</font><div><div></div><div class="h5">_______________________________________________<br>
mpich-discuss mailing list<br>
<a href="mailto:mpich-discuss@mcs.anl.gov">mpich-discuss@mcs.anl.gov</a><br>
<a href="https://lists.mcs.anl.gov/mailman/listinfo/mpich-discuss" target="_blank">https://lists.mcs.anl.gov/mailman/listinfo/mpich-discuss</a><br>
</div></div></blockquote></div><br>