MPQC 2.3.1

- Main Page
- Related Pages
- Classes
- Files

- File List

memarmci.h
1 //
2 // memarmci.h
3 // based on memshm.h
4 //
5 // Copyright (C) 1996 Limit Point Systems, Inc.
6 //
7 // Author: Curtis Janssen <cljanss@ca.sandia.gov>
8 // Maintainer: SNL
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_memarmci_h
34 #define _util_group_memarmci_h
35
36 #include <iostream>
37
38 #include <util/group/memrdma.h>
39
40 namespace sc {
41
44 class ARMCIMemoryGrp: public RDMAMemoryGrp {
45 private:
46 void **all_data_;
47 void init();
48 void finalize();
49 Ref<ThreadLock> armci_lock_;
50 public:
51 ARMCIMemoryGrp(const Ref<MessageGrp>& msg);
52 ARMCIMemoryGrp(const Ref<KeyVal>&);
53 ~ARMCIMemoryGrp();
54
55 void set_localsize(size_t);
56
57 void retrieve_data(void *, int node, int offset, int size, int lock);
58 void replace_data(void *, int node, int offset, int size, int unlock);
59 void sum_data(double *data, int node, int doffset, int dsize);
60
61 void sync();
62 void deactivate();
63
64 void* malloc_local(size_t nbyte);
65 void free_local(void *data);
66
67 void print(std::ostream &o = ExEnv::out0()) const;
68 };
69
70 }
71
72 #endif
73
74 // Local Variables:
75 // mode: c++
76 // c-file-style: "CLJ"
77 // End: