fpmas 1.6
Public Member Functions | List of all members
fpmas::io::DistributedCsvOutput< DataFieldOperation > Class Template Reference

#include <csv_output.h>

Inheritance diagram for fpmas::io::DistributedCsvOutput< DataFieldOperation >:
Inheritance graph
[legend]
Collaboration diagram for fpmas::io::DistributedCsvOutput< DataFieldOperation >:
Collaboration graph
[legend]

Public Member Functions

 DistributedCsvOutput (api::communication::MpiCommunicator &comm, int root, api::io::OutputStream &output_stream, DistributedCsvField< DataFieldOperation >... csv_fields)
 
 DistributedCsvOutput (api::communication::MpiCommunicator &comm, api::io::OutputStream &output_stream, DistributedCsvField< DataFieldOperation >... csv_fields)
 
void dump () override
 
- Public Member Functions inherited from fpmas::io::OutputBase
 OutputBase (api::io::OutputStream &output_stream)
 
const api::scheduler::Jobjob () override
 
virtual void dump ()=0
 
virtual const scheduler::Jobjob ()=0
 

Additional Inherited Members

- Protected Member Functions inherited from fpmas::io::CsvOutputBase< DataFieldOperation::Type... >
void dump_csv (const std::vector< std::string > &data)
 
std::vector< std::string > headers ()
 
std::vector< std::string > dump_fields ()
 
 CsvOutputBase (api::io::OutputStream &output_stream, std::pair< std::string, std::function< DataField()> >... csv_fields)
 
- Protected Attributes inherited from fpmas::io::OutputBase
api::io::OutputStreamoutput_stream
 

Detailed Description

template<typename... DataFieldOperation>
class fpmas::io::DistributedCsvOutput< DataFieldOperation >

A distributed api::output::Output implementation that dumps CSV data to an output stream.

Data is automatically gathered on all processes, and can be dumped on one processes or on all the processes.

Parameters
DataFieldtypes of data in each row

Constructor & Destructor Documentation

◆ DistributedCsvOutput() [1/2]

template<typename... DataFieldOperation>
fpmas::io::DistributedCsvOutput< DataFieldOperation >::DistributedCsvOutput ( api::communication::MpiCommunicator comm,
int  root,
api::io::OutputStream output_stream,
DistributedCsvField< DataFieldOperation >...  csv_fields 
)
inline

DistributedCsvOutput constructor.

When this version is used, specifying a root parameter, data is only dumped on output_stream on the process corresponding to root (according to the specified comm). On all other processes, output_stream is ignored.

Parameters
commMPI communicator
rootrank of the process on which data is dumped
output_streamoutput stream on which data are dumped (ignored on processes other than root)
csv_fieldstuples of type {"field_name", watcher, params}, where watcher is a callable object used to fetch data corresponding to "field_name". params is optional. See examples for concrete use cases.

◆ DistributedCsvOutput() [2/2]

template<typename... DataFieldOperation>
fpmas::io::DistributedCsvOutput< DataFieldOperation >::DistributedCsvOutput ( api::communication::MpiCommunicator comm,
api::io::OutputStream output_stream,
DistributedCsvField< DataFieldOperation >...  csv_fields 
)
inline

DistributedCsvOutput constructor.

When this version is used, withou specifying a root parameter, data is dumped on output_stream on all the processes.

Parameters
commMPI communicator
output_streamoutput stream on which data are dumped on each process
csv_fieldstuples of type {"field_name", watcher, params}, where watcher is a callable object used to fetch data corresponding to "field_name". params is optional. See examples for concrete use cases.

Member Function Documentation

◆ dump()

template<typename... DataFieldOperation>
void fpmas::io::DistributedCsvOutput< DataFieldOperation >::dump ( )
inlineoverridevirtual

The dump process is implictly performed in several steps:

  1. Fetch local data on each process
  2. Gather data
  3. Reduces gathered data
  4. Serialize and dump CSV formatted data to output_stream

Depending on the constructor used, data is gathered and dumped only at root or on all the processes.

Implements fpmas::api::io::Output.


The documentation for this class was generated from the following file: