mpififo - inter-node named pipes over MPI

mpififo is an MPI-based middleware that allows processes in a Unix pipeline to
execute on different nodes in a compute cluster via named pipes.


ipcmd requires the following environment:

  * C compiler supporting C99
  * OpenMP 2.5
  * MPI implementation supporting MPI_THREAD_MULTIPLE (tested with MPICH 3.0.4)


CHANGES   - Visible changes in the current version and previous versions
Makefile  - POSIX Makefile
README    - This file containing basic information & installation instructions
TODO      - Wish list of future modifications
mpififo.c - source code
tests     - Tests scripts run by "make check"

1. (Optional) Edit the Makefile, customize the CC and/or CFLAGS macro for your
   environment (CC and CFLAGS can also be overridden on the command-line as
   demonstrated below).

2. Issue the "make" command to build mpififo

   make [CC=...] [CFLAGS=...]

3. Submit a batch script or interactive job (e.g., "qsub -I" for PBS/TORQUE)
   that runs the test scripts (MPICH w/ Hydra process manager only):
   make check [NODES=1] [NPROC=4]

   By default, a single node & 4 processes are used.


[mpiexec] mpififo [-crv] writefifo1 readfifo1 [writefifo2 readfifo2...]
  -c : create fifos upon startup
  -r : remove fifos after mpififo exits
  -v : verbose output to stderr (for debugging)

See the web site and publication for more information.



Weeks N, Kraeva M, Luecke G. Parallelization of software pipelines using the
mpififo tool. Cluster Computing (CLUSTER), 2013 IEEE International Conference
on. [In Press]

Poster presented at IEEE CLUSTER 2013:


To terminate the execution of all mpififo processes, one of the mpififo
processes must be manually killed. As this is typically done by a job
scheduler upon completion of a job, this can be automated by running mpififo
asynchronously ("in the background") in the job script, without wait()'ing on
it. This issue will be addressed in a future release.

Deadlocks have been observed with OpenMPI 1.7.2. This seems to be an issue
with OpenMPI's support for MPI_THREAD_MULTIPLE, rather than a bug in the
mpififo code.


Please report any bugs in the issue tracker at the web site.


Nathan Weeks