MPQC  2.3.1
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 
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);
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:
sc::ARMCIMemoryGrp::set_localsize
void set_localsize(size_t)
Set the size of locally held memory.
sc::ARMCIMemoryGrp::deactivate
void deactivate()
Deactivate is called after the memory has been used.
sc::MemoryGrp::offset
distsize_t offset(int node)
Returns the global offset to node's memory.
Definition: memory.h:168
sc::ARMCIMemoryGrp
The ARMCIMemoryGrp concrete class provides an implementation of MsgMemoryGrp.
Definition: memarmci.h:44
sc::Ref
A template class that maintains references counts.
Definition: ref.h:332
sc::RDMAMemoryGrp
The RDMAMemoryGrp abstract class specializes the MsgMemoryGrp class.
Definition: memrdma.h:46
sc::MemoryGrp::size
int size(int node)
Returns the amount of memory residing on node.
Definition: memory.h:165
sc::ARMCIMemoryGrp::sync
void sync()
Synchronizes all the nodes.
sc::ExEnv::out0
static std::ostream & out0()
Return an ostream that writes from node 0.
sc::ARMCIMemoryGrp::free_local
void free_local(void *data)
Free data that was allocated with malloc_local_double.
sc::ARMCIMemoryGrp::print
void print(std::ostream &o=ExEnv::out0()) const
Prints out information about the object.
sc::ARMCIMemoryGrp::malloc_local
void * malloc_local(size_t nbyte)
Allocate data that will be accessed locally only.

Generated at Sun Jan 26 2020 23:33:04 for MPQC 2.3.1 using the documentation package Doxygen 1.8.16.