BIP Messages

Introduction

BIP (stands for Basic Interface for Parallelism) is a small API that we designed, and implemented on the Myrinet network. It delivers to the application the maximal performance achievable by the hardware.

BIP messages is implemented for cluster of workstations, linked by Myrinet boards with the LANAI processor. Several architectures are supported :

*   x86 / Linux.
*   Alpha / Linux.
*   PowerPC / Linux.

The implementation consists of a user-level library associated with a custom MCP that will run on the Myrinet board.

If you are interested in seeing BIP on other architectures, please send a mail.

BIP performance

One of the primary feature of BIP is a strong commitment to performance, we are achieving it by first eliminating system calls, doing the implementation at the user-level. Then we use a zero-copy protocol. Finally we tried to exploit all the potential of the hardware,for instance managing simultaneously DMA between LANAI SRAM and the wire, and DMA between main memory and LANAI SRAM.

*   We obtain a 1005Mbit/s bandwidth and 4.3us one-way latency.
*   Half of the bandwith (63Mbytes/s) is available for messages of size 4096 bytes.

Here are detailed results and the measurement method.

BIP Documentation

There is an online draft of the BIP user manual or a postscript version.

It has been updated for BIP 0.91, in particular with the description of tagged send and receives. Semantics has changed a bit.

For problem using or installing BIP, you can check the BIP bugs page or send a mail to bip-team@rhdac.univ-lyon1.fr.

Getting the BIP software

The source code of BIP will probably not be made available at this point because some of our partners are interested into using BIP as part of a commercial product.

Anyway we will continue to support the present binary distribution.

Look at the download page for information about source code avaibility.

Here is the CHANGES files(for a quick glance of new functionality) and README for BIP.

BIP Contact

There is now a mailing-list (majordomo based), to discuss any issues related to the BIP implementation.
Please go to the Contacts page.

Summary of BIP interface

A Bip application consists of n processus numbered from 0 to n-1. The logical number of the current process and the total number of processes are available in global variables bip_mynode and bip_numnodes.

In the current version of BIP, a process may only have one receive or one send posted at one time, and not both. The send and receives have a ``loose'' rendez-vous semantics, that means the send is guaranteed to complete only if a corresponding receive has been posted, the loose comes from the fact that from small messages, the intermediate buffering in the network may cause the send to complete even before the recv is posted.

All messages consists of a contiguous array of words (multiple of 4 bytes, properly aligned in memory). There is a bip_send and bip_recv call, both with asynchronous variants.

Home
Last modified: Tue Oct 5 19:02:02 MET DST 1999  
© BIP team