Public Member Functions | Private Member Functions | Private Attributes
commSchedule Class Reference

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

Collaboration diagram for commSchedule:
Collaboration graph
[legend]

Public Member Functions

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

Private Member Functions

label outstandingComms (const labelList &, DynamicList< label > &) const
 Count the number of outstanding communications for a single. More...
 

Private Attributes

labelList schedule_
 Order in which input communication has been scheduled. More...
 
labelListList procSchedule_
 Per processor the order in which communication has been scheduled. More...
 

Detailed Description

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

The communication order should

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 65 of file commSchedule.H.

Constructor & Destructor Documentation

◆ commSchedule()

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 67 of file commSchedule.C.

References Foam::abort(), List::append(), Foam::endl(), Foam::FatalError, FatalErrorInFunction, forAll, SortableList::indices(), Foam::labelMin, Foam::Pout, Foam::setw(), List::size(), and OStringStream::str().

Here is the call graph for this function:

Member Function Documentation

◆ outstandingComms()

Foam::label outstandingComms ( const labelList commToSchedule,
DynamicList< label > &  procComms 
) const
private

Count the number of outstanding communications for a single.

processor

Definition at line 45 of file commSchedule.C.

References forAll.

◆ ClassName()

ClassName ( "commSchedule"  )

◆ schedule()

const labelList& schedule ( ) const
inline

Order in which comms is scheduled.

Definition at line 101 of file commSchedule.H.

References commSchedule::schedule_.

◆ procSchedule()

const labelListList& procSchedule ( ) const
inline

Per processor the order in which communication has been scheduled.

Definition at line 107 of file commSchedule.H.

References commSchedule::procSchedule_.

Field Documentation

◆ schedule_

labelList schedule_
private

Order in which input communication has been scheduled.

Definition at line 70 of file commSchedule.H.

Referenced by commSchedule::schedule().

◆ procSchedule_

labelListList procSchedule_
private

Per processor the order in which communication has been scheduled.

Definition at line 73 of file commSchedule.H.

Referenced by commSchedule::procSchedule().


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