Skip to content
  • Mark OLESEN's avatar
    ENH: new broadcast version of Pstreams (#2371) · 8478595a
    Mark OLESEN authored and Andrew Heather's avatar Andrew Heather committed
    - The idea of broadcast streams is to replace multiple master to
      subProcs communications with a single MPI_Bcast.
    
        if (Pstream::master())
        {
            OPBstream toAll(Pstream::masterNo());
            toAll << data;
        }
        else
        {
            IPBstream fromMaster(Pstream::masterNo());
            fromMaster >> data;
        }
    
        // vs.
        if (Pstream::master())
        {
            for (const int proci : Pstream::subProcs())
            {
                OPstream os(Pstream::commsTypes::scheduled, proci);
                os << data;
            }
        }
        else
        {
            IPstream is(Pstream::commsTypes::scheduled, Pstream::masterNo());
            is >> data;
        }
    
      Can simply use UPstream::broadcast() directly for contiguous data
      with known lengths.
    
    Based on ideas from T.Aoyagi(RIST), A.Azami(RIST)
    8478595a