source: src/comm/mpi/has_request_vec.hpp@ a40eea

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

Merge recent changes of the vmg library into ScaFaCos.

Includes a fix for the communication problems on Jugene.

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

  • Property mode set to 100644
File size: 1.0 KB
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
16namespace VMG
17{
18
19class HasRequestVec
20{
21protected:
22
23MPI_Request& Request()
24{
25 request_vec.push_back(MPI_Request());
26 return request_vec.back();
27}
28
29void WaitAll()
30{
31 if (!request_vec.empty()) {
32#ifndef NDEBUG
33 int rval = MPI_Waitall(static_cast<int>(request_vec.size()), &request_vec.front(), MPI_STATUSES_IGNORE);
34 assert(rval == MPI_SUCCESS);
35#else
36 MPI_Waitall(static_cast<int>(request_vec.size()), &request_vec.front(), MPI_STATUSES_IGNORE);
37#endif
38 request_vec.clear();
39 }
40}
41
42int TestAll()
43{
44 int flag = 1;
45 if (!request_vec.empty())
46 MPI_Testall(request_vec.size(), &request_vec.front(), &flag, MPI_STATUSES_IGNORE);
47 return flag;
48}
49
50private:
51 std::vector<MPI_Request> request_vec;
52};
53
54}
55
56#endif /* HAVE_MPI */
57
58#endif /* HAS_REQUEST_VEC_HPP_ */
Note: See TracBrowser for help on using the repository browser.