CkFutures

Futures--ways to block Converse threads on remote events. More...

Data Structures

struct  _ckSemaID
struct  Future_s
struct  FutureState
class  CkSema
class  CkSemaPool
class  FutureInitMsg
class  FutureMain
class  FutureBOC

Typedefs

typedef int CkFutureID
typedef struct _ckSemaID CkSemaID
typedef struct Future_s Future

Functions

void * CkRemoteCall (int eIdx, void *msg, const CkChareID *chare)
void * CkRemoteBranchCall (int eIdx, void *msg, CkGroupID gID, int pe)
void * CkRemoteNodeBranchCall (int eIdx, void *msg, CkGroupID gID, int node)
CkFutureID CkRemoteCallAsync (int eIdx, void *msg, const CkChareID *chare)
CkFutureID CkRemoteBranchCallAsync (int eIdx, void *msg, CkGroupID gID, int pe)
CkFutureID CkRemoteNodeBranchCallAsync (int eIdx, void *msg, CkGroupID gID, int node)
void * CkWaitFuture (CkFutureID futNum)
void CkWaitVoidFuture (CkFutureID futNum)
void CkReleaseFuture (CkFutureID futNum)
int CkProbeFuture (CkFutureID futNum)
void CkSendToFuture (CkFutureID futNum, void *msg, int pe)
CkFutureID CkCreateAttachedFuture (void *msg)
CkFutureID CkCreateAttachedFutureSend (void *msg, int ep, struct CkArrayID id, struct CkArrayIndexMax idx, void(*fptr)(struct CkArrayID, struct CkArrayIndexMax, void *, int, int), int size CK_MSGOPTIONAL)
void * CkWaitReleaseFuture (CkFutureID futNum)
CkSemaID CkSemaCreate (void)
void * CkSemaWait (CkSemaID id)
void CkSemaWaitN (CkSemaID id, int n, void *marray[])
void CkSemaSignal (CkSemaID id, void *m)
void CkSemaDestroy (CkSemaID id)
 CpvStaticDeclare (FutureState, futurestate)
 CpvStaticDeclare (CkSemaPool *, semapool)
static void addedFutures (int lo, int hi)
static int createFuture (void)
static void setFuture (CkFutureID handle, void *pointer)
void _futuresModuleInit (void)
CkFutureID CkCreateAttachedFutureSend (void *msg, int ep, CkArrayID id, CkArrayIndexMax idx, void(*fptr)(CkArrayID, CkArrayIndexMax, void *, int, int), int size)

Variables

CkGroupID _fbocID

Detailed Description

Futures--ways to block Converse threads on remote events.

To call [sync] entry methods, we need a way to block the current Converse thread until the called method returns.

These routines are implemented in ckfutures.C.

A "future" represents a thread of control that has been passed to another processor. It provides a place for a (local) thread to block and the machinery for resuming control based on a remote event. Futures are thus used to implement Charm++'s "[sync]" methods.

This "sequential futures abstraction" is a well-studied concept in remote process control.


Typedef Documentation

typedef int CkFutureID

Definition at line 313 of file charm.h.

typedef struct _ckSemaID CkSemaID

typedef struct Future_s Future


Function Documentation

void * CkRemoteCall ( int  eIdx,
void *  msg,
const CkChareID chare 
)

Definition at line 287 of file ckfutures.C.

References CkRemoteCallAsync(), and CkWaitReleaseFuture().

Referenced by CProxy_waitqd_QDChare::waitQD().

void * CkRemoteBranchCall ( int  eIdx,
void *  msg,
CkGroupID  gID,
int  pe 
)

Definition at line 257 of file ckfutures.C.

References CkRemoteBranchCallAsync(), and CkWaitReleaseFuture().

void * CkRemoteNodeBranchCall ( int  eIdx,
void *  msg,
CkGroupID  gID,
int  node 
)

Definition at line 272 of file ckfutures.C.

References CkRemoteNodeBranchCallAsync(), and CkWaitReleaseFuture().

