memarmci.h

00001 //
00002 // memarmci.h
00003 // based on memshm.h
00004 //
00005 // Copyright (C) 1996 Limit Point Systems, Inc.
00006 //
00007 // Author: Curtis Janssen <cljanss@ca.sandia.gov>
00008 // Maintainer: SNL
00009 //
00010 // This file is part of the SC Toolkit.
00011 //
00012 // The SC Toolkit is free software; you can redistribute it and/or modify
00013 // it under the terms of the GNU Library General Public License as published by
00014 // the Free Software Foundation; either version 2, or (at your option)
00015 // any later version.
00016 //
00017 // The SC Toolkit is distributed in the hope that it will be useful,
00018 // but WITHOUT ANY WARRANTY; without even the implied warranty of
00019 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00020 // GNU Library General Public License for more details.
00021 //
00022 // You should have received a copy of the GNU Library General Public License
00023 // along with the SC Toolkit; see the file COPYING.LIB.  If not, write to
00024 // the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
00025 //
00026 // The U.S. Government is granted a limited license as per AL 91-7.
00027 //
00028 
00029 #ifdef __GNUC__
00030 #pragma interface
00031 #endif
00032 
00033 #ifndef _util_group_memarmci_h
00034 #define _util_group_memarmci_h
00035 
00036 #include <iostream>
00037 
00038 #include <util/group/memrdma.h>
00039 
00040 namespace sc {
00041 
00044 class ARMCIMemoryGrp: public RDMAMemoryGrp {
00045   private:
00046     void **all_data_;
00047     void init();
00048     void finalize();
00049     Ref<ThreadLock> armci_lock_;
00050   public:
00051     ARMCIMemoryGrp(const Ref<MessageGrp>& msg);
00052     ARMCIMemoryGrp(const Ref<KeyVal>&);
00053     ~ARMCIMemoryGrp();
00054 
00055     void set_localsize(size_t);
00056 
00057     void retrieve_data(void *, int node, int offset, int size, int lock);
00058     void replace_data(void *, int node, int offset, int size, int unlock);
00059     void sum_data(double *data, int node, int doffset, int dsize);
00060 
00061     void sync();
00062     void deactivate();
00063 
00064     void* malloc_local(size_t nbyte);
00065     void free_local(void *data);
00066 
00067     void print(std::ostream &o = ExEnv::out0()) const;
00068 };
00069 
00070 }
00071 
00072 #endif
00073 
00074 // Local Variables:
00075 // mode: c++
00076 // c-file-style: "CLJ"
00077 // End:

Generated at Mon Dec 3 23:23:38 2007 for MPQC 2.3.1 using the documentation package Doxygen 1.5.2.