LAM/MPI logo

LAM/MPI General User's Mailing List Archives

  |   Home   |   Download   |   Documentation   |   FAQ   |   all just in this list

From: Jeff Squyres (jsquyres_at_[hidden])
Date: 2004-01-13 02:17:47


On Mon, 12 Jan 2004, Bogdan Costescu wrote:

> The documentation that comes along with SSI and the installation guide
> use phrases like "plug-and-play", "integrated at run-time", etc. to
> characterize SSI. So I would like to know if it's possible to add a SSI
> after LAM-MPI was installed, much like a dynamic library :-)

In 7.0.x, the "plug-n-play" stuff refers to the compilation structure of
LAM. You can drop a module's source code in a LAM source tree, and LAM
will automatically pick it up during configuration and compilation, and
make it part of LAM (resistance is futile).

> For example, if I compiled a version of LAM-MPI and then I decide to add
> Myrinet cards to some cluster nodes and thus the "gm" RPI module, do I
> need to re-"configure; make; make install" and then recompile all MPI
> applications ? Or if initially the cluster uses rsh/ssh and then a *PBS
> batch system is added, and thus the "tm" boot module would need to be
> installed, how things need to be changed ?

In 7.1 (i.e., the CVS head -- grab yourself a nightly snapshot tarball to
have a look), we've added the capability to have dynamic SSI modules,
meaning that they are shared libraries that are each installed separately
from the main MPI library.

For example, here's a listing of my development installation tree
($prefix/lib/lam/*) -- pardon line wrap:

-----
[2:11] thor:~/san/local/lib/lam % ls -l
total 2640
-rwxr-xr-x 1 jsquyres research 843 Jan 12 19:56 liblam_totalview.la*
lrwxrwxrwx 1 jsquyres research 25 Jan 12 19:56 liblam_totalview.so -> liblam_totalview.so.0.0.0*
lrwxrwxrwx 1 jsquyres research 25 Jan 12 19:56 liblam_totalview.so.0 -> liblam_totalview.so.0.0.0*
-rwxr-xr-x 1 jsquyres research 62389 Jan 12 19:56 liblam_totalview.so.0.0.0*
-rwxr-xr-x 1 jsquyres research 869 Jan 12 19:56 ssi_boot_globus.la*
-rwxr-xr-x 1 jsquyres research 90847 Jan 12 19:56 ssi_boot_globus.so*
-rwxr-xr-x 1 jsquyres research 851 Jan 12 19:56 ssi_boot_rsh.la*
-rwxr-xr-x 1 jsquyres research 93847 Jan 12 19:56 ssi_boot_rsh.so*
-rwxr-xr-x 1 jsquyres research 923 Jan 12 19:56 ssi_coll_lam_basic.la*
-rwxr-xr-x 1 jsquyres research 440934 Jan 12 19:56 ssi_coll_lam_basic.so*
-rwxr-xr-x 1 jsquyres research 846 Jan 12 19:56 ssi_coll_smp.la*
-rw-r--r-- 1 jsquyres research 26 Jan 12 19:56 ssi_coll_smp.laminfo
-rwxr-xr-x 1 jsquyres research 292812 Jan 12 19:56 ssi_coll_smp.so*
-rwxr-xr-x 1 jsquyres research 893 Jan 12 19:56 ssi_rpi_crtcp.la*
-rwxr-xr-x 1 jsquyres research 225941 Jan 12 19:56 ssi_rpi_crtcp.so*
-rwxr-xr-x 1 jsquyres research 924 Jan 12 19:59 ssi_rpi_gm.la*
-rwxr-xr-x 1 jsquyres research 691193 Jan 12 19:59 ssi_rpi_gm.so*
-rwxr-xr-x 1 jsquyres research 887 Jan 12 19:56 ssi_rpi_lamd.la*
-rwxr-xr-x 1 jsquyres research 89295 Jan 12 19:56 ssi_rpi_lamd.so*
-rwxr-xr-x 1 jsquyres research 887 Jan 12 19:56 ssi_rpi_sysv.la*
-rw-r--r-- 1 jsquyres research 19 Jan 12 19:56 ssi_rpi_sysv.laminfo
-rwxr-xr-x 1 jsquyres research 224448 Jan 12 19:56 ssi_rpi_sysv.so*
-rwxr-xr-x 1 jsquyres research 881 Jan 12 19:56 ssi_rpi_tcp.la*
-rwxr-xr-x 1 jsquyres research 149997 Jan 12 19:56 ssi_rpi_tcp.so*
-rwxr-xr-x 1 jsquyres research 893 Jan 12 19:56 ssi_rpi_usysv.la*
-rw-r--r-- 1 jsquyres research 19 Jan 12 19:56 ssi_rpi_usysv.laminfo
-rwxr-xr-x 1 jsquyres research 220167 Jan 12 19:56 ssi_rpi_usysv.so*
-----

So the SSI modules are dyanamically opened at run-time by the LAM
component framework -- they are truly located outside of liblam and
libmpi. This means that you can add and remove a module at any time --
you don't even need to recompile your MPI applications. :-)

The laminfo command will accurately report which modules are available,
what SSI parameters they export, etc.

So if you add myrinet to your cluster -- add ssi_rpi_gm.so to your
$prefix/lib/lam directory. If you decide to start using PBS, add
ssi_boot_tm.so. And so on.

When 7.1 is released, we anticipate on having multiple RPM options for
Linux users. The final division hasn't been decided yet, but here's one
possibility:

- "base" LAM installation RPM, containing all the executables, help files,
  mpi*.h, and liblam and libmpi
- one RPM for each SSI module

This would allow easy installation/uninstallation of modules as local
requirements change.

If you want to give this a whirl, grab a nightly snapshot tarball and
compile it with:

  --with-modules --disable-static --enable-shared

Check out the expanded "laminfo" command as well.

-- 
{+} Jeff Squyres
{+} jsquyres_at_[hidden]
{+} http://www.lam-mpi.org/