MPQC
2.3.1
Main Page
Related Pages
Classes
Files
File List
src
lib
util
group
memmtmpi.h
1
//
2
// memmtmpi.h
3
// based on memmpi.h
4
//
5
// Copyright (C) 1996 Limit Point Systems, Inc.
6
//
7
// Author: Curtis Janssen <cljanss@limitpt.com>
8
// Maintainer: LPS
9
//
10
// This file is part of the SC Toolkit.
11
//
12
// The SC Toolkit is free software; you can redistribute it and/or modify
13
// it under the terms of the GNU Library General Public License as published by
14
// the Free Software Foundation; either version 2, or (at your option)
15
// any later version.
16
//
17
// The SC Toolkit is distributed in the hope that it will be useful,
18
// but WITHOUT ANY WARRANTY; without even the implied warranty of
19
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
20
// GNU Library General Public License for more details.
21
//
22
// You should have received a copy of the GNU Library General Public License
23
// along with the SC Toolkit; see the file COPYING.LIB. If not, write to
24
// the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
25
//
26
// The U.S. Government is granted a limited license as per AL 91-7.
27
//
28
29
#ifdef __GNUC__
30
#pragma interface
31
#endif
32
33
#ifndef _util_group_memmtmpi_h
34
#define _util_group_memmtmpi_h
35
36
#include <fstream>
37
#define MPICH_SKIP_MPICXX
38
#include <mpi.h>
39
40
#include <util/group/message.h>
41
#include <util/group/memamsg.h>
42
#include <util/group/thread.h>
43
44
namespace
sc {
45
46
class
MTMPIThread;
47
52
class
MTMPIMemoryGrp
:
public
ActiveMsgMemoryGrp
{
53
private
:
54
Ref<ThreadGrp>
th_;
55
56
Ref<ThreadLock>
serial_lock_;
57
int
serial_;
58
int
serial(
int
node);
59
60
MPI_Comm comp_comm_;
61
MPI_Comm comm_comm_;
62
int
req_tag_;
63
64
int
active_;
65
66
unsigned
int
*nreq_sent_;
67
unsigned
int
*nreq_sent_buf_;
68
69
MTMPIThread **thread_;
70
Ref<ThreadLock>
print_lock_;
// needed for debugging only
71
std::ofstream hout;
// handler out
72
std::ofstream mout;
// main thread out
73
74
void
init_mtmpimg(MPI_Comm comm,
int
nthreads);
75
76
// parent class pure virtuals
77
void
retrieve_data(
void
*,
int
node,
int
offset
,
int
size
,
int
lock);
78
void
replace_data(
void
*,
int
node,
int
offset,
int
size,
int
unlock);
79
void
sum_data(
double
*data,
int
node,
int
doffset,
int
dsize);
80
81
friend
class
MTMPIThread;
82
public
:
87
MTMPIMemoryGrp
(
const
Ref<MessageGrp>
& msg,
const
Ref<ThreadGrp>
&th,
88
MPI_Comm comm = MPI_COMM_WORLD);
91
MTMPIMemoryGrp
(
const
Ref<KeyVal>
&);
92
~
MTMPIMemoryGrp
();
93
94
void
activate
();
95
void
deactivate
();
96
97
void
sync
();
98
};
99
100
}
101
102
#endif
103
104
// Local Variables:
105
// mode: c++
106
// c-file-style: "CLJ"
107
// End:
Generated at Sun Aug 11 2013 06:45:32 for
MPQC
2.3.1 using the documentation package
Doxygen
1.8.3.1.