[ < ] [ > ]   [ << ] [ 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.

 
#!/bin/sh
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.

 
# IBM POE/AIX:
  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 April, 15 2011 using texi2html 1.78.