[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

C. Using a Different `MPI' with TOP-C

`TOP-C' provides a built-in subset of MPI sufficient to run distributed applications. If you prefer to use a different implementation of `MPI' with `TOP-C', this note describes how to do so. Examples for `MPICH', `LAM' and `IBM POE' are at the end of this section. You should re-configure and re-build `TOP-C' using the same C/C++ compiler as that of your chosen MPI.

First test a `hello_world' MPI program for your chosen MPI implementation to make sure that the startup mechanism is well understood.

Many dialects of `MPI' provide their own wrapper around the C and C++ compiler. For example, `LAM MPI' provides mpicc. If your dialect provides such a wrapper mpicc, then do ./configure --with-mpi-cc=mpicc and make. There is a similar configure flag, --with-mpi-cxx, for `C++'.

If you do use such a wrapper, you should use the same C compiler for the rest of `TOP-C'. Hence, if mpicc uses cc, then configure with env CC=cc ./configure --with-mpi-cc=mpicc --cache-file=/dev/null. In general, you can always specify a non-default C and C++ compiler by specifying CC=... and CXX=..., respectively.

If your dialect does not provide such a wrapper, it is easy to create one by modifying the shell script below for your site.
gcc -I/usr/local/include $* -L/usr/local/lib -lmpi

These wrappers will enable topcc and topc++ to work, but not topc-config. If you also need topc-config, then you must modify topc-config. Determine the libraries used by your dialect of MPI. Then search for a string with -ltopc-mpi in `.../topc/bin/topc-config', and append to it your `libmpi'. For example, append to -ltopc-mpi with -L/usr/local/lib -lmpi.

Finally, for many dialects of MPI, after compiling the MPI application, they may also require a special command at runtime to execute, such as mpirun a.out. In such cases, your `TOP-C' application must be treated similarly.

The following examples illustrate the configuration and use of MPI for other MPI implementations using 2 slaves and 1 master.
  env CC=xlc CXX=xlC ./configure --with-mpi-cc=mpcc --with-mpi-cxx=mpCC
  make; cd bin; ./topcc --mpi -qcpluscmt ../examples/parfactor.c
  poe ./a.out 1234 --TOPC-stats -procs 3 -pgmmodel spmd

# MPICH/Linux:
  ./configure --with-mpi-cc=mpicc
  make; cd bin; ./topcc --mpi ../examples/parfactor.c
  mpirun -np 3 ./a.out --TOPC-stats 1234

# LAM/Linux:
  ./configure --with-mpi-cc=mpicc
  make; cd bin; ./topcc --mpi ../examples/parfactor.c
  mpirun -c 3 ./a.out -- --TOPC-stats 1234

[ << ] [ >> ]           [Top] [Contents] [Index] [ ? ]

This document was generated by Gene Cooperman on October, 6 2004 using texi2html