LibNBC - Nonblocking MPI Collective Operations

Description

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 [1] and [2]. Reference [1] should be used for general citations of LibNBC. The InfiniBand-optimization is described in [3]. The threaded implementation of LibNBC (on IB, as well as MPI) is described in [4].

References

SC07
[1] T. Hoefler, A. Lumsdaine, 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)
IUCS-TR
[2] T. Hoefler, J. Squyres, G. Bosilca, G. Fagg, A. Lumsdaine, W. Rehm:
 Non-Blocking Collective Operations for MPI-2 Open Systems Lab, Indiana University. presented in Bloomington, IN, USA, School of Informatics, Aug. 2006,
IUCS-TR
[3] T. Hoefler, A. Lumsdaine:
 Design, Implementation, and Usage of LibNBC Open Systems Lab, Indiana University. presented in Bloomington, IN, USA, School of Informatics, Aug. 2006,
PARCO
[3] T. Hoefler, P. Gottschling, A. Lumsdaine, W. Rehm:
 Optimizing a Conjugate Gradient Solver with Non-Blocking Collective Operations Elsevier Journal of Parallel Computing (PARCO). Vol 33, Nr. 9, pages 624-633, Elsevier, ISSN: 0167-8191, Sep. 2007,

Acknowledgements

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), A HREF="http://icl.cs.utk.edu/people/peoplev2.apl?id=210">George Bosilca (University of Tennessee), Michael Adams (Indiana University), and Wolfgang Rehm (TU Chemnitz) for useful discussions contributing to the development of LibNBC.