LAM/MPI logo

3rd Party MPI Packages that Work with LAM:

  |   Home   |   Download   |   Documentation   |   FAQ   |   all just 3rd party software
The Scalable LAPACK (ScaLAPACK) library includes a subset of LAPACK routines redesigned for distributed memory MIMD parallel computers. It is currently written in a Single-Program-Multiple-Data style using explicit message passing for interprocessor communication. It assumes matrices are laid out in a two-dimensional block cyclic decomposition. It is avaialble from:

At the time of this writing, the version of ScaLAPACK available is 1.7.

The file (available from that web site) describes how to build ScaLAPACK, so we won't repeat much of it here (especially since it might change in future versions). These instructions only pertain to making LAM work correctly with ScaLAPACK.

# Make sure you follow the instructions to
# build BLACS with LAM, and put its location
# in the following.

   BLACSdir      = $(HOME)/BLACS/LIB

# The MPI section is commented out.
# Uncomment it. The wrapper compiler will
# handle SMPLIB, so make it blank. The rest
# are correct as is.

   USEMPI        = -DUsingMpiBlacs
   SMPLIB        = 
   BLACSFINIT    = $(BLACSdir)/blacsF77init_MPI-$(PLAT)-$(BLACSDBGLVL).a
   BLACSCINIT    = $(BLACSdir)/blacsCinit_MPI-$(PLAT)-$(BLACSDBGLVL).a
   BLACSLIB      = $(BLACSdir)/blacs_MPI-$(PLAT)-$(BLACSDBGLVL).a
   TESTINGdir    = $(home)/TESTING

# The PVMBLACS setup needs to be commented
# out.

   #USEMPI        =
   #SMPLIB        = $(PVM_ROOT)/lib/$(PLAT)/libpvm3.a -lnsl -lsocket
   #BLACSLIB      = $(BLACSdir)/blacs_PVM-$(PLAT)-$(BLACSDBGLVL).a
   #TESTINGdir    = $(HOME)/pvm3/bin/$(PLAT)

# Make sure that the BLASLIB points to the
# right place.  We built this example on Solaris, hence
# the name below.  The Linux version of the library
# (as of this writing) is blas_LINUX.a.

   BLASLIB       = $(LAPACKdir)/blas_solaris.a

# You can also use "hf77 / hcc" here, but
# LAM 6.2 users will need to specify "-lmpi"
# in the "F77LOADFLAGS" and "CCLOADFLAGS".
# You may need to specify the full path to
# mpif77 / mpicc if they aren't already in
# your path.
   F77            = mpif77
   F77LOADFLAGS   = 

   CC             = mpicc

The remainder of the values are fairly obvious and irrelevant to LAM; you can set whatever optimization level you want, etc.

If you follow the rest of the instructions for building, ScaLAPACK will build correctly and use LAM as its MPI communication layer.