GALib-Parallel
Header-only C++ library for parallel evolutionary algorithms
Loading...
Searching...
No Matches
Public Member Functions | List of all members
galib::internal::MpiCommunicator< GeneType > Class Template Reference

#include <MpiCommunicator.h>

Inheritance diagram for galib::internal::MpiCommunicator< GeneType >:
[legend]

Public Member Functions

 MpiCommunicator (Serializer< GeneType > &serializer, const std::size_t max_payload_size, const MPI_Comm comm=MPI_COMM_WORLD)
 
 ~MpiCommunicator () final
 
void startReceiving (MigrationBuffer< GeneType > &target_buffer) override
 Begins asynchronous background receiving of migrants.
 
void update () override
 Processes any pending network events (e.g. polls for incoming messages).
 
void stopReceiving () override
 Stops background communication activities.
 
void send (const std::vector< Individual< GeneType > > &deme, const std::size_t destination_rank) override
 Sends a deme to a specific destination island.
 
void broadcast (const std::vector< Individual< GeneType > > &deme, const std::vector< std::size_t > &destination_ranks) override
 Sends a deme to multiple destination islands.
 
Individual< GeneType > allReduceBest (Individual< GeneType > individual) const override
 Global reduction to find the best individual across all islands.
 
std::size_t getRank () const override
 Gets the network rank of the local node.
 
std::size_t getSize () const override
 Gets the total number of islands in the network.
 
- Public Member Functions inherited from galib::internal::Communicator< GeneType >
virtual ~Communicator ()=default
 

Detailed Description

template<typename GeneType>
class galib::internal::MpiCommunicator< GeneType >

Definition at line 14 of file MpiCommunicator.h.

Constructor & Destructor Documentation

◆ MpiCommunicator()

template<typename GeneType >
galib::internal::MpiCommunicator< GeneType >::MpiCommunicator ( Serializer< GeneType > &  serializer,
const std::size_t  max_payload_size,
const MPI_Comm  comm = MPI_COMM_WORLD 
)
inlineexplicit

Definition at line 32 of file MpiCommunicator.h.

◆ ~MpiCommunicator()

template<typename GeneType >
galib::internal::MpiCommunicator< GeneType >::~MpiCommunicator ( )
inlinefinal

Member Function Documentation

◆ allReduceBest()

template<typename GeneType >
Individual< GeneType > galib::internal::MpiCommunicator< GeneType >::allReduceBest ( Individual< GeneType >  individual) const
inlineoverridevirtual

Global reduction to find the best individual across all islands.

Parameters
individualThe local best individual.
Returns
A copy of the absolute best individual found in the entire archipelago.

Implements galib::internal::Communicator< GeneType >.

Definition at line 164 of file MpiCommunicator.h.

References galib::internal::Serializer< GeneType >::deserialize(), galib::Individual< GeneType >::getFitness(), and galib::internal::Serializer< GeneType >::serialize().

◆ broadcast()

template<typename GeneType >
void galib::internal::MpiCommunicator< GeneType >::broadcast ( const std::vector< Individual< GeneType > > &  deme,
const std::vector< std::size_t > &  destination_ranks 
)
inlineoverridevirtual

Sends a deme to multiple destination islands.

Parameters
demeThe individuals to migrate.
destination_ranksList of target island IDs.

Implements galib::internal::Communicator< GeneType >.

Definition at line 146 of file MpiCommunicator.h.

References galib::internal::Serializer< GeneType >::serialize().

◆ getRank()

template<typename GeneType >
std::size_t galib::internal::MpiCommunicator< GeneType >::getRank ( ) const
inlineoverridevirtual

Gets the network rank of the local node.

Returns
The ID of the local island.

Implements galib::internal::Communicator< GeneType >.

Definition at line 223 of file MpiCommunicator.h.

◆ getSize()

template<typename GeneType >
std::size_t galib::internal::MpiCommunicator< GeneType >::getSize ( ) const
inlineoverridevirtual

Gets the total number of islands in the network.

Returns
The size of the archipelago.

Implements galib::internal::Communicator< GeneType >.

Definition at line 227 of file MpiCommunicator.h.

◆ send()

template<typename GeneType >
void galib::internal::MpiCommunicator< GeneType >::send ( const std::vector< Individual< GeneType > > &  deme,
const std::size_t  destination_rank 
)
inlineoverridevirtual

Sends a deme to a specific destination island.

Parameters
demeThe individuals to migrate.
destination_rankThe network ID/rank of the target island.

Implements galib::internal::Communicator< GeneType >.

Definition at line 133 of file MpiCommunicator.h.

References galib::internal::Serializer< GeneType >::serialize().

◆ startReceiving()

template<typename GeneType >
void galib::internal::MpiCommunicator< GeneType >::startReceiving ( MigrationBuffer< GeneType > &  target_buffer)
inlineoverridevirtual

Begins asynchronous background receiving of migrants.

Parameters
target_bufferThe buffer where arrived individuals will be stored.

Implements galib::internal::Communicator< GeneType >.

Definition at line 57 of file MpiCommunicator.h.

References galib::internal::MpiCommunicator< GeneType >::stopReceiving().

◆ stopReceiving()

template<typename GeneType >
void galib::internal::MpiCommunicator< GeneType >::stopReceiving ( )
inlineoverridevirtual

◆ update()

template<typename GeneType >
void galib::internal::MpiCommunicator< GeneType >::update ( )
inlineoverridevirtual

Processes any pending network events (e.g. polls for incoming messages).

Implements galib::internal::Communicator< GeneType >.

Definition at line 75 of file MpiCommunicator.h.

References galib::internal::Serializer< GeneType >::deserialize(), and galib::internal::MigrationBuffer< GeneType >::push().


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