SPLAS (Sparse Linear Algebra Subroutines)

Questions/comments: Thomas Heine, Serguei Patchkovskii


[Home] [FAQ] [Publications/References] [Copyright] [Downloads]

SPLAS

Before you start:
Before you can use SPLAS you need to make sure that you use the correct accuracy for, and that you provide matrices in the correct format.

Accuracy:
Check accuracy.f90. The necessary parameters are self-explaining. Adjust the accuracy assignments to your program.

Matrix format:
Check spla_type.f90. The SPLAS sparse matrix (type SparseMatrix) format differs from the common ones in a way that it treats each row individually, as a sparse vector (type SparseVec). This allows reallocation of memory for each individual row during execution. Furthermore, it gives straight-forward access to any matrix row, allowing simple parallelization techniques, also when thinking to proceed to distributed memory parallelization strategies.

The explicit definitions of SparseVec and SparseMat are given in spla_type.f90.

Integrating SPLAS into your code:
Include the files spla.f90, spla_tools.f90, spla_types.f90 in your package. Make sure that the definitions in accuracy.f90 are met, and possibly include accuracy.f90 as well. Compile the code and hope that it works :^)


Organization of this index:

Content of this package
Hardware requirements
Compiling the package
Running the test program


Content of this package:

 
file		SPLAS_UG
for		A User Guide
		This user guide provides the basic information on how
		to call the individual SPLAS subroutines in a computer
		program.
lang		ASCII English text
 
file		Makefile
for		Compiling the library and runing the library test suites.
lang		make-GNU syntax 
file		SPLA_TEST.x (created after the compilation of the package)
for		Run the test suit
lang		binary executable
file		defaults
for		Run test suit 1 doing what?
lang		ksh syntax 
file		accuracy.f90
for		Fortran file containing the definitions  
	        necessary to set up the accuracy of parameters and the precision.
lang		Fortran 90/95
file		spla_types.f90
for		Definition of the variables (sparse vectors and matrices)
		used in the routines.
lang		Fortran 90/95
file		spla_tools.f90
for		Contains tools to be used in the splas library routines
lang		Fortran 90/95
file		spla.f90
for		Contain the main routines of the SPLAS library
lang		Fortran 90/95
file		spla_test.f90
for		Contain the main routines of the SPLAS library
lang		Fortran 90/95
file		timer.f90
for		Contain the Timing routines
lang		Fortran 90/95


Hardware requirements:

   The SPLAS subroutines are modest in memory consumption as long as no
   full matrix is required (e.g. in a sparse*full matrix subroutine).
   The test suit, however, requires full matrix support and hence significant
   memory. For timing purposes, the reference calculations can be switched off.
   


Compiling the package:

   Compilation requires a Fortran-90 compiler, including support for
   some Fortran-95 extensions. For shared-memory parallel execution,
   OpenMP 2.0 support is required. The testing procedure requires a local
   BLAS installation, if this is not available you need to obtain the dgemm.f
   subroutine.
   Compilation was tested with Intel Fortran 11.0 EM64T Build 20090318, with g95 V0.91 
   and with gfortran, based on gcc 4.3.1.

   1. Edit the F90 and LIBS entries in Makefile, to suit your compiler
   2. Say "make"
   3. Watch the fireworks
   


Running the test program:

   The test program (SPLA_TEST.x) expects the default file, specifying some parameters.
   A sample file is included in the package, which also describes the parameters in detail.
   At runtime, the program asks for an integer number, which gives the matrix dimension in 
   units of 1000.

   For parallel excution using OpenMP it is strongly recommended to use
   guided schedule for parallel loops. The procedure for requesting guided
   schedule should be documented in the compiler manual. On Unix systems,
   on of the commands (depending on your shell)
     OMP_SCHEDULE=GUIDED ; export OMP_SCHEDULE
     setenv OMP_SCHEDULE GUIDED
   is likely to be the correct incantation.