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.
- Symmetric eigenvalue problems.
- Hierarchically semi-separable matrix or HSS matrix.
- Divide-and-conquer.
- Shared memory architecture.
- Anonymous
- Install lapack, blas OR openblas.
sudo apt-get install libblas-dev liblapack-dev liblapacke-dev libatlas-base-dev libopenblas-dev.
- Install intel icpx compiler.
- Install GNU make and gcc compiler.
-
To begin working on the project with all the pre-requsites satisfied, fork the repository and begin working in Code Spaces.
-
After forking the repository, click on the
<> Codebutton. -
You should see option to create code space on master.
-
Click on the
Create code space on masterbutton and you will be redirected to a working environment.
-
In the terminal write the command
makefor compiling the serial version. -
In the terminal write the command
make PARALLEL=1for compiling the shared memory version. -
A binary called
Testis created in the root directory of the project.
-
After compiling the code use
./Test <filename> <matrix_size> <diagblock_size> <Band2HSS(pass 2) or Mat2HSSsym(pass 1)> <bandwidth>to run the code. -
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.
| 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. |
- You can download HSS structured test matrices here
- We have tested the project using openblas, lapack, and intel toolchains