@fengyanshi -- @malej and I have been working on the parallel I/O for FUNWAVE (Matt mentioned it to you during the last FUNWAVE-TVD teleconference). This one pertains only to field variables (eta, u, v, etc. etc.) and not the station output. This was implemented so that each process/rank can write to an offset (different memory location) based on its rank. All is written in binary. We have tested it and it performs well. We tested it on a local laptop (2,4,8 cores), as well as Topaz for several hundred (144, 288 for St. George Harbor) and even 1300 ranks for Carrara Harbor.
The major gains are for larger problems (thousand+ by thousand+ points), see example below. We have observed at least a 30% speed up for larger problems, and for smaller problems we were slightly faster than the original ASCII method of 1 process/rank writing to a file (~5-10%). Another benefit is that the file output size is immediately 50% smaller when compared to the the original ASCII output.
Once you test and merge this branch into your master, you will not have to add an option in the input.txt file for specifying FIELD_IO_TYPE as either ASCII or BINARY (all lower or uppercase works and default is ASCII),
FIELD_IO_TYPE = ASCII
FIELD_IO_TYPE = BINARY
Also note that this pull request may show you that many files have been changed, but all we did is ran dos2unix command on all Fortran files (*.F), as someone is editing them in a non-standard editor, which is adding hidden characters (e.g., ^M) to the source files.
@fengyanshi -- @malej and I have been working on the parallel I/O for FUNWAVE (Matt mentioned it to you during the last
FUNWAVE-TVD
teleconference). This one pertains only to field variables (eta, u, v, etc. etc.) and not the station output. This was implemented so that each process/rank can write to an offset (different memory location) based on its rank. All is written in binary. We have tested it and it performs well. We tested it on a local laptop (2,4,8 cores), as well as Topaz for several hundred (144, 288 for St. George Harbor) and even 1300 ranks for Carrara Harbor.The major gains are for larger problems (thousand+ by thousand+ points), see example below. We have observed at least a
30%
speed up for larger problems, and for smaller problems we were slightly faster than the original ASCII method of 1 process/rank writing to a file (~5-10%). Another benefit is that the file output size is immediately50%
smaller when compared to the the original ASCII output.Once you test and merge this branch into your master, you will not have to add an option in the
input.txt
file for specifyingFIELD_IO_TYPE
as eitherASCII
orBINARY
(all lower or uppercase works and default is ASCII),FIELD_IO_TYPE = ASCII
FIELD_IO_TYPE = BINARY
Also note that this pull request may show you that many files have been changed, but all we did is ran
dos2unix
command on all Fortran files (*.F), as someone is editing them in a non-standard editor, which is adding hidden characters (e.g., ^M) to the source files.