CkFutureID CkRemoteCallAsync ( int  eIdx,
void *  msg,
const CkChareID chare 
)

Definition at line 279 of file ckfutures.C.

References CkCreateAttachedFuture(), and CkSendMsg().

Referenced by CkRemoteCall().

CkFutureID CkRemoteBranchCallAsync ( int  eIdx,
void *  msg,
CkGroupID  gID,
int  pe 
)

Definition at line 249 of file ckfutures.C.

References CkCreateAttachedFuture(), and CkSendMsgBranch().

Referenced by CkRemoteBranchCall().

CkFutureID CkRemoteNodeBranchCallAsync ( int  eIdx,
void *  msg,
CkGroupID  gID,
int  node 
)

Definition at line 264 of file ckfutures.C.

References CkCreateAttachedFuture(), and CkSendMsgNodeBranch().

Referenced by CkRemoteNodeBranchCall().

void * CkWaitFuture ( CkFutureID  futNum  ) 

void CkWaitVoidFuture ( CkFutureID  futNum  ) 

Definition at line 201 of file ckfutures.C.

References CkFreeMsg(), and CkWaitFuture().

void CkReleaseFuture ( CkFutureID  futNum  ) 

Definition at line 160 of file ckfutures.C.

References FutureState::array, FutureState::freelist, and Future_s::next.

Referenced by CkWaitReleaseFuture().

int CkProbeFuture ( CkFutureID  futNum  ) 

Definition at line 169 of file ckfutures.C.

References FutureState::array, and Future_s::ready.

void CkSendToFuture ( CkFutureID  futNum,
void *  msg,
int  pe 
)

CkFutureID CkCreateAttachedFuture ( void *  msg  ) 

CkFutureID CkCreateAttachedFutureSend ( void *  msg,
int  ep,
struct CkArrayID  id,
struct CkArrayIndexMax  idx,
void(*)(structCkArrayID, struct CkArrayIndexMax, void *, int, int fptr,
int size  CK_MSGOPTIONAL 
)

void * CkWaitReleaseFuture ( CkFutureID  futNum  ) 

CkSemaID CkSemaCreate ( void   ) 

Definition at line 373 of file ckfutures.C.

References Converse::CkMyPe(), and _ckSemaID::pe.

void * CkSemaWait ( CkSemaID  id  ) 

Definition at line 382 of file ckfutures.C.

References Converse::CkMyPe().

void CkSemaWaitN ( CkSemaID  id,
int  n,
void *  marray[] 
)

Definition at line 393 of file ckfutures.C.

References Converse::CkMyPe().

void CkSemaSignal ( CkSemaID  id,
void *  m 
)

Definition at line 404 of file ckfutures.C.

References envelope::setRef(), and UsrToEnv().

void CkSemaDestroy ( CkSemaID  id  ) 

Definition at line 412 of file ckfutures.C.

References Converse::CkMyPe().

CpvStaticDeclare ( FutureState  ,
futurestate   
)

CpvStaticDeclare ( CkSemaPool ,
semapool   
)

static void addedFutures ( int  lo,
int  hi 
) [static]

Definition at line 124 of file ckfutures.C.

References FutureState::array, FutureState::freelist, and Future_s::next.

Referenced by _futuresModuleInit(), and createFuture().

static int createFuture ( void   )  [static]

static void setFuture ( CkFutureID  handle,
void *  pointer 
) [static]

void _futuresModuleInit ( void   ) 

Definition at line 221 of file ckfutures.C.

References addedFutures(), and malloc().

Referenced by _initCharm().

CkFutureID CkCreateAttachedFutureSend ( void *  msg,
int  ep,
CkArrayID  id,
CkArrayIndexMax  idx,
void(*)(CkArrayID, CkArrayIndexMax, void *, int, int fptr,
int  size 
)


Variable Documentation

Definition at line 233 of file ckfutures.C.


Generated on Mon Nov 23 07:56:04 2009 for Charm++ by  doxygen 1.5.5