PPL Logo

CkArray

An Array is a collection of array elements (Chares) which can be indexed by an arbitary run of bytes (a CkArrayIndex). More...

Data Structures

class  ArrayBase
class  CProxy_ArrayBase
 This class is a wrapper around a CkArrayIndex and ArrayID, used by array element proxies. More...
class  ArrayElement
 An array element is a chare that lives inside the array. More...
class  ArrayElementT< T >
 An ArrayElementT is a utility class where you are constrained to a "thisIndex" of some fixed-sized type T. More...
class  ArrayElemExt
class  CkArrayMap
 The "map" is used by the array manager to map an array index to a home processor number. More...
class  ArrayMapExt

Typedefs

typedef ArrayElementT< CkIndex1D > ArrayElement1D
typedef ArrayElementT< CkIndex2DArrayElement2D
typedef ArrayElementT< CkIndex3DArrayElement3D
typedef ArrayElementT< CkIndex4DArrayElement4D
typedef ArrayElementT< CkIndex5DArrayElement5D
typedef ArrayElementT< CkIndex6DArrayElement6D
typedef ArrayElementT< CkIndexMaxArrayElementMax

Functions

 PUPmarshall (CProxy_ArrayBase) class CProxyElement_ArrayBase
 PUPmarshall (CProxyElement_ArrayBase) class CProxySection_ArrayBase
 PUPmarshall (CProxySection_ArrayBase) void CkSetMsgArrayIfNotThere(void *msg)
void CkSendMsgArray (int entryIndex, void *msg, CkArrayID aID, const CkArrayIndex &idx, int opts=0)
void CkSendMsgArrayInline (int entryIndex, void *msg, CkArrayID aID, const CkArrayIndex &idx, int opts=0)
void CkBroadcastMsgArray (int entryIndex, void *msg, CkArrayID aID, int opts=0)
void CkBroadcastMsgSection (int entryIndex, void *msg, CkSectionID sID, int opts=0)
intCkArrayListener::ckGetData (ArrayElement *el) const
 Return our data associated with this array element.

Variables

void(* ArrayMsgRecvExtCallback )(int, int, int *, int, int, char *, int)
int(* ArrayElemLeaveExt )(int, int, int *, char **, int)
void(* ArrayElemJoinExt )(int, int, int *, int, char *, int)
void(* ArrayResumeFromSyncExtCallback )(int, int, int *)
int(* ArrayMapProcNumExtCallback )(int, int, const int *)

Detailed Description

An Array is a collection of array elements (Chares) which can be indexed by an arbitary run of bytes (a CkArrayIndex).

Migratable Chare Arrays: user-visible classes.

Elements can be inserted or removed from the array, or migrated between processors. Arrays are integrated with the run-time load balancer. Elements can also receive broadcasts and participate in reductions.

Here's a list, valid in 2003/12, of all the different code paths used to create array elements:

1.) Initial inserts: all at once CProxy_foo::ckNew(msg,n); CProxy_ArrayBase::ckCreateArray CkArray::CkArray CkLocMgr::populateInitial(numInitial) -> CkArrayMap::populateInitial(numInitial) for (idx=...) if (map->procNum(idx)==thisPe) CkArray::insertInitial CkArray::prepareCtorMsg CkArray::insertElement OR map-specific insertion logic

2.) Initial inserts: one at a time fooProxy[idx].insert(msg,n); CProxy_ArrayBase::ckInsertIdx CkArray::prepareCtorMsg CkArray::insertElement

3.) Demand creation (receive side) CkLocMgr::deliver CkLocMgr::deliverUnknown CkLocMgr::demandCreateElement CkArray::demandCreateElement CkArray::prepareCtorMsg CkArray::insertElement

4.) Migration (receive side) CkLocMgr::migrateIncoming CkLocMgr::pupElementsFor CkArray::allocateMigrated

Converted from 1-D arrays 2/27/2000 by Orion Sky Lawlor, olawlor@acm.org

All these classes are defined in ckarray.C.


Typedef Documentation

typedef ArrayElementT<CkIndex1D> ArrayElement1D

Definition at line 425 of file ckarray.h.

Definition at line 426 of file ckarray.h.

Definition at line 427 of file ckarray.h.

Definition at line 428 of file ckarray.h.

Definition at line 429 of file ckarray.h.

Definition at line 430 of file ckarray.h.

Definition at line 431 of file ckarray.h.


Function Documentation

PUPmarshall ( CProxy_ArrayBase   ) 

Definition at line 153 of file ckarray.h.

References idx, PUP::m, operator==(), p, and PUP::pup().

Here is the call graph for this function:

PUPmarshall ( CProxyElement_ArrayBase   ) 

PUPmarshall ( CProxySection_ArrayBase   ) 

void CkSendMsgArray ( int  entryIndex,
void *  msg,
CkArrayID  aID,
const CkArrayIndex &  idx,
int  opts = 0 
)

Definition at line 1244 of file ckarray.C.

References _localBranch(), PUP::a, CkDeliver_queue, deliver(), and msg_prepareSend().

Referenced by CkMemCheckPT::doItNow(), and CkCallback::send().

Here is the call graph for this function:

Here is the caller graph for this function:

void CkSendMsgArrayInline ( int  entryIndex,
void *  msg,
CkArrayID  aID,
const CkArrayIndex &  idx,
int  opts = 0 
)

Definition at line 1255 of file ckarray.C.

References _localBranch(), PUP::a, CkDeliver_inline, CkDisableTracing(), CkEnableTracing(), deliver(), and msg_prepareSend().

Referenced by CkCallback::send(), and CkMulticastMgr::sendToLocal().

Here is the call graph for this function:

Here is the caller graph for this function:

void CkBroadcastMsgArray ( int  entryIndex,
void *  msg,
CkArrayID  aID,
int  opts = 0 
)

Definition at line 1408 of file ckarray.C.

References CProxy_ArrayBase::ckBroadcast().

Referenced by CkArrayExtSend(), CkArrayExtSend_multi(), and CkCallback::send().

Here is the call graph for this function:

Here is the caller graph for this function:

void CkBroadcastMsgSection ( int  entryIndex,
void *  msg,
CkSectionID  sID,
int  opts = 0 
)

Definition at line 1210 of file ckarray.C.

Referenced by CkCallback::send().

Here is the caller graph for this function:

int * CkArrayListener::ckGetData ( ArrayElement el  )  const [inline, inherited]

Return our data associated with this array element.

Definition at line 376 of file ckarray.h.

References CkArrayListener::dataOffset, and ArrayElement::listenerData.

Referenced by CkArrayReducer::getData(), and CkArrayBroadcaster::getData().

Here is the caller graph for this function:


Variable Documentation

void(* ArrayMsgRecvExtCallback)(int, int, int *, int, int, char *, int)

int(* ArrayElemLeaveExt)(int, int, int *, char **, int)

void(* ArrayElemJoinExt)(int, int, int *, int, char *, int)


Generated on Mon Sep 21 08:16:35 2020 for Charm++ by  doxygen 1.5.5