MADNESS
version 0.9
|
Write container to parallel archive with optional fence. More...
#include <worlddc.h>
Static Public Member Functions | |
static void | store (const ParallelOutputArchive &ar, const WorldContainer< keyT, valueT > &t) |
Write container to parallel archive with optional fence.
Each node (process) is served by a designated IO node. The IO node has a binary local file archive to which is first written a cookie and the number of servers. The IO node then loops thru all of its clients and in turn tells each to write its data over an MPI stream, which is copied directly to the output file. The stream contents are then cookie, no. of clients, foreach client (usual sequential archive).
If ar.dofence() is true (default) fence is invoked before and after the IO. The fence is optional but it is of course necessary to be sure that all updates have completed before doing IO, and that all IO has completed before subsequent modifications. Also, there is always at least some synchronization between a client and its IO server.
|
inlinestatic |
References madness::archive::BaseParallelArchive< Archive >::dofence(), madness::WorldGopInterface::fence(), madness::archive::MPIOutputArchive::flush(), madness::archive::BaseParallelArchive< Archive >::get_world(), madness::World::gop, madness::archive::BaseParallelArchive< Archive >::io_node(), madness::archive::BaseParallelArchive< Archive >::is_io_node(), madness::archive::BaseParallelArchive< Archive >::local_archive(), madness::World::mpi, madness::archive::BaseParallelArchive< Archive >::my_io_node(), madness::archive::BaseParallelArchive< Archive >::num_io_clients(), madness::archive::ArchivePrePostImpl< Archive, T >::postamble_store(), madness::archive::ArchivePrePostImpl< Archive, T >::preamble_store(), madness::World::rank(), madness::WorldMpiInterface::Recv(), madness::WorldMpiInterface::Send(), madness::World::size(), and SafeMPI::Intracomm::unique_tag().