|
5 | 5 |
|
6 | 6 | #pragma once |
7 | 7 |
|
| 8 | +#include "MPI_Wrapper.h" |
| 9 | + |
8 | 10 | #include <mpi.h> |
9 | 11 | #include <sstream> |
10 | 12 | #include <vector> |
11 | 13 |
|
12 | 14 | namespace Comm |
13 | 15 | { |
14 | 16 |
|
15 | | -namespace Cereal_Func |
| 17 | +class Cereal_Func |
16 | 18 | { |
| 19 | + public: |
| 20 | + |
| 21 | + // every 2^exponent_align char concatenate to 1 word |
| 22 | + inline std::size_t align_stringstream(std::stringstream &ss); |
| 23 | + |
17 | 24 | // Send str |
18 | | - extern inline void mpi_send(const std::string &str, const std::size_t exponent_align, const int rank_recv, const int tag, const MPI_Comm &mpi_comm); |
| 25 | + inline void mpi_send(const std::string &str, const std::size_t exponent_align, const int rank_recv, const int tag, const MPI_Comm &mpi_comm); |
19 | 26 |
|
20 | 27 | // Send data |
21 | 28 | template<typename... Ts> |
22 | | - extern void mpi_send(const int rank_recv, const int tag, const MPI_Comm &mpi_comm, |
| 29 | + void mpi_send(const int rank_recv, const int tag, const MPI_Comm &mpi_comm, |
23 | 30 | const Ts&... data); |
24 | 31 |
|
25 | 32 | // Isend str |
26 | | - extern inline void mpi_isend(const std::string &str, const std::size_t exponent_align, const int rank_recv, const int tag, const MPI_Comm &mpi_comm, MPI_Request &request); |
| 33 | + inline void mpi_isend(const std::string &str, const std::size_t exponent_align, const int rank_recv, const int tag, const MPI_Comm &mpi_comm, MPI_Request &request); |
27 | 34 |
|
28 | 35 | // Isend data using temporary memory str |
29 | 36 | template<typename... Ts> |
30 | | - extern void mpi_isend(const int rank_recv, const int tag, const MPI_Comm &mpi_comm, |
| 37 | + void mpi_isend(const int rank_recv, const int tag, const MPI_Comm &mpi_comm, |
31 | 38 | std::string &str, MPI_Request &request, |
32 | 39 | const Ts&... data); |
33 | 40 |
|
| 41 | + // Recv to return |
| 42 | + inline std::vector<char> mpi_recv(const MPI_Comm &mpi_comm, MPI_Status &status); |
| 43 | + |
34 | 44 | // Recv to data |
35 | 45 | template<typename... Ts> |
36 | | - extern MPI_Status mpi_recv(const MPI_Comm &mpi_comm, |
| 46 | + MPI_Status mpi_recv(const MPI_Comm &mpi_comm, |
37 | 47 | Ts&... data); |
38 | 48 |
|
39 | 49 | // Mrecv to return |
40 | | - extern inline std::vector<char> mpi_mrecv(MPI_Message &message_recv, const MPI_Status &status); |
| 50 | + inline std::vector<char> mpi_mrecv(MPI_Message &message_recv, const MPI_Status &status); |
41 | 51 |
|
42 | | - // every 2^exponent_align char concatenate to 1 word |
43 | | - extern inline std::size_t align_stringstream(std::stringstream &ss); |
44 | | -} |
| 52 | + private: |
| 53 | + |
| 54 | + MPI_Wrapper::MPI_Type_Contiguous_Pool char_contiguous{MPI_CHAR}; |
| 55 | +}; |
45 | 56 |
|
46 | 57 | } |
47 | 58 |
|
|
0 commit comments