NESSi  v1.0.2
The NonEquilibrium Systems Simulation Library
cntr::distributed_array< T > Class Template Reference

Auxiliary data structure for handling set of data blocks and includes usual MPI processes on them. More...

#include <cntr_distributed_array_decl.hpp>

+ Inheritance diagram for cntr::distributed_array< T >:

Public Member Functions

T * block (int j)
  Returns the pointer to block j. More...
 
int blocksize (void) const
 
void clear (void)
  Clear all data More...
 
T * data (void) const
 
 distributed_array ()
 
 distributed_array (const distributed_array &g)
 
 distributed_array (int n, int maxlen, bool mpi)
  Initializes the distributed_array class. More...
 
int firstblock_rank (void)
  Return first blocks on rank. More...
 
int maxlen (void) const
 
void mpi_bcast_all (void)
  MPI Allgather equivalent for the distributed array More...
 
void mpi_bcast_all (void)
 
void mpi_bcast_block (int j)
  MPI broadcast of j-th block More...
 
void mpi_bcast_block (int j)
 
void mpi_gather (void)
 
void mpi_gather (int dest)
  MPI gather for the distributed array More...
 
void mpi_send_block (int j, int dest)
  Sends the j-th block to the MPI rank dest More...
 
int n (void) const
 
int ntasks (void) const
 
int numblock_rank (void)
  Return number of blocks on rank. More...
 
distributed_arrayoperator= (const distributed_array &g)
 
bool rank_owns (int k) const
 
void reset_blocksize (int blocksize)
  Reset the block size for each block. More...
 
int tid (void) const
 
std::vector< int > tid_map (void) const
 
 ~distributed_array ()
 

Detailed Description

template<typename T>
class cntr::distributed_array< T >

Auxiliary data structure for handling set of data blocks and includes usual MPI processes on them.

Purpose


Auxiliary data structure for handling of data blocks (total number is n_) , which are stored in * contiguous form in member data_ and includes usual MPI routines. The class identity is marked by * tid_ \( \in (0,\ldots,ntasks_-1) \) and the value of the tid_ is just the MPI rank or 0 if MPI is not defined. Each data block j is owned by precisely one process, which is given by \( tid * _map(j) = tid_\). The member maxlen marks the maximum size reserved for the block. NOTE: even if the block is not owned by the process, the space for the data is allocated; the ownership plays a role when the data are manipulated

Definition at line 30 of file cntr_distributed_array_decl.hpp.


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