/*------------------------------------------------------------*/
/*   CAPSS: A Cartesian Parallel Sparse Solver                */
/*   Padma Raghavan					      */
/*   107 Ayres Hall 					      */
/*   Department of Computer Science			      */
/*   The Univ. of Tennessee				      */
/*   Knoxville, TN 37996-1301				      */
/*   (423)974-8992 					      */
/*   Fax: (423)974-4404					      */
/*   E-mail: padma@cs.utk.edu				      */
/*------------------------------------------------------------*/

CAPSS is a  fully parallel package to solve a sparse linear system of the 
form Ax =b on a message passing multiprocessor using matrix factorization.
It is assumed that the matrix A is  symmetric positive definite with
the unknowns  associated with an embedding in Euclidean space. Such systems 
arise from finite-difference or finite-element methods and in such cases, each 
unknown is associated with a mesh point whose coordinates are known.
CAPSS  consists of two executables Map and  Solve; Map runs on a remote
host and partitions data for parallel solution using Solve on 
the Intel Paragon running OSF.

This release is meant for the Intel Paragon  machine;
the code has been compiled and tested on an Intel Paragon with 1-128 
processors. The code is written in C with message passing extensions.

Permission to use and distribute this software is granted under condition
that its use is acknowledged; the author would like to receive your 
comments.  This software is provided AS IS with no warranties of any kind. 

Installation details:

The tar file contains three subdirectories Doc, Src and Test; the directory 
Src contains source code for single and double precision versions.
The directory Test contains some sample data files.  
The directory Doc contains a user guide.

Other comments:

1. The code has a very rudimentary interface at present. Map creates as many
files as the number of processors and each processor reads that in to
solve the system. Obviously this is not suitable for use in an application.
I am willing to write an interface suitable for your application if
the code is of interest. 

2. The solver can use  ``selective inversion'' to replace triangular solution
by matrix vector multiplications. This is highly desirable if the code
is to be used to factor once and solve for many righ hand side vectors.
To see what this does to reduce the solve times: change
MANY_RHS to 1 in the file n_fact.c. The factorization time will
increase slightly (this will correspond to a one time factor +
selective inversion). The solve time will go down dramatically.
Once again, using this feature requires resolving the interface issues
-- if there is interest,  I will be happy to write an interface
suitable for your application.


3. For the model problem and test runs, I would suggest using
something like a 600X600 grid with 128 processors.


4. The dir Src contains S_Src : single precision, C float.
               and      D-Src : double precision, C double.


5. Compile by doing make Map to produce executable that will
   create data files (see examples in  Doc)

6. make Solve and run it as:
   Solve -pn partname -sz XXX infile outfile alpha  1
   alpha : is a value between 0 and 0.5. Please pick a value close
   to 0.5 if the problem is regular otherwise one in the range  0.3-0.4.

  Statistics are in outfile.stat which can be printed
  out using enscript -2r.
  The Minimum column is the least time for a particular
  step at any processor.
  The Maximum column is the most  time for a particular
  step at any processors.
  The total column is the total  time  for a particular
  step over all  processors.
  The Maximum time corresponds to the parallel time.
  The breakdown is very detailed. The total time to
  factor is N-factorization (and includes both the
  distributed phase and the local phase).
  Similarly for Ordering and S(symbolic) factorization.
  The time for Solve includes both forward and back solve
  and the local and distributed phases of each.
   

7. Please send me mail with any problems/questions. 
   Padma Raghavan
   107 Ayres Hall 
   Department of Computer Science
   The Univ. of Tennessee
   Knoxville, TN 37996-1301
   (423)974-8992 
   Fax: (423)974-4404
   E-mail: padma@cs.utk.edu
 
