# 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: