PPL Logo

CkFutures

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

Data Structures

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

Typedefs

typedef struct Future_s Future
typedef int CkFutureID
typedef struct _CkFuture CkFuture

Functions

 CpvStaticDeclare (FutureState, futurestate)
 CpvStaticDeclare (CkSemaPool *, semapool)
static void addedFutures (int lo, int hi)
static int createFuture (void)
CkFuture CkCreateFuture (void)
void CkReleaseFutureID (CkFutureID handle)
int CkProbeFutureID (CkFutureID handle)
void * CkWaitFutureID (CkFutureID handle)
void CkReleaseFuture (CkFuture fut)
int CkProbeFuture (CkFuture fut)
void * CkWaitFuture (CkFuture fut)
void CkWaitVoidFuture (CkFutureID handle)
static void setFuture (CkFutureID handle, void *pointer)
void _futuresModuleInit (void)
CkFutureID CkRemoteBranchCallAsync (int ep, void *m, CkGroupID group, int PE)
void * CkRemoteBranchCall (int ep, void *m, CkGroupID group, int PE)
CkFutureID CkRemoteNodeBranchCallAsync (int ep, void *m, CkGroupID group, int node)
void * CkRemoteNodeBranchCall (int ep, void *m, CkGroupID group, int node)
CkFutureID CkRemoteCallAsync (int ep, void *m, const CkChareID *ID)
void * CkRemoteCall (int ep, void *m, const CkChareID *ID)
CkFutureID CkCreateAttachedFuture (void *msg)
CkFutureID CkCreateAttachedFutureSend (void *msg, int ep, CkArrayID id, CkArrayIndex idx, void(*fptr)(CkArrayID, CkArrayIndex, void *, int, int), int size)
void * CkWaitReleaseFuture (CkFutureID futNum)
void CkSendToFutureID (CkFutureID futNum, void *m, int PE)
void CkSendToFuture (CkFuture fut, void *msg)
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)
 PUPbytes (CkFuture) extern"C"CkFuture CkCreateFuture(void)
CkFutureID CkCreateAttachedFutureSend (void *msg, int ep, struct CkArrayID id, CkArrayIndex idx, void(*fptr)(struct CkArrayID, CkArrayIndex, void *, int, int), int size CK_MSGOPTIONAL)

Variables

CkGroupID _fbocID
int _CkFuture::pe

Detailed Description

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

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

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.

These routines are implemented in ckfutures.C.


Typedef Documentation

typedef struct Future_s Future

typedef int CkFutureID

Definition at line 13 of file ckfutures.h.

typedef struct _CkFuture CkFuture


Function Documentation

CpvStaticDeclare ( FutureState  ,
futurestate   
)

CpvStaticDeclare ( CkSemaPool ,
semapool   
)

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

Definition at line 118 of file ckfutures.C.

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

Referenced by _futuresModuleInit(), and createFuture().

static int createFuture ( void   )  [inline, static]

CkFuture CkCreateFuture ( void   ) 

Definition at line 156 of file ckfutures.C.

References Converse::CkMyPe(), createFuture(), _CkFuture::id, and _CkFuture::pe.

void CkReleaseFutureID ( CkFutureID  handle  ) 

Definition at line 165 of file ckfutures.C.

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

Referenced by CkReleaseFuture(), and CkWaitReleaseFuture().

int CkProbeFutureID ( CkFutureID  handle  ) 

Definition at line 174 of file ckfutures.C.

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

Referenced by CkProbeFuture().

void * CkWaitFutureID ( CkFutureID  handle  ) 

void CkReleaseFuture ( CkFuture  fut  ) 

Definition at line 206 of file ckfutures.C.

References CkReleaseFutureID(), and _CkFuture::id.

int CkProbeFuture ( CkFuture  fut  ) 

Definition at line 212 of file ckfutures.C.

References CkProbeFutureID(), and _CkFuture::id.

void * CkWaitFuture ( CkFuture  fut  ) 

Definition at line 218 of file ckfutures.C.

References CkWaitFutureID(), and _CkFuture::id.

void CkWaitVoidFuture ( CkFutureID  handle  ) 

Definition at line 224 of file ckfutures.C.

References CkFreeMsg(), and CkWaitFutureID().

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

void _futuresModuleInit ( void   ) 

Definition at line 244 of file ckfutures.C.

References addedFutures(), and malloc().

Referenced by _initCharm().

CkFutureID CkRemoteBranchCallAsync ( int  ep,
void *  m,
CkGroupID  group,
int  PE 
)

Definition at line 272 of file ckfutures.C.

References CkCreateAttachedFuture(), and CkSendMsgBranch().

Referenced by CkRemoteBranchCall().

void * CkRemoteBranchCall ( int  ep,
void *  m,
CkGroupID  group,
int  PE 
)

Definition at line 280 of file ckfutures.C.

References CkRemoteBranchCallAsync(), and CkWaitReleaseFuture().

CkFutureID CkRemoteNodeBranchCallAsync ( int  ep,
void *  m,
CkGroupID  group,
int  node 
)

Definition at line 287 of file ckfutures.C.

References CkCreateAttachedFuture(), and CkSendMsgNodeBranch().

Referenced by CkRemoteNodeBranchCall().

void * CkRemoteNodeBranchCall ( int  ep,
void *  m,
CkGroupID  group,
int  node 
)

Definition at line 295 of file ckfutures.C.

References CkRemoteNodeBranchCallAsync(), and CkWaitReleaseFuture().

CkFutureID CkRemoteCallAsync ( int  ep,
void *  m,
const CkChareID ID 
)

Definition at line 302 of file ckfutures.C.

References CkCreateAttachedFuture(), and CkSendMsg().

Referenced by CkRemoteCall().

void * CkRemoteCall ( int  ep,
void *  m,
const CkChareID ID 
)

Definition at line 310 of file ckfutures.C.

References CkRemoteCallAsync(), and CkWaitReleaseFuture().

CkFutureID CkCreateAttachedFuture ( void *  msg  ) 

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

void * CkWaitReleaseFuture ( CkFutureID  futNum  ) 

void CkSendToFutureID ( CkFutureID  futNum,
void *  m,
int  PE 
)

void CkSendToFuture ( CkFuture  fut,
void *  msg 
)

Definition at line 396 of file ckfutures.C.

References CkSendToFutureID(), _CkFuture::id, and _CkFuture::pe.

CkSemaID CkSemaCreate ( void   ) 

Definition at line 402 of file ckfutures.C.

References Converse::CkMyPe().

void* CkSemaWait ( CkSemaID  id  ) 

Definition at line 411 of file ckfutures.C.

References Converse::CkMyPe().

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

Definition at line 422 of file ckfutures.C.

References Converse::CkMyPe().

void CkSemaSignal ( CkSemaID  id,
void *  m 
)

Definition at line 433 of file ckfutures.C.

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

void CkSemaDestroy ( CkSemaID  id  ) 

Definition at line 441 of file ckfutures.C.

References Converse::CkMyPe().

PUPbytes ( CkFuture   ) 

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


Variable Documentation

Definition at line 256 of file ckfutures.C.

int _CkFuture::pe [inherited]

Definition at line 16 of file ckfutures.h.

Referenced by CkCreateFuture(), and CkSendToFuture().


Generated on Fri May 25 08:00:58 2012 for Charm++ by  doxygen 1.5.5