MPQC  3.0.0-alpha
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 #ifndef _util_group_memarmci_h
30 #define _util_group_memarmci_h
31 
32 #include <iostream>
33 
34 #include <util/group/memrdma.h>
35 
36 namespace sc {
37 
41  private:
42  void **all_data_;
43  void init();
44  void finalize();
45  Ref<ThreadLock> armci_lock_;
46  public:
47  ARMCIMemoryGrp(const Ref<MessageGrp>& msg);
49  ~ARMCIMemoryGrp();
50 
51  void set_localsize(size_t);
52 
53  void retrieve_data(void *, int node, long offset, long size, int lock);
54  void replace_data(void *, int node, long offset, long size, int unlock);
55  void sum_data(double *data, int node, long doffset, long dsize);
56 
57  void sync();
58  void deactivate();
59 
60  void* malloc_local(size_t nbyte);
61  void free_local(void * & data);
62 
63  void print(std::ostream &o = ExEnv::out0()) const;
64 };
65 
66 }
67 
68 #endif
69 
70 // Local Variables:
71 // mode: c++
72 // c-file-style: "CLJ"
73 // 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:164
sc::ARMCIMemoryGrp
The ARMCIMemoryGrp concrete class provides an implementation of MsgMemoryGrp.
Definition: memarmci.h:40
sc::Ref
A template class that maintains references counts.
Definition: ref.h:361
sc::ARMCIMemoryGrp::free_local
void free_local(void *&data)
Free data that was allocated with malloc_local, and set the pointer to 0.
sc::RDMAMemoryGrp
The RDMAMemoryGrp abstract class specializes the MsgMemoryGrp class.
Definition: memrdma.h:42
sc::MemoryGrp::size
int size(int node)
Returns the amount of memory residing on node.
Definition: memory.h:161
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::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.
sc
Contains all MPQC code up to version 3.
Definition: mpqcin.h:14

Generated at Sun Jan 26 2020 23:24:01 for MPQC 3.0.0-alpha using the documentation package Doxygen 1.8.16.