MPQC
2.3.1
Main Page
Related Pages
Classes
Files
File List
src
lib
util
group
memrdma.h
1
//
2
// memrdma.h
3
// Based on memamsg.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_memrdma_h
34
#define _util_group_memrdma_h
35
36
#include <iostream>
37
#include <vector>
38
39
#include <util/group/pool.h>
40
#include <util/group/memmsg.h>
41
42
namespace
sc {
43
46
class
RDMAMemoryGrp
:
public
MsgMemoryGrp
{
47
protected
:
48
char
*data_;
49
50
virtual
void
retrieve_data(
void
*,
int
node,
int
offset
,
int
size
,
51
int
lock) = 0;
52
virtual
void
replace_data(
void
*,
int
node,
int
offset,
int
size,
53
int
unlock) = 0;
54
virtual
void
sum_data(
double
*data,
int
node,
int
doffset,
int
dsize) = 0;
55
56
std::vector<Pool*> pools_;
57
size_t
default_pool_size_;
58
void
* malloc_region(
size_t
nbyte);
59
void
free_region(
void
*);
60
public
:
61
RDMAMemoryGrp
(
const
Ref<MessageGrp>
& msg);
62
RDMAMemoryGrp
(
const
Ref<KeyVal>
&);
63
~
RDMAMemoryGrp
();
64
65
void
*
localdata
();
66
67
void
set_localsize
(
size_t
localsize
);
68
69
void
*
obtain_writeonly
(
distsize_t
offset,
int
size);
70
void
*
obtain_readwrite
(
distsize_t
offset,
int
size);
71
void
*
obtain_readonly
(
distsize_t
offset,
int
size);
72
void
release_readonly
(
void
*data,
distsize_t
offset,
int
size);
73
void
release_writeonly
(
void
*data,
distsize_t
offset,
int
size);
74
void
release_readwrite
(
void
*data,
distsize_t
offset,
int
size);
75
76
void
sum_reduction(
double
*data,
distsize_t
doffset,
int
dsize);
77
void
sum_reduction_on_node(
double
*data,
size_t
doffset,
int
dsize,
78
int
node = -1);
79
80
void
print
(std::ostream &o =
ExEnv::out0
())
const
;
81
};
82
83
}
84
85
#endif
86
87
// Local Variables:
88
// mode: c++
89
// c-file-style: "CLJ"
90
// End:
Generated at Fri Oct 25 2013 23:27:30 for
MPQC
2.3.1 using the documentation package
Doxygen
1.8.4.