FreeFOAM The Cross-Platform CFD Toolkit
Hosted by SourceForge:
Get FreeFOAM at SourceForge.net.
            Fast, secure and Free Open Source software downloads

commSchedule Class Reference

Determines the order in which a set of processors should communicate with one another. More...

#include <OpenFOAM/commSchedule.H>


Detailed Description

Determines the order in which a set of processors should communicate with one another.

The communication order should

  • have maximum overlap
  • allow blocking communication without deadlock

Does a very simple scheduling which assumes same time for all operations.

After construction:

Does not care whether 'talking' is first send, second receive or maybe full swap. This is all responsability of caller. See ProcessorTopology class for use in scheduling processor boundary swaps.

Source files

Definition at line 66 of file commSchedule.H.

Collaboration diagram for commSchedule:

List of all members.

Public Member Functions

 ClassName ("commSchedule")
 commSchedule (const label nProcs, const List< labelPair > &comms)
 Construct from wanted communication. Wanted communication is between.
const labelList &  schedule () const
 order in which comms is scheduled
const labelListList &  procSchedule () const
 Per processor the order in which communication has been scheduled.

Constructor & Destructor Documentation

commSchedule ( const label   nProcs,
const List< labelPair > &   comms  
)

Construct from wanted communication. Wanted communication is between.

two processors. Can be a one-way communication or two-way communication, that is up to the caller. This class just determines an order for it such that any processor is only talking to one other at a time. After construction:

  • schedule is the order in which comms is done.
  • procSchedule[procI] is for procI the order in which comms is done.

Definition at line 64 of file commSchedule.C.

References Foam::abort(), List< T >::append(), Foam::endl(), Foam::FatalError, FatalErrorIn, forAll, Pstream::master(), Foam::Pout, Foam::setw(), List< T >::size(), and OStringStream::str().


Member Function Documentation

ClassName ( "commSchedule"    )
const labelList& schedule (  ) const [inline]

order in which comms is scheduled

Definition at line 102 of file commSchedule.H.

const labelListList& procSchedule (  ) const [inline]

Per processor the order in which communication has been scheduled.

Definition at line 108 of file commSchedule.H.


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