LAM (Local Area Multicomputer) is an MPI programming environment and development system for heterogeneous computers on a network. With LAM/MPI, a dedicated cluster or an existing network computing infrastructure can act as a single parallel computer. LAM/MPI is considered to be ``cluster friendly,'' in that it offers daemon-based process startup/control as well as fast client-to-client message passing protocols. LAM/MPI can use TCP/IP and/or shared memory for message passing.
LAM features a full implementation of MPI-1, and much of MPI-2. Compliant applications are source code portable between LAM/MPI and any other implementation of MPI. In addition to providing a high-quality implementation of the MPI standard, LAM/MPI offers extensive monitoring capabilities to support debugging. Monitoring happens on two levels. First, LAM/MPI has the hooks to allow a snapshot of process and message status to be taken at any time during an application run. This snapshot includes all aspects of synchronization plus datatype maps/signatures, communicator group membership, and message contents (see the XMPI application on the main LAM web site). On the second level, the MPI library is instrumented to produce a cummulative record of communication, which can be visualized either at runtime or post-mortem.
The OSCAR environment is able to have multiple MPI implementations
installed simultaneously - see Section 2.10
(page ) for a description of the
switcher program.
LAM/MPI is configured on OSCAR to use the Secure Shell (ssh) to initially start processes on remote nodes. Normally, using ssh requires each user to set up cryptographic keys before being able to execute commands on remote nodes with no password. The OSCAR setup process has already taken care of this step for you. Hence, the LAM command lamboot should work with no additional setup from the user.
In order to use LAM/MPI successfully, you must first ensure that switcher is set to use LAM/MPI. First, execute the following command:
$ switcher mpi --show
If the result contains a line beginning with ``default'' followed by a string containing ``lam'' (e.g., ``lam-6.5.6''), then you can skip the rest of this section. Otherwise, execute the following command:
$ switcher mpi --list
This shows all the MPI implementations that are available. Choose one that contains the name ``lam'' (e.g., ``lam-6.5.6'') and run the following command:
$ switcher mpi = lam-6.5.6
This will set all future shells to use LAM/MPI. In order to guarantee that all of your login environments contain the proper setup to use LAM/MPI, it is probably safest to logout and log back in again. Doing so will guarantee that all of your interactive shells will have the LAM commands and man pages will be found (i.e., your $PATH and $MANPATH environment variables set properly for LAM/MPI).
Hence, you will be able to execute commands such as ``mpirun'' and ``man lamboot'' without any additional setup.
The general scheme of using LAM/MPI is as follows:
$ lamboot my_hostfile
$ mpicc myprogram.c -o myprogram
$ mpirun C myprogram
The mpirun command has many options and arguments - see the man page and/or ``mpirun -h'' for more information.
Note that the wrapper compilers are all set to use the corresponding GNU compilers (gcc, g++, and gf77, respectively). Attempting to use other compilers may run into difficulties because their linking styles may be different than what the LAM libraries expect (particularly for C++ and Fortran compilers).
The LAM/MPI web site (http://www.lam-mpi.org/) contains much, much more information about LAM/MPI, including:
Make today a LAM/MPI day!
root 2002-11-08