1 /* All AMPI entry methods can be tagged 'expedited'
2 * because AMPI does not use Charm++ message priorities. */
3 #define AMPI_USE_EXPEDITED_MSGS 1
5 #if AMPI_USE_EXPEDITED_MSGS
6 #define EXPEDITED [expedited]
7 #define EXPEDITED_NOTRACE [expedited,notrace]
8 #define EXPEDITED_NOKEEP [expedited,nokeep]
9 #define EXPEDITED_REDN [expedited,reductiontarget]
10 #define EXPEDITED_THREADED [expedited,threaded]
11 #define EXPEDITED_THREADED_REDN [expedited,threaded,reductiontarget]
12 #define EXPEDITED_SYNC [expedited,sync]
13 #define EXPEDITED_IGET [expedited,iget]
15 #define EXPEDITED /*empty*/
16 #define EXPEDITED_NOTRACE [notrace]
17 #define EXPEDITED_NOKEEP [nokeep]
18 #define EXPEDITED_REDN [reductiontarget]
19 #define EXPEDITED_THREADED [threaded]
20 #define EXPEDITED_THREADED_REDN [threaded,reductiontarget]
21 #define EXPEDITED_IGET [iget]
22 #define EXPEDITED_SYNC [sync]
30 initnode void ampiNodeInit(void);
31 initproc void ampiProcInit(void);
33 array[1D] ampiParent {
34 entry EXPEDITED_NOTRACE ampiParent(int universeNo, CProxy_TCharm threads_);
35 entry EXPEDITED void ResumeThread();
36 entry EXPEDITED void Checkpoint(int len, char dname[len]);
37 entry EXPEDITED void ExchangeProxy(CProxy_ampi);
41 entry EXPEDITED ampi();
42 entry EXPEDITED_NOTRACE ampi(CkArrayID parent_, ampiCommStruct s);
43 entry EXPEDITED_REDN void allInitDone(void);
44 entry EXPEDITED void setInitDoneFlag();
45 entry EXPEDITED void unblock(void);
46 entry EXPEDITED void ssend_ack(int);
47 entry EXPEDITED void generic(AmpiMsg *);
48 entry EXPEDITED void genericRdma(rdma char buf[size], int size, int seq, int tag,
49 int srcRank, MPI_Comm destcomm, int ssendReq);
50 entry EXPEDITED_NOKEEP void completedRdmaSend(CkDataMsg *msg);
51 entry EXPEDITED_REDN void barrierResult(void);
52 entry EXPEDITED_REDN void ibarrierResult(void);
53 entry EXPEDITED_NOKEEP void rednResult(CkReductionMsg *msg);
54 entry EXPEDITED_NOKEEP void irednResult(CkReductionMsg *msg);
55 entry EXPEDITED_THREADED void splitPhase1(CkReductionMsg *msg);
56 entry EXPEDITED_THREADED void splitPhaseInter(CkReductionMsg *msg);
57 entry EXPEDITED_THREADED_REDN void commCreatePhase1(MPI_Comm nextGroupComm);
58 entry EXPEDITED_THREADED_REDN void intercommCreatePhase1(MPI_Comm nextInterComm);
59 entry EXPEDITED_THREADED_REDN void intercommCreatePhaseSelf(MPI_Comm nextInterComm);
60 entry EXPEDITED_THREADED_REDN void intercommMergePhase1(MPI_Comm nextIntraComm);
62 entry EXPEDITED void setRemoteProxy(CProxy_ampi rproxy);
63 entry EXPEDITED_SYNC void winRemotePut(int orgtotalsize, char orgaddr[orgtotalsize], int orgcnt,
64 MPI_Datatype orgtype, MPI_Aint targdisp, int targcnt,
65 MPI_Datatype targtype, int winIndex);
66 entry EXPEDITED_SYNC void winRemotePut(int orgtotalsize, /**/rdma/**/ char orgaddr[orgtotalsize],
67 int orgcnt, MPI_Datatype orgtype, MPI_Aint targdisp,
68 int targcnt, MPI_Datatype targtype, int winIndex);
69 entry EXPEDITED_SYNC AmpiMsg *winRemoteGet(int orgcnt, MPI_Datatype orgtype, MPI_Aint targdisp,
70 int targcnt, MPI_Datatype targtype, int winIndex);
71 entry EXPEDITED_SYNC void winRemoteAccumulate(int orgtotalsize, char orgaddr[orgtotalsize], int orgcnt,
72 MPI_Datatype orgtype, MPI_Aint targdisp, int targcnt,
73 MPI_Datatype targtype, MPI_Op op, int winIndex);
74 entry EXPEDITED_SYNC void winRemoteAccumulate(int orgtotalsize, /**/rdma/**/ char orgaddr[orgtotalsize],
75 int orgcnt, MPI_Datatype orgtype,
76 MPI_Aint targdisp, int targcnt,
77 MPI_Datatype targtype, MPI_Op op, int winIndex);
78 entry EXPEDITED_SYNC AmpiMsg *winRemoteCompareAndSwap(int size, char sorgaddr[size],
79 char compaddr[size], MPI_Datatype type,
80 MPI_Aint targdisp, int winIndex);
81 entry EXPEDITED_SYNC void winRemoteLock(int lock_type, int winIndex, int requestRank);
82 entry EXPEDITED_SYNC void winRemoteUnlock(int winIndex, int requestRank);
83 entry EXPEDITED_IGET AmpiMsg *winRemoteIget(MPI_Aint orgdisp, int orgcnt, MPI_Datatype orgtype,
84 MPI_Aint targdisp, int targcnt, MPI_Datatype targtype,
86 entry EXPEDITED_IGET AmpiMsg *Alltoall_RemoteIget(MPI_Aint disp, int cnt, MPI_Datatype type, int tag);
89 group [migratable] ampiWorlds {
90 entry EXPEDITED ampiWorlds(ampiCommStruct nextWorld);
91 entry EXPEDITED void add(ampiCommStruct nextWorld);