CarpetIOASCII currently transfers all patches from all processes to the io process which then discard everything that does not need to be output for 1d or 2d output. Technical details:
The commstate loop in line 660 of ioascii.cc uses data_ext to call copy_from() on tmpdatas which were also created using data_ext. data_ext is set to light_boxes[...].exterior while the actual output extent is given by ext as returned by GetOutputBBox.
If I run the attached parfile with "mpirun -n 4 cactus_sim ioascii.par", then I get output from only components 0 and 2 but not 1 and 3 in the x.x.asc file. However, adding some poisoning and debug output to ioascii.cc I seem to receive all data from all components (patch attached as well) even those of which no data makes it into the output file.
Keyword: CarpetIOASCII
Comments (1)
-
reporter - Log in to comment
The same issue in IODF5 was addressed in git hash ebba415e "CarpetIOHDF5: Optimize lower-dimensional output -- only transfer necessary data to the I/O process" of carpet and most likely (given that the two thorns started out as being somewhat similar) could be applied here as well.