File: XdmfDsm.h

package info (click to toggle)
vtk6 6.1.0+dfsg2-6
  • links: PTS, VCS
  • area: main
  • in suites: jessie, jessie-kfreebsd
  • size: 165,164 kB
  • ctags: 226,428
  • sloc: cpp: 1,354,490; ansic: 730,748; python: 227,134; tcl: 48,285; xml: 8,290; yacc: 4,832; java: 3,827; perl: 3,108; lex: 1,809; sh: 1,437; asm: 471; makefile: 229
file content (132 lines) | stat: -rw-r--r-- 4,347 bytes parent folder | download | duplicates (6)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
/*******************************************************************/
/*                               XDMF                              */
/*                   eXtensible Data Model and Format              */
/*                                                                 */
/*  Id : Id  */
/*  Date : $Date$ */
/*  Version : $Revision$ */
/*                                                                 */
/*  Author:                                                        */
/*     Jerry A. Clarke                                             */
/*     clarke@arl.army.mil                                         */
/*     US Army Research Laboratory                                 */
/*     Aberdeen Proving Ground, MD                                 */
/*                                                                 */
/*     Copyright @ 2007 US Army Research Laboratory                */
/*     All Rights Reserved                                         */
/*     See Copyright.txt or http://www.arl.hpc.mil/ice for details */
/*                                                                 */
/*     This software is distributed WITHOUT ANY WARRANTY; without  */
/*     even the implied warranty of MERCHANTABILITY or FITNESS     */
/*     FOR A PARTICULAR PURPOSE.  See the above copyright notice   */
/*     for more information.                                       */
/*                                                                 */
/*******************************************************************/
#ifndef __XdmfDsm_h
#define __XdmfDsm_h

#include "XdmfObject.h"

#define XDMF_DSM_OPCODE_DONE    0xFF

//! Base comm object for Distributed Shared Memory implementation
/*!
*/


class XdmfDsmMsg;
class XdmfDsmComm;
class XdmfDsm;
class XdmfArray;

#define XDMF_DSM_TYPE_UNIFORM       0
#define XDMF_DSM_TYPE_UNIFORM_RANGE 1
#define XDMF_DSM_TYPE_MIXED         2

#define XDMF_DSM_DEFAULT_LENGTH 10000

class XDMF_EXPORT XdmfDsm : public XdmfObject {

public:
  XdmfDsm();
  virtual ~XdmfDsm();

  XdmfConstString GetClassName() { return ( "XdmfDsm" ) ; };


//! Type
    XdmfGetValueMacro(DsmType, XdmfInt32);
    XdmfSetValueMacro(DsmType, XdmfInt32);

//! End Address
    XdmfGetValueMacro(EndAddress, XdmfInt64);
    XdmfSetValueMacro(EndAddress, XdmfInt64);

//! Start Address
    XdmfGetValueMacro(StartAddress, XdmfInt64);
    XdmfSetValueMacro(StartAddress, XdmfInt64);

//! Start Id
    XdmfGetValueMacro(StartServerId, XdmfInt32);
    XdmfSetValueMacro(StartServerId, XdmfInt32);

//! End Id
    XdmfGetValueMacro(EndServerId, XdmfInt32);
    XdmfSetValueMacro(EndServerId, XdmfInt32);

//! Length
    XdmfGetValueMacro(Length, XdmfInt64);
    XdmfInt32 SetLength(XdmfInt64 Length);

//! totalLength
    XdmfGetValueMacro(TotalLength, XdmfInt64);
    XdmfSetValueMacro(TotalLength, XdmfInt64);

//! Storage
    XdmfGetValueMacro(Storage, XdmfArray *);
    XdmfInt32   SetStorage(XdmfArray *Storage);

//! Comm
    XdmfGetValueMacro(Comm, XdmfDsmComm *);
    XdmfSetValueMacro(Comm, XdmfDsmComm *);

    //! Msg
    XdmfGetValueMacro(Msg, XdmfDsmMsg *);
    XdmfSetValueMacro(Msg, XdmfDsmMsg *);


    //! Address Range
    XdmfInt32 GetAddressRangeForId(XdmfInt32 Id, XdmfInt64 *Start, XdmfInt64 *End);

    //! Configure the system. Set the Comm and ServerIds
    XdmfInt32   ConfigureUniform(XdmfDsmComm *Comm, XdmfInt64 Length, XdmfInt32 StartId=-1, XdmfInt32 EndId=-1);
    
    XdmfInt32   AddressToId(XdmfInt64 Address);

    XdmfInt32   SendCommandHeader(XdmfInt32 Opcode, XdmfInt32 Dest, XdmfInt64 Address, XdmfInt64 Length);
    XdmfInt32   ReceiveCommandHeader(XdmfInt32 *Opcode, XdmfInt32 *Source, XdmfInt64 *Address, XdmfInt64 *Length, XdmfInt32 Block=1);

    XdmfInt32   SendData(XdmfInt32 Dest, void *Data, XdmfInt64 Length);
    XdmfInt32   ReceiveData(XdmfInt32 Source, void *Data, XdmfInt64 Length, XdmfInt32 Block=1);

    virtual XdmfInt32 Copy(XdmfDsm *Source);

    XdmfInt32   SendDone();

protected:
    XdmfInt32   DsmType;
    XdmfInt32   StartServerId;
    XdmfInt32   EndServerId;
    XdmfInt32   StorageIsMine;
    XdmfInt64   StartAddress;
    XdmfInt64   EndAddress;
    XdmfInt64   Length;
    XdmfInt64   TotalLength;
    XdmfInt64   *Locks;
    XdmfArray   *Storage;
    XdmfDsmComm *Comm;
    XdmfDsmMsg  *Msg;
    XdmfByte    *DataPointer;
};

#endif // __XdmfDsm_h