Dear All,


I would like to understand some details about MPI I/O hints on bg-q and out of memory error while doing collective i/o.


Quick Summary :


1. On bg-q I see cb_buffer_size as 16MB when we query on file handle using MPI_File_get_info.

An application that we are looking at has code section like: 


….

MPI_File_set_view( fh, position_to_write, MPI_FLOAT, mappingType, _native_, MPI_INFO_NULL );

max_mb_on_any_rank_using_Kernel_GetMemorySize () => 275 MB

MPI_File_write_all( fh, mappingBuffer, .................... MPI_FLOAT, &status);

max_mb_on_any_rank_using_Kernel_GetMemorySize () => 373 MB

……


Why we see that spike in memory usage?  (see Detail section for size information)


I have seen “Kernel_GetMemorySize(KERNEL_MEMSIZE_HEAP….)” not returning accurate memory footprint but I am not sure if that is the case here.

Darshan screenshot attached shows the access sizes while running on 4 rack.


2. Is romio_cb_alltoall ignored on bg-q? Even if I disable it, I see “automatic” in the output.


(I am looking at srcV1R2M4/comm/lib/dev/mpich2/src/mpi/romio/adio/ad_bg/ad_bg_hints.c and see the code section is commented.)


More Details :


We are debugging an application on MIRA which runs on 1,2,4 racks but fails at 8 racks while dumping a custom checkpoint. These are strong scaling runs and the size of checkpoint remains same (~172GB). 32 ranks per mode. Max memory usage before start of checkpoint (i.e. before single write_all call)

for 8 rack is ~ 300 MB. The checkpoint size from each rank is between Kbs to few MBs (as shown by darshan). Once application call checkpoint, we see below error :


  Out of memory in file /bgsys/source/srcV1R2M2.15270/comm/lib/dev/mpich2/src/mpi/romio/adio/ad_bg/ad_bg_wrcoll.c,     line 500


And hence I am confused about behaviour mentioned in question 1.

If someone has any insight, it will be great help!


Regards,

Pramod


p.s. 


Default values of all hints 


cb_buffer_size, value = 16777216

romio_cb_read, value = enable

romio_cb_write, value = enable

cb_nodes, value = 8320             (change based on partition size)

romio_no_indep_rw, value = false

romio_cb_pfr, value = disable

romio_cb_fr_types, value = aar

romio_cb_fr_alignment, value = 1

romio_cb_ds_threshold, value = 0

romio_cb_alltoall, value = automatic

ind_rd_buffer_size, value = 4194304

romio_ds_read, value = automatic

romio_ds_write, value = disable