Hi All,
A month later, after putzing around with other stuff, I’m back to trying to port the dump routine to some RDMA I/O methods. Right now, i just want to start with something simple, get it working, and then incrementally add more.
For starters, I am looking at the header_item and dump_noimage routines in dump_atom.cpp (I am still using the 27jan13 build, so if things have changed drastically with respect to dump_atom, please let me know).
Here is my current understanding (so please correct me if I’m wrong):
header_item outputs some scalars. This part I have ported and working with no trouble.
With write_noimage, “n” seems to be the number of atoms, and mybuf seems to contain n * size_one elements, where size_one is found in dump.h and represents the number of doubles associated with each atom (so, 10 atoms, 5 elements each, mybuf should be sized 5 * 10 * sizeof(double)). I have it so that write_noimage is indeed called by each rank (which is indeed what I want).
Previously, it was mentioned that atoms->nlocal is what each rank will output, and from looking at atom.h, natoms is the total number across all ranks. Basically, when write_noimage is called, each rank will output the global_size (natoms), the size of it’s chunk, and the offset of this chunk in the global array. (which I can calculate using MPI_Scan and that sort of thing).
How do I make this information accessible in dump_atom.cpp (natoms)? I think then that atoms.h:nlocal ends up being passed in to write_noimage as n. Is the ndump variable of header_item “natoms”? I’m quite confused
Sorry for reviving this a month later!
Josh