
   Description of the test
   =======================

   The HMPI interfaces are used with ScaLAPACK to try to 
   speed up homogeneous applications on heterogeneous platforms.

   The approach adopted is a multiprocessing approach. More than
   one process is run on each processor. The number of processes
   run on each processor is equal to the speeds of the fastest and
   slowest computer.

   The ScaLAPACK+HMPI tests employ homogeneous 2D block-cyclic distribution
   of matrices which is required by ScaLAPACK. Data distribution is distributed
   unevenly because the number of processes used for computation on a processor
   is proportional to the speed of the processor. Thus a faster processor performs
   more computations than a slower processor.

   The ScaLAPACK+HMPI tests employ the interim routines of BLACS+driver routines
   of ScaLAPACK+interfaces of HMPI to speed up the applications on heterogeneous 
   platforms.

   The testing procedure is a bit tedious.
  
   CONDITIONS
   ----------

   1). Install BLACS. This can be obtained from the location.
       http://www.netlib.org/blacs/index.html

       Modify the Bmake files in BMAKES directory. Use the value for
       the variable

       INTFACE = -Df77IsF2C
       TRANSCOMM = -DUseMpich
       WHATMPI=

   2). Install ATLAS. This can be obtained from the location.
       http://math-atlas.sourceforge.net/

   3). Install ScaLAPACK. This can be obtained from the location.
       http://www.netlib.org/scalapack/index.html

   4). Install Fortran-to-C converter f2c. It can be obtained from the
       location.
       http://cm.bell-labs.com/netlib/f2c/

   FILES
   -----

   counter.h --- Parameters
                 n*n -- matrix A
                 n*1 -- matrix X
                 n*1 -- matrix B
                 nb --- generalized block size
                 p --- Number of processes along the row
                 q --- Number of processes along the column

   simpelGrid.h
   simpelGrid.c  ---- Simple performance model definitions

   pdgesv.c --- Code for ScaLAPACK driver routine pdgesv.
                Uses HMPI_Group_create.

   pdmatgen.c
   pmatgeninc.c --- Generates a matrix. Very useful tool.

   HOW TO RUN
   ----------

   Some setup is required. Automation is tedious and hence these 
   setup instructions must be followed.

   1). On all machines involved in the computation, the following
       variables must be set in environment.

       SCALAPACK_HOME
       BLACS_HOME
       BLAS_HOME
       F2C_HOME

   2). The scalapack library "libscalapack.a" must be in the 
       directory:
       $SCALAPACK_HOME

   3). The BLACS libraries "libblacs.a" and "libblacsCinit.a" must be in the 
       directory:
       $BLACS_HOME

   4). The ATLAS libraries "libf77blas.a" and "libcblas.a" and "libatlas.a"
       must be in the directory:
       $BLAS_HOME

   5). The f2c library "libf2c.a" must be in the directory:
       $F2C_HOME

   TO RUN USING SIMPLE PERFORMANCE MODEL DEFINTION USING HMPI_GROUP_CREATE
   -----------------------------------------------------------------------

   shell$ hmpibcast pdgesv.c simpleGrid.* pmatgeninc.c pdmatgen.c counter.h

   shell$ hmpiload -I\$F2C_HOME -o pdgesv pdgesv.c -L\$SCALAPACK_HOME -lscalapack -L\$BLACS_HOME -lblacs -lblacsCinit -lblacs_MPI -L\$BLAS_HOME -lf77blas -lcblas -latlas -L\$F2C_HOME -lf2c

   shell$ hmpirun pdgesv
   N=2048, g=32, p=2, q=4, t(sec)=10.098798074, speed(MFlops)=1701.179592

   TO RUN USING SIMPLE PERFORMANCE MODEL DEFINTION USING HMPI_GROUP_AUTO_CREATE
   ----------------------------------------------------------------------------

   shell$ hmpibcast pdgesv_auto.c simpleGrid.* pmatgeninc.c pdmatgen.c counter_auto.h

   shell$ hmpiload -I\$F2C_HOME -o pdgesv pdgesv_auto.c -L\$SCALAPACK_HOME -lscalapack -L\$BLACS_HOME -lblacs_MPI -lblacsCinit_MPI -lblacs_MPI -L\$BLAS_HOME -lf77blas -lcblas -latlas -L\$F2C_HOME -lf2c

   shell$ hmpirun pdgesv
   N=2048, g=32, p=2, q=4, t(sec)=10.098798074, speed(MFlops)=1701.179592
