Skip to content

Hegden/hsseigen

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

222 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Hsseigen

Implementation of the 'divide and conquer' algorithm for Superfast HSS eigensolvers.

  • Efficient computation of all eigenvalues of symmetric Hierarchically Semiseparable (HSS) matrices.
  • A shared-memory parallel algorithm and the corresponding implementation of the SuperDC eigensolver.
  • Optimized the original SuperDC algorithm to reduce the storage requirement from O($N^2$) to O (N) in case of banded matrices.

Keywords

  • Symmetric eigenvalue problems.
  • Hierarchically semi-separable matrix or HSS matrix.
  • Divide-and-conquer.
  • Shared memory architecture.

Authors

  • Anonymous

Prerequisites

  1. Install lapack, blas OR openblas.

$\rightarrow$ On an ubuntu machine sudo apt-get install libblas-dev liblapack-dev liblapacke-dev libatlas-base-dev libopenblas-dev.

$\rightarrow$ Links to install lapack, blas and openblas on other systems.

  1. Install intel icpx compiler.

$\rightarrow$ Instructions to install icpx can be found here intel-website.

  1. Install GNU make and gcc compiler.

CodeSpaces Support

  1. To begin working on the project with all the pre-requsites satisfied, fork the repository and begin working in Code Spaces.

  2. After forking the repository, click on the <> Code button.

  3. You should see option to create code space on master.

  4. Click on the Create code space on master button and you will be redirected to a working environment.

Usage

Compilation

  1. In the terminal write the command make for compiling the serial version.

  2. In the terminal write the command make PARALLEL=1 for compiling the shared memory version.

  3. A binary called Test is created in the root directory of the project.

How to run

  1. After compiling the code use ./Test <filename> <matrix_size> <diagblock_size> <Band2HSS(pass 2) or Mat2HSSsym(pass 1)> <bandwidth> to run the code.

  2. After compiling the code use ./Test <filename> <matrix_size> <diagblock_size> <Band2HSS(pass 2) or Mat2HSSsym(pass 1)> <bandwidth> <no of processor> to run the code.

Explanation of arguments.

Syntax $~~~~~~~~~~~~~~~~~~~~~~~~~$ Description
<filename> path to the input file containing hss matrix
<matrix_size> Size of square hss matrix (can be infered from filename)
<diagblock_size> Block size to split into hss structure (less than matrix size and typically 8 or 16)
<Band2HSS(pass 2) or Mat2HSSsym(pass 1)> Whether input matrix is banded (pass 2) or not (pass 1) (can be infered from file name)
<bandwidth> Half bandwidth of input matrix (can be infered from file name)
<no of processor> The number of cores you want to run the shared-memory version on.

Drive link to input data:

  1. You can download HSS structured test matrices here

Miscellaneous

  1. We have tested the project using openblas, lapack, and intel toolchains

About

Implementation of the 'divide' part of the algorithm for Superfast HSS Divide-Conquer Algorithm.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors