Programming odds and ends — InfiniBand, RDMA, and low-latency networking for now.

RDMA tutorial PDFs

In cooperation with the HPC Advisory Council, I’ve reformatted three of my RDMA tutorials for easier offline reading. You can find them, along with several papers on InfiniBand, GPUs, and other interesting topics, at the HPC Training page. For easier access, here are my three papers:


8 responses

  1. Thank You!

    February 2, 2013 at 12:02 pm

  2. Suhasa

    Great Thank You

    April 19, 2013 at 3:35 am

  3. Pingback: InfiniBand: An Introduction + Simple IB verbs program with RDMA Write

  4. Omar Khan


    i want to set up an all to all connection between several processes using librdmacm API. So i will have an active and a passive side in each process. I intend to start two threads in each process, one thread to process the incoming connection requests (Passive side) and one thread to connect with other processes (active side). What i want to ask is that can i use one listening rdma_cm_id binded at a particular port waiting for all connection requests or do i have to start a listening rdma_cm_id for each connecting process. i have tried using one listening rdma_cm_id for multiple processes. It works fine for a one to one connection between two processes, but when i connect multiple processes, the performance of communication degrades. It seems as if i am unable to communicate between processes independently of other proceses. The purpose was to set up an infrastructure where each process can communicate with any other process independently and in parallel. if i do a send from one process to every other process in a loop and wait for a receive from each process, it takes a lot of time. for four processes it takes almost 15 secs when it should take a few microseconds.I hope you get what i mean.
    Please help me out, as i have exhausted almost all information available on the net. My code is based on the cmatose.c file that comes with the librdmacm. cmatose.c also sets up communication between multiple processes, but by default it is set for only one.
    I am using only one completion channel and one listening communication id at each process to set up connection but different send/receive and completion queues for each connected process.

    January 30, 2014 at 12:17 am

  5. Pingback: InfiniBand: An Introduction + Simple IB verbs program with RDMA Write | InIT Cloud Computing Lab

  6. Pingback: KIARA InfiniBand Functionality Overview | InIT Cloud Computing Lab

  7. Pingback: Communication between client and server is erratic | FYTRO SPORTS

  8. yang


    could you please tell me the function of these code lines?
    if (s_ctx) {
    if (s_ctx->ctx != verbs)
    die(“cannot handle events in more than one context.”);

    and when does s_ctx->ctx!=verbs?

    look forward to your reply!

    August 20, 2017 at 5:18 am

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s