- 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)
4 lines
77 B
Plaintext
4 lines
77 B
Plaintext
Test-parallel-broadcast.C
|
|
|
|
EXE = $(FOAM_USER_APPBIN)/Test-parallel-broadcast
|