source: src/comm/mpi/has_request_vec.hpp@ 97c25dd

Last change on this file since 97c25dd was dfed1c, checked in by Julian Iseringhausen <isering@…>, 14 years ago

Major vmg update.

git-svn-id: https://svn.version.fz-juelich.de/scafacos/trunk@1136 5161e1c8-67bf-11de-9fd5-51895aff932f

  • Property mode set to 100644
File size: 919 bytes
Line 
1/**
2 * @file has_request_vec.hpp
3 * @author Julian Iseringhausen <isering@ins.uni-bonn.de>
4 * @date Mon Nov 21 13:27:22 2011
5 *
6 * @brief A convenience base class for classes using MPI_Requests.
7 *
8 */
9
10
11#ifndef HAS_REQUEST_VEC_HPP_
12#define HAS_REQUEST_VEC_HPP_
13
14#ifdef HAVE_MPI
15
16#include <mpi.h>
17
18namespace VMG
19{
20
21class HasRequestVec
22{
23protected:
24
25MPI_Request& Request()
26{
27 request_vec.push_back(MPI_Request());
28 return request_vec.back();
29}
30
31void ClearRequests()
32{
33 if (request_vec.size() > 0) {
34#ifndef NDEBUG
35 int rval = MPI_Waitall(static_cast<int>(request_vec.size()), &request_vec.front(), MPI_STATUSES_IGNORE);
36 assert(rval == MPI_SUCCESS);
37#else
38 MPI_Waitall(static_cast<int>(request_vec.size()), &request_vec.front(), MPI_STATUSES_IGNORE);
39#endif
40 request_vec.clear();
41 }
42}
43
44private:
45 std::vector<MPI_Request> request_vec;
46};
47
48}
49
50#endif /* HAVE_MPI */
51
52#endif /* HAS_REQUEST_VEC_HPP_ */
Note: See TracBrowser for help on using the repository browser.