4#ifndef ATHENASERVICES_MPICLUSTERSVC_H_
5#define ATHENASERVICES_MPICLUSTERSVC_H_
14#include "GaudiKernel/IIncidentListener.h"
18#include "mpi3/environment.hpp"
26class MPIClusterSvc :
public extends<AthService, IMPIClusterSvc, IIncidentListener> {
30 : extends(name, svcLoc) {}
33 virtual StatusCode
initialize() override final;
36 virtual StatusCode
finalize() override final;
49 virtual
void barrier() override final;
52 virtual
void abort() override final;
69 virtual void log_addEvent(
int eventIdx, std::int64_t run_number,
70 std::int64_t event_number,
71 std::int64_t request_time_ns,
72 std::size_t slot)
override final;
75 std::int64_t event_number,
76 std::int64_t status)
override final;
79 std::unique_ptr<mpi3::environment>
m_env;
87 "SQLiteDBSvc for the MPI event log"};
std::int64_t m_lastInputFileHash
virtual ClusterMessage waitReceiveMessage(ClusterComm communicator=ClusterComm::Default) override final
Block until we receive an MPI message.
virtual void barrier() override final
Insert a barrier No rank will continue until all ranks reach this point.
virtual mpi3::communicator & data_communicator() override final
Return the data communicator.
virtual void log_addEvent(int eventIdx, std::int64_t run_number, std::int64_t event_number, std::int64_t request_time_ns, std::size_t slot) override final
Add (begin) an event in the log.
SQLite::Statement m_mpiLog_addFile
std::unique_ptr< mpi3::environment > m_env
SQLite::Statement m_mpiLog_addEvent
virtual void handle(const Incident &inc) override
IIncidentListener handle.
virtual void abort() override final
Abort the MPI run.
virtual int rank() const override final
Return our rank.
MPIClusterSvc(const std::string &name, ISvcLocator *svcLoc)
Constructor.
virtual void log_completeEvent(std::int64_t run_number, std::int64_t event_number, std::int64_t status) override final
Complete an event in the log.
mpi3::communicator m_world
virtual StatusCode initialize() override final
Initialize.
mpi3::communicator m_datacom
virtual StatusCode finalize() override final
Finalize.
SQLite::Statement m_mpiLog_completeEvent
virtual void sendMessage(int destRank, ClusterMessage message, ClusterComm communicator=ClusterComm::Default) override final
Send an MPI message.
ServiceHandle< ISQLiteDBSvc > m_mpiLog
virtual int numRanks() const override final
Return number of ranks.
std::map< std::size_t, std::int64_t > m_inputFileSlotMap
SQLite prepared statement.
A class describing a message sent between nodes in a cluster.