OpenLB 1.7
|
Communication-free negotation of unique tags for inter-cuboid communication. More...
#include <superCommunicationTagCoordinator.h>
Classes | |
class | ChannelId |
Public Member Functions | |
SuperCommunicationTagCoordinator (LoadBalancer< T > &loadBalancer) | |
template<unsigned D> | |
void | coordinate (std::vector< std::unique_ptr< BlockCommunicationNeighborhood< T, D > > > &neighborhood) |
Generate unique tags for given block neighborhood system. | |
int | get (int iC, int jC, int iGroup=0) |
Returns unique tag for communication between cuboids iC and jC. | |
Communication-free negotation of unique tags for inter-cuboid communication.
The cuboid IDs themselves can not be used safely as the MPI standard only supports tag sizes up to 32768.
This class provides unique tags for the pair-wise communication of cuboids between their owning ranks, supporting pair-wise neighborhood sizes up to 32768 (depending on number of used groups) and "arbitrarily" large global cuboid counts.
Definition at line 47 of file superCommunicationTagCoordinator.h.
olb::SuperCommunicationTagCoordinator< T >::SuperCommunicationTagCoordinator | ( | LoadBalancer< T > & | loadBalancer | ) |
Definition at line 62 of file superCommunicationTagCoordinator.hh.
void olb::SuperCommunicationTagCoordinator< T >::coordinate | ( | std::vector< std::unique_ptr< BlockCommunicationNeighborhood< T, D > > > & | neighborhood | ) |
Generate unique tags for given block neighborhood system.
Definition at line 67 of file superCommunicationTagCoordinator.hh.
int olb::SuperCommunicationTagCoordinator< T >::get | ( | int | iC, |
int | jC, | ||
int | iGroup = 0 ) |
Returns unique tag for communication between cuboids iC and jC.
iGroup can be used as a namespace substitute. It simply offsets the tags group-times by the pair-wise neighborhood size, correspondingly reducing said neighborhood's maximum supported size.
Definition at line 87 of file superCommunicationTagCoordinator.hh.