Base class for global clause sharing strategies across MPI processes. More...
#include <GlobalSharingStrategy.hpp>
Public Member Functions | |
| GlobalSharingStrategy (const std::shared_ptr< ClauseDatabase > &clauseDB, const std::vector< std::shared_ptr< SharingEntity > > &producers={}, const std::vector< std::shared_ptr< SharingEntity > > &consumers={}) | |
| Constructor for GlobalSharingStrategy. | |
| virtual | ~GlobalSharingStrategy () |
| Destructor. | |
| bool | importClause (const ClauseExchangePtr &cls) override |
| Imports a clause into the clause database. | |
| void | importClauses (const std::vector< ClauseExchangePtr > &v_cls) override |
| Imports multiple clauses into the clause database. | |
| bool | exportClauseToClient (const ClauseExchangePtr &clause, std::shared_ptr< SharingEntity > client) |
| Exports a clause to a specific client. | |
| std::chrono::microseconds | getSleepingTime () override |
| Gets the sleeping time for the sharing strategy. | |
| virtual void | joinProcess (int winnerRank, SatResult res, const std::vector< int > &model) |
| Handles the process of joining when a solution is found. | |
| void | printStats () override |
| Prints the statistics of the sharing strategy. | |
| virtual bool | initMpiVariables () |
| Initializes MPI-related variables. | |
| virtual bool | doSharing () override |
| Performs the clause sharing operation. | |
Public Member Functions inherited from SharingStrategy | |
| SharingStrategy (const std::vector< std::shared_ptr< SharingEntity > > &producers, const std::vector< std::shared_ptr< SharingEntity > > &consumers, const std::shared_ptr< ClauseDatabase > &clauseDB) | |
| Constructor for SharingStrategy. Be sure to call connectConstructorProducers after construction, this is due to the base class shared_from_this. | |
| virtual | ~SharingStrategy () |
| Virtual destructor. | |
| void | connectConstructorProducers () |
| Add this to the producers' clients list. | |
| virtual void | addProducer (std::shared_ptr< SharingEntity > producer) |
| Adds a producer to this strategy. | |
| virtual void | connectProducer (std::shared_ptr< SharingEntity > producer) |
| Connect a producer to this strategy. Add (this) to clients of (producer) | |
| virtual void | removeProducer (std::shared_ptr< SharingEntity > producer) |
| Removes a producer from this strategy. | |
Public Member Functions inherited from SharingEntity | |
| SharingEntity () | |
| Construct a new SharingEntity object. | |
| SharingEntity (const std::vector< std::shared_ptr< SharingEntity > > &clients) | |
| Construct a new SharingEntity object. | |
| virtual | ~SharingEntity () |
| Destroy the SharingEntity object. | |
| int | getSharingId () const |
| Get the sharing ID of this entity. | |
| void | setSharingId (int _id) |
| Set the sharing ID of this entity. | |
| virtual void | addClient (std::shared_ptr< SharingEntity > client) |
| Add a client to this entity. | |
| virtual void | removeClient (std::shared_ptr< SharingEntity > client) |
| Remove a specific client from this entity. | |
| size_t | getClientCount () const |
| Get the current number of clients. | |
| void | clearClients () |
| Remove all clients. | |
Protected Attributes | |
| GlobalSharingStatistics | gstats |
| Statistics for global sharing. | |
| bool | requests_sent |
| Flag indicating if requests to end were sent to the root. | |
| std::vector< MPI_Request > | recv_end_requests |
| MPI requests for non-blocking receive of end signals. | |
| MPI_Request | send_end_request |
| MPI request for non-root Isend for final synchronization with root. | |
| std::vector< int > | receivedFinalResultRoot |
| Buffer for storing results received from other mpi processes. | |
Protected Attributes inherited from SharingStrategy | |
| std::shared_ptr< ClauseDatabase > | m_clauseDB |
| Clause database where exported clauses are stored. | |
| SharingStatistics | stats |
| Sharing statistics. | |
| std::vector< std::weak_ptr< SharingEntity > > | m_producers |
| The set holding the references to the producers. | |
| std::shared_mutex | m_producersMutex |
| Shared mutex for producers list (to become RCU ?) | |
Protected Attributes inherited from SharingEntity | |
| std::vector< std::weak_ptr< SharingEntity > > | m_clients |
| List of weak pointers to client SharingEntities. | |
| std::shared_mutex | m_clientsMutex |
| Mutex to protect access to m_clients. | |
Additional Inherited Members | |
Protected Member Functions inherited from SharingStrategy | |
| bool | exportClauseToClient (const ClauseExchangePtr &clause, std::shared_ptr< SharingEntity > client) override |
| A SharingStrategy doesn't send a clause to the source client (->from must store the sharingId of its producer) | |
Protected Member Functions inherited from SharingEntity | |
| bool | exportClause (const ClauseExchangePtr &clause) |
| Export a clause to all registered clients. | |
| void | exportClauses (const std::vector< ClauseExchangePtr > &clauses) |
| Export multiple clauses to all registered clients. | |
Base class for global clause sharing strategies across MPI processes.
This class provides the interface and common functionality for implementing various inter-MPI process clause sharing strategies.
| GlobalSharingStrategy::GlobalSharingStrategy | ( | const std::shared_ptr< ClauseDatabase > & | clauseDB, |
| const std::vector< std::shared_ptr< SharingEntity > > & | producers = {}, | ||
| const std::vector< std::shared_ptr< SharingEntity > > & | consumers = {} ) |
Constructor for GlobalSharingStrategy.
| clauseDB | Shared pointer to the clause database. |
| producers | Vector of sharing entities that produce clauses. |
| consumers | Vector of sharing entities that consume clauses. |
|
overridevirtual |
Performs the clause sharing operation.
Implements SharingStrategy.
Reimplemented in AllGatherSharing, GenericGlobalSharing, and MallobSharing.
|
inlinevirtual |
Exports a clause to a specific client.
| clause | Pointer to the clause to be exported. |
| client | Shared pointer to the client receiving the clause. |
Reimplemented from SharingEntity.
Reimplemented in MallobSharing.
|
overridevirtual |
Gets the sleeping time for the sharing strategy.
Reimplemented from SharingStrategy.
Reimplemented in MallobSharing.
|
inlineoverridevirtual |
Imports a clause into the clause database.
| cls | Pointer to the clause to be imported. |
Implements SharingEntity.
Reimplemented in MallobSharing.
|
inlineoverridevirtual |
Imports multiple clauses into the clause database.
| v_cls | Vector of clauses to be imported. |
Implements SharingEntity.
|
virtual |
Initializes MPI-related variables.
Reimplemented in AllGatherSharing, GenericGlobalSharing, and MallobSharing.
|
virtual |
Handles the process of joining when a solution is found.
| winnerRank | The rank of the process that found the solution. |
| res | The result of the SAT solving process. |
| model | The satisfying assignment, if any. |
Reimplemented in AllGatherSharing, GenericGlobalSharing, and MallobSharing.
|
overridevirtual |
Prints the statistics of the sharing strategy.
Reimplemented from SharingStrategy.
Generated by