Hi, <br><br>I am now trying to trace from the Flash IO benchmark to the PVFS2. To do so, I modified pnetcdf, mpich2, and pvfs2.<br>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.<br>
I've found that the function call sequence is that:<br><br>1. ncmpi_put_vara_all (parallel-netcdf-1.1.1/src/lib/mpinetcdf.c)<br>2. MPI_File_write_all (mpich2-1.0.8/src/mpi/romio/mpi-io/write_all.c)<br>
3. MPIOI_File_write_all (mpich2-1.0.8/src/mpi/romio/mpi-io/write_all.c)<br>4. ADIO_WriteStridedColl <br>5. ADIOI_GEN_WriteStridedColl (mpich2-1.0.8/src/mpi/romio/adio/common/ad_write_coll.c)<br>6. ADIO_WriteContig (???)<br>
7. ADIOI_PVFS2_WriteContig<br>Finally. PVFS_sys_write()<br><br>Here is a part of ADIOI_GEN_WriteStridedColl in 5.<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>
=============================================================<br> ===> This is called <br> 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); <br> <br>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.<br>
<br>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.<br>
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.<br><br>Is there anybody who help me or has the same situation?<br>
<br>Thank you.<br><br>- Shawn<br> <br><br>