Tracing MPI_File_write_all from pnetcdf-1.1.1 --> mpich2 --> pvfs2

Shawn Kim shawn.subscribe at gmail.com
Wed Feb 24 14:05:35 CST 2010


Hi,

I am now trying to trace from the Flash IO benchmark to the PVFS2. To do so,
I modified pnetcdf, mpich2, and pvfs2.
I believe that Parallel netCDF runs as a library between Flash IO benchmark
and PVFS2. So after processing pnetCDF requests from Flash IO, it passes the
parallel IO requests down to MPI-IO library, and finally PVFS2 servers
receive the MPI-IO requests from PVFS2 clients and perform IO.
I've found that the function call sequence is that:

1. ncmpi_put_vara_all (parallel-netcdf-1.1.1/src/lib/mpinetcdf.c)
2. MPI_File_write_all (mpich2-1.0.8/src/mpi/romio/mpi-io/write_all.c)
3. MPIOI_File_write_all (mpich2-1.0.8/src/mpi/romio/mpi-io/write_all.c)
4. ADIO_WriteStridedColl
5. ADIOI_GEN_WriteStridedColl
(mpich2-1.0.8/src/mpi/romio/adio/common/ad_write_coll.c)
6. ADIO_WriteContig (???)
7. ADIOI_PVFS2_WriteContig
Finally. PVFS_sys_write()

Here is a part of ADIOI_GEN_WriteStridedColl in 5.

        if (buftype_is_contig && filetype_is_contig) {
            if (file_ptr_type == ADIO_EXPLICIT_OFFSET) {
                off = fd->disp + (fd->etype_size) * offset;
                ADIO_WriteContig(fd, buf, count, datatype,
ADIO_EXPLICIT_OFFSET, off, status, error_code);
            }
            else

=============================================================
                 ===> This is called
                 ADIO_WriteContig(fd, buf, count, datatype, ADIO_INDIVIDUAL,
0, status, error_code);

        }
        else
            ADIO_WriteStrided(fd, buf, count, datatype, file_ptr_type,
offset, status, error_code);

In ADIOI_GEN_WriteStridedColl, the second ADIO_WriteContig is called as I
marked above when MPI_FIle_write_all() is issued. Finally, PVFS_sys_write in
ADIOI_PVFS2_WriteContig is issued and then PVFS2 client is able to know this
call is what I want to trace.

Unfortunately, I can't see that MPI_File_write_all in ncmpi_put_vara_all,
parallel-netcdf-1.1.1 actually calls ADIO_WriteContig. Because call id can't
be passed from MPI library to PVFS2, I can't trace this call.
To make sure that this is the case, I ran the simple program which uses the
same MPI_File_write_all and can see what I want, but I can't see it when I
ran Flash IO benchmark.

Is there anybody who help me or has the same situation?

Thank you.

- Shawn
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/parallel-netcdf/attachments/20100224/9083a3b3/attachment.htm>


More information about the parallel-netcdf mailing list