Accelerated Computation Engine
ace_qmpi.h
1 #ifndef ACE_QMPI_H
2 #define ACE_QMPI_H
3 #include <QObject>
4 #include <QVector>
5 #include <mpi.h>
6 //
7 
8 
9 
10 namespace Ace
11 {
25  class QMPI : public QObject
26  {
27  Q_OBJECT
28  public:
29  static QMPI& instance();
30  static void shutdown();
31  bool isMaster() const;
32  int size() const;
33  int rank() const;
34  int localSize() const;
35  int localRank() const;
36  void start();
37  void stop();
38  signals:
46  void dataReceived(const QByteArray& data, int fromRank);
54  void localDataReceived(const QByteArray& data, int fromRank);
55  public slots:
56  void sendData(int toRank, const QByteArray& data);
57  void sendLocalData(int toRank, const QByteArray& data);
58  protected:
59  virtual void timerEvent(QTimerEvent* event) override final;
60  private:
61  explicit QMPI();
62  ~QMPI();
63  void probe(MPI_Comm comm, int rank);
64  void sendData(MPI_Comm comm, int toRank, const QByteArray& data);
65  void setupWorld();
66  void setupLocal();
71  constexpr static int _timerPeriod {50};
76  static bool _hasShutdown;
80  static QMPI* _instance;
84  int _size;
88  int _rank;
92  MPI_Comm _local;
96  int _localSize;
100  int _localRank;
105  bool _failed {false};
110  bool _ignore {true};
111  };
112 }
113 
114 
115 
116 #endif
Definition: ace.h:6
int localSize() const
Definition: ace_qmpi.cpp:143
void stop()
Definition: ace_qmpi.cpp:193
int size() const
Definition: ace_qmpi.cpp:108
static QMPI & instance()
Definition: ace_qmpi.cpp:34
static void shutdown()
Definition: ace_qmpi.cpp:68
Definition: ace_qmpi.h:25
int localRank() const
Definition: ace_qmpi.cpp:161
bool isMaster() const
Definition: ace_qmpi.cpp:91
void localDataReceived(const QByteArray &data, int fromRank)
void sendLocalData(int toRank, const QByteArray &data)
Definition: ace_qmpi.cpp:233
void dataReceived(const QByteArray &data, int fromRank)
int rank() const
Definition: ace_qmpi.cpp:125
void start()
Definition: ace_qmpi.cpp:177
virtual void timerEvent(QTimerEvent *event) override final
Definition: ace_qmpi.cpp:253
void sendData(int toRank, const QByteArray &data)
Definition: ace_qmpi.cpp:213