[mpich2-dev] ROMIO: Persistent File Realms (Patch proposed and questions to use them)

Pascal Deveze Pascal.Deveze at bull.net
Mon Sep 27 03:34:40 CDT 2010


Hi all,

Thanks for all of you that provided me with documents about Persistent 
File Realms.
I really appreciated to learn more about this new optimized "2 phase IO 
method".

I tried to make it work with mpich2-1.3rc1 using an hint file containing :
romio_cb_pfr enable
striping_factor 1
striping_unit 1048576
romio_cb_fr_alignment 1048576

I exported the ROMIO_HINTS variable pointing to this file.

I tried then to run coll_test on 2 processes (on one node only):
mpirun -np 2 ./coll_test -fname /tmp/data

The processes were blocking in MPI_Alltoall.

So, I tried to disable the call to MPI_Alltoall by adding the following 
line to the hint file:
romio_cb_alltoall disable

The processes were still blocking in MPI_Alltoall.
In the file romio/adio/common/ad_hints.c, there seems to be a mistake
in setting fd->hints->cb_alltoall.
You will find hereafter the proposed patch.

After that correction, I ran coll_perf again, and I got blocked in 
MPI_Waitany.

I also tried coll_perf with 1, 4 and 12 processes (on one node) and got 
a problem in MPI_Type_free:

  Fatal error in PMPI_Type_free: Invalid datatype, error stack:
  PMPI_Type_free(156): MPI_Type_free(datatype_p=0x1791170) failed
  PMPI_Type_free(108): Cannot free permanent data type
  APPLICATION TERMINATED WITH THE EXIT STRING: Hangup (signal 1)

For 1, 4 and 12 processes, when I enable the use of MPI_Alltoall, I get 
the following error :
  coll_test: ad_coll_build_req_new.c:1018: ADIOI_Build_client_reqs: 
Assertion `cur_off_proc != -1' failed.

I am a bit disappointed not to be able to run that new very interesting 
"2 phase IO method".
So, if somebody could help me, I will really appreciate it.

Pascal

======== Proposed patch =========
--- ad_hints.c.OLD      2010-05-25 20:59:13.000000000 +0200
+++ ad_hints.c  2010-09-27 09:56:05.000000000 +0200
@@ -198,16 +198,16 @@
        if (flag) {
            if (!strcmp(value, "enable") || !strcmp(value, "ENABLE")) {
                ADIOI_Info_set(info, "romio_cb_alltoall", value);
-               fd->hints->cb_read = ADIOI_HINT_ENABLE;
+               fd->hints->cb_alltoall = ADIOI_HINT_ENABLE;
            }
            else if (!strcmp(value, "disable") || !strcmp(value, 
"DISABLE")) {
                ADIOI_Info_set(info, "romio_cb_alltoall", value);
-               fd->hints->cb_read = ADIOI_HINT_DISABLE;
+               fd->hints->cb_alltoall = ADIOI_HINT_DISABLE;
            }
            else if (!strcmp(value, "automatic") || !strcmp(value, 
"AUTOMATIC"))
            {
                ADIOI_Info_set(info, "romio_cb_alltoall", value);
-               fd->hints->cb_read = ADIOI_HINT_AUTO;
+               fd->hints->cb_alltoall = ADIOI_HINT_AUTO;
            }
 
            tmp_val = fd->hints->cb_alltoall;











More information about the mpich2-dev mailing list