w ParMa<SUP>2</SUP>: porting VIA in LAM/MPI

ParMa2: porting VIA in LAM/MPI


What is VIA ?

VIA (Virtual Interface Architecture) is a communication protocol designed to drastically improve network performance in relation to latency. This is obtained providing a user direct access to network interface, avoiding kernel intervention and  intermediate copies of data.

All VIA specifications are defined to the computing industry (Compaq,Intel and Microsoft lead the project), independently of the operating system and the hardware architecture.

VIA Home Page
Developer: VI Architecture - Implementor Guide Text

What is M-VIA ?

M-VIA is a VIA implementation for Linux designed at NERSC.
Since now we have tested all 3 beta release of M-VIA (0.9b1,0.9b2 and 0.9.3) and the first stable release, M-VIA 1.0, which supports the following network adapters:

To run M-VIA 1.0 is needed a Linux kernel of version 2.2.x.

Benchmark results

The following chart shows the improvement in latency we obtained in our cluster of four Dual Pentium II 450 MHz.
The TCP and UDP performance was measured with Netperf benchmark suite, using TCP_RR test which sends 1 byte long messagge.
The M-VIA result is obtained with the vpingpong test provided in M-VIA distribution, with M-VIA 0.9b1 and Linux kernel 2.1.125.


Since on 25th of Septeber was released M-VIA 1.0, it may be interesting to test its performance:


VIA Related Projects
We are now interested in improve the performance of parallel programs written for MPI. Taking advantage of M-VIA low latency it is possible to reduce process communication time. Therefore in december 1998 we began introducing a new communication layer within LAM/MPI library.

Porting VIA within LAM-MPI: done work

Complete MPI communication function support

Current release of LAM based on VIA supports all sets of basic communication functions:

  Specific data structures

These are the fundamental data structures used by our VIA level:

  Flow control

The realized and mainly implemented communication protocol includes flow control functionalities, to avoid the exhaustion of all communication resources:

  Packet fragmentation

Since VIA's standard establish a maximum message trasfer size (M-VIA is currently 32KB), while MPI messages do not have size limits, we implemented a fragmentation and reassembly mechanisms.

VIA patch for LAM-6.3.2

You can try the results of our work downloading a patch that allow VIA support for LAM, release 6.3.2.

We are updating the release frequently, so some incongruencies may occurr. If you are interested in this work, please report any bugs, comments or questions to Marco Panella.

Porting VIA within LAM-MPI: future work

Exploiting SMP machines

In order to exploit SMP machines we have to change the way the blocking MPI_Recv (...,MPI_ANY_SOURCE,...) is implemented.
For now it uses VIA's Completion Queue, which is unable to check for messages from both processes on the same node and from processes on other machines at the same time.

Integration in LAM files organization

In order to add VIA support to LAM, without patches' use, it is necessary to integrate our files in LAM distribution.
Decide way at runtime the user can choose M-VIA instead of TCP/IP or shared memory support; this may cause changing the RPI_SPLIT macro within the whole LAM code.

Messages ordering

MPI supposes that the lower communication layer provides a reliable and ordered message transport. VIA guarantees ordered delivery in Reliable Delivery level, which is not currently implemented in M-VIA. Therefore we could add functions to reorder messages.

Any help or collaborations would be appreciated.


Master's thesis (in italian)

International Conference Proceedings

Italian conference proceedings


Last Update October 11, 2001
Page maintained by Marco Panella