Presentation is loading. Please wait.

Presentation is loading. Please wait.

Charm Workshop 20081 CkDirect: Charm++ RDMA Put Presented by Eric Bohm CkDirect Team: Eric Bohm, Sayantan Chakravorty, Pritish Jetley, Abhinav Bhatele.

Similar presentations


Presentation on theme: "Charm Workshop 20081 CkDirect: Charm++ RDMA Put Presented by Eric Bohm CkDirect Team: Eric Bohm, Sayantan Chakravorty, Pritish Jetley, Abhinav Bhatele."— Presentation transcript:

1 Charm Workshop 20081 CkDirect: Charm++ RDMA Put Presented by Eric Bohm CkDirect Team: Eric Bohm, Sayantan Chakravorty, Pritish Jetley, Abhinav Bhatele ppl@cs.uiuc.edu 5/4/2008

2 Charm Workshop 20082 What is CkDirect? One-sided communication One-way (put only, so far)‏ Memory to memory interface Uses RDMA for zero copy No protocol synchronization User notification via callback Pair-wise persistent channels

3 Charm Workshop 20083 Motivating Example

4 Charm Workshop 20084 Messaging Approach Proc2 Msg SR Dest Proc AB Send Message Msg RS

5 Charm Workshop 20085 CkDirect Approach Proc2 Dest Proc AB Put

6 Charm Workshop 20086 RDMA Challenges Remote Direct Memory Access Minimal overhead => fast Put is more intuitive for message driven model Get: know remote location and remote data is ready Put: know remote location Interfaces for RDMA vary by interconnect Put completion notification is lacking either there is no notification or the put performance is hardly better than two-sided through trickery, we can do better than that.

7 Charm Workshop 20087 Where is it useful? When the same size data is transferred between the same partners each iteration to buffers which are reused When the application already enforces iteration boundaries Especially when you need to aggregate data from disparate sources into a contiguous buffer before processing

8 Charm Workshop 20088 How does it work? User callback triggered on put completion Application must: register send and receive processor and memory pairs in a handle register put completion callback for handle register out of band pattern for handle call ready when done using the received put data only 1 transaction per handle at a time trigger message from callback for real computation

9 Charm Workshop 20089

10 10 Ping Pong Results Ping Pong, CkDirect relative improvement, by message size in 1000s of bytes

11 Charm Workshop 200811 Matrix Multiply Results Matrix Multiply 2048*2048 average time in milliseconds

12 Charm Workshop 200812 Jacobi 3D Results Blue Gene/P (Surveyor)‏ Infiniband (Abe)‏ Jacobi 3D 1024*1024*512, iteration time improvement from CkDirect

13 Charm Workshop 200813 OpenAtom Results OpenAtom Water256M Benchmark, minimization, time per step in seconds

14 Charm Workshop 200814 Reducing Polling Overhead Polling overhead is proportional to the number of ready handles. To minimize the number of ready handles we have a split scheme. CkDirect_readyMark Done with data, but don't start polling yet CkDirect_readyPoll Data was already marked, start checking Can detect puts completed since readyMark

15 Charm Workshop 200815 Iteration Boundary CkDirect_readyPoll CkDirect _put User Data Invoke callback function CkDirect_readyMark Iteration Boundary Phase Boundary Phase Boundary CkDirect_readyPoll message sends entry methods CkDirect _put User Data CkDirect_readyMark CkDirect_readyPoll User Data

16 Charm Workshop 200816 The CkDirect API /* Receiver side create handle */ struct infiDirectUserHandle CkDirect_createHandle(int senderNode,void *recvBuf, int recvBufSize, void (*callbackFnPtr)(void *), void *callbackData,double initialValue); /* Sender side register memory to handle */ void CkDirect_assocLocalBuffer(struct infiDirectUserHandle *userHandle,void *sendBuf,int sendBufSize); /* Sender side actual data transfer */ void CkDirect_put(struct infiDirectUserHandle *userHandle); /* Receiver side done with buffer */ void CkDirect_readyMark(struct infiDirectUserHandle *userHandle); /* Receiver side start checking for put */ void CkDirect_readyPollQ(struct infiDirectUserHandle *userHandle); /* Receiver side done with buffer start checking for put */ void CkDirect_ready(struct infiDirectUserHandle *userHandle);

17 Charm Workshop 200817 Conclusions Availability: cvs version of charm net-linux-amd64-ibverbs bluegenep Future Work CkDirect multicasts Ports to other architectures Questions? Feedback?


Download ppt "Charm Workshop 20081 CkDirect: Charm++ RDMA Put Presented by Eric Bohm CkDirect Team: Eric Bohm, Sayantan Chakravorty, Pritish Jetley, Abhinav Bhatele."

Similar presentations


Ads by Google