Open MPI logo

Open MPI User's Mailing List Archives

  |   Home   |   Support   |   FAQ   |   all Open MPI User's mailing list

Subject: [OMPI users] Asynchronous parallel I/O concerning MPI_File_write_all_begin() and MPI_File_write_all_end()
From: Stefan Mauerberger (stefan.mauerberger_at_[hidden])
Date: 2013-02-03 06:33:10


Dear all!

using the split collective procedures MPI_File_write_all_begin() and
MPI_File_write_all_end() causes some confusion to me.
It was my intention to implement asynchronous file i/o using those
procedures. The idea is to calculate some 'useful' stuff while writing
tons of data to disk.
Well, buffering the local arrays and replacing MPI_File_write_all() by
MPI_File_write_all_begin() and MPI_File_write_all_end() wasn't that
hard. However my expectations were not met:
 * No additional thread is spread out while writing
 * No benefit in runtime can be observed; The program simply waits as it
did before.
It just comes with the difference spending a lot of time calling
MPI_File_write_all_end() instead of MPI_File_write_all(). It appears to
me that MPI_File_write_begin() does not trigger the actual write
command.

What I have is a iterative workflow where data shall be written to disk
every 20th increment. So, what I want to achieve is writing to disk in
the background while further 20 iterations are processed. I am coding a
mixture of Fortran 90, F03, F08 and building with gfortran 4.7.1 and
OpenMPI 1.6 .
The environment in question is a quad-socket system equipped with
E7-4860 running Debian Squeez. Unfortunately, I don't know about its i/o
capabilities but it is nothing fancy.

Do you have any idea what I have done wrong?

Thanks in advance! Cheers,
Stefan