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  CkArrayIndex1D
 Simple ArrayIndex classes: the key is just integer indices. More...
class  CkArrayIndex2D
class  CkArrayIndex3D
class  CkArrayIndex4D
class  CkArrayIndex5D
class  CkArrayIndex6D
class  CkArrayIndexT< object >
 A slightly more complex array index: the key is an object whose size is fixed at compile time. More...
class  CkArrayListener
class  CkArrayOptions
 Arguments for array creation:. More...
class  ArrayBase
class  CProxy_ArrayBase
 This class is a wrapper around a CkArrayIndex and ArrayID, used by array element proxies. More...
class  CProxyElement_ArrayBase
class  CProxySection_ArrayBase
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...
struct  CkIndex2D
struct  CkIndex3D
struct  CkIndex4D
struct  CkIndex5D
struct  CkIndex6D
struct  CkIndexMax
class  CkArrayMap
 The "map" is used by the array manager to map an array index to a home processor number. More...

Typedefs

typedef int CkIndex1D
typedef ArrayElementT< CkIndex1DArrayElement1D
typedef ArrayElementT< CkIndex2DArrayElement2D
typedef ArrayElementT< CkIndex3DArrayElement3D
typedef ArrayElementT< CkIndex4DArrayElement4D
typedef ArrayElementT< CkIndex5DArrayElement5D
typedef ArrayElementT< CkIndex6DArrayElement6D
typedef ArrayElementT< CkIndexMaxArrayElementMax

Functions

 PUPmarshall (CkArrayOptions)
 PUPmarshall (CProxy_ArrayBase)
 PUPmarshall (CProxyElement_ArrayBase)
 PUPmarshall (CProxySection_ArrayBase)
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 operator| (PUP::er &p, CkIndex2D &i)
void operator| (PUP::er &p, CkIndex3D &i)
void operator| (PUP::er &p, CkIndex4D &i)
void operator| (PUP::er &p, CkIndex5D &i)
void operator| (PUP::er &p, CkIndex6D &i)
void operator| (PUP::er &p, CkIndexMax &i)
intCkArrayListener::ckGetData (ArrayElement *el) const
 Return our data associated with this array element.

Detailed Description

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

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) for (idx=...) if (map->procNum(idx)==thisPe) CkArray::insertInitial CkArray::prepareCtorMsg CkArray::insertElement

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

3.) Demand creation (receive side) CkLocMgr::deliver CkLocMgr::deliverUnknown CkLocMgr::demandCreateElement CkArray::demandCreateElement CkArray::prepareCtorMsg CkArrayManagerInsert or direct 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 int CkIndex1D

Definition at line 538 of file ckarray.h.

typedef ArrayElementT<CkIndex1D> ArrayElement1D

Definition at line 556 of file ckarray.h.

typedef ArrayElementT<CkIndex2D> ArrayElement2D

Definition at line 557 of file ckarray.h.

typedef ArrayElementT<CkIndex3D> ArrayElement3D

Definition at line 558 of file ckarray.h.

typedef ArrayElementT<CkIndex4D> ArrayElement4D

Definition at line 559 of file ckarray.h.

typedef ArrayElementT<CkIndex5D> ArrayElement5D

Definition at line 560 of file ckarray.h.

typedef ArrayElementT<CkIndex6D> ArrayElement6D

Definition at line 561 of file ckarray.h.

typedef ArrayElementT<CkIndexMax> ArrayElementMax

Definition at line 562 of file ckarray.h.


Function Documentation

PUPmarshall ( CkArrayOptions   ) 

PUPmarshall ( CProxy_ArrayBase   ) 

PUPmarshall ( CProxyElement_ArrayBase   ) 

PUPmarshall ( CProxySection_ArrayBase   ) 

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

Definition at line 760 of file ckarray.C.

References _localBranch(), CkArrayMessage::array_index(), CkDeliver_queue, deliver(), msg_prepareSend(), and opts.

Referenced by CkCallback::send().

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

Definition at line 769 of file ckarray.C.

References _localBranch(), CkArrayMessage::array_index(), CkDeliver_inline, CkDisableTracing(), CkEnableTracing(), deliver(), msg_prepareSend(), and opts.

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

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

Definition at line 892 of file ckarray.C.

References CProxy_ArrayBase::ckBroadcast(), and opts.

Referenced by CkCallback::send().

void operator| ( PUP::er p,
CkIndex2D i 
) [inline]

Definition at line 540 of file ckarray.h.

References p, CkIndex2D::x, and CkIndex2D::y.

void operator| ( PUP::er p,
CkIndex3D i 
) [inline]

Definition at line 542 of file ckarray.h.

References p, CkIndex3D::x, CkIndex3D::y, and CkIndex3D::z.

void operator| ( PUP::er p,
CkIndex4D i 
) [inline]

Definition at line 544 of file ckarray.h.

References p, CkIndex4D::w, CkIndex4D::x, CkIndex4D::y, and CkIndex4D::z.

void operator| ( PUP::er p,
CkIndex5D i 
) [inline]

Definition at line 546 of file ckarray.h.

References p, CkIndex5D::v, CkIndex5D::w, CkIndex5D::x, CkIndex5D::y, and CkIndex5D::z.

void operator| ( PUP::er p,
CkIndex6D i 
) [inline]

Definition at line 548 of file ckarray.h.

References p, CkIndex6D::x1, CkIndex6D::x2, CkIndex6D::y1, CkIndex6D::y2, CkIndex6D::z1, and CkIndex6D::z2.

void operator| ( PUP::er p,
CkIndexMax i 
) [inline]

Definition at line 550 of file ckarray.h.

References CkIndexMax::data, and p.

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

Return our data associated with this array element.

Definition at line 520 of file ckarray.h.

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

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


Generated on Sun Jun 29 13:29:40 2008 for Charm++ by  doxygen 1.5.1