Discamus continentiam augere, luxuriam coercere
Home -> Research -> NB Collectives -> LibNBC
NB Collectives
      CG Solver
    MPI Topologies
    MPI Datatypes
    Network Topologies
    Ethernet BTL eth
    Older Projects
  Full CV [pdf]


  Past Events

LibNBC - Nonblocking MPI Collective Operations


LibNBC is a prototypic implementation of a nonblocking interface for MPI collective operations. Based on ANSI C and MPI-1, it supports all MPI-1 collective operations in a nonblocking manner. LibNBC is distributed under the BSD license.

Download the NBC Library

These versions of the NBC Library are available:

Build the NBC Library 1.0 and Programs using it (C- and F77 Bindings)

  1. mpi-c compiler wrapper (usually 'mpicc', or select a different via 'export mpicc=') must be in $path
  2. ./configure && make
  3. include "nbc.h" in your program
  4. link the program with "libnbc.a" (-lnbc) (you find the library in .libs after the build)
A description of LibNBC and its usage is available in "Implementation and Performance Analysis of Non-Blocking Collective Operations for MPI" [1] and "Design, Implementation, and Usage of LibNBC" [2]. Reference [1] should be used for general citations of LibNBC. The InfiniBand-optimization is described in "Optimizing non-blocking Collective Operations for InfiniBand" [3]. The threaded implementation of LibNBC (on IB, as well as MPI) is described in "Message Progression in Parallel Computing - To Thread or not to Thread?" [4]


[1] T. Hoefler, A. Lumsdaine and W. Rehm:
 Implementation and Performance Analysis of Non-Blocking Collective Operations for MPI In Proceedings of the 2007 International Conference on High Performance Computing, Networking, Storage and Analysis, SC07, presented in Reno, USA, IEEE Computer Society/ACM, Nov. 2007, (acceptance rate 20%, 54/268)
[2] T. Hoefler and A. Lumsdaine:
 Design, Implementation, and Usage of LibNBC Open Systems Lab, Indiana University. presented in Bloomington, IN, USA, School of Informatics, Aug. 2006,
[3] T. Hoefler and A. Lumsdaine:
 Optimizing non-blocking Collective Operations for InfiniBand In Proceedings of the 22nd IEEE International Parallel & Distributed Processing Symposium, CAC'08 Workshop, presented in Miami, FL, ISSN: 1530-2075, ISBN: 978-1-4244-1694-3, Apr. 2008,
[4] T. Hoefler and A. Lumsdaine:
 Message Progression in Parallel Computing - To Thread or not to Thread? In Proceedings of the 2008 IEEE International Conference on Cluster Computing, presented in Tsukuba, Japan, IEEE Computer Society, ISSN: 1552-5244, ISBN: 978-1-4244-2640, Oct. 2008, (acceptance rate 30%, 28/92)


Most of the work was done at the Open Systems Lab at the Indiana University. I want to thank Jeff Squyres (Cisco Systems), Andrew Lumsdaine (Indiana University), George Bosilca (University of Tennessee), Michael Adams (Indiana University), and Wolfgang Rehm (TU Chemnitz) for useful discussions contributing to the development of LibNBC.

serving:© Torsten Hoefler