Fix memory leak in AMPI RDMA send completion
[charm.git] / src / libs / ck-libs / ampi / ampi.ci
blob27f231eef2010a980d1ad476af479a009794325c
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]
14 #else
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]
23 #endif
25 module ampi {
26   message AmpiMsg {
27     char data[];
28   };
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);
38   };
40   array[1D] 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,
85                                                 int winIndex);
86     entry EXPEDITED_IGET AmpiMsg *Alltoall_RemoteIget(MPI_Aint disp, int cnt, MPI_Datatype type, int tag);
87   };
89   group [migratable] ampiWorlds {
90     entry EXPEDITED ampiWorlds(ampiCommStruct nextWorld);
91     entry EXPEDITED void add(ampiCommStruct nextWorld);
92   };