https://github.com/tnas/reordering-library
Parallel Algorithms for Sparse Matrices Reordering
https://github.com/tnas/reordering-library
algorithms matrix parallel reordering sparse
Last synced: 17 days ago
JSON representation
Parallel Algorithms for Sparse Matrices Reordering
- Host: GitHub
- URL: https://github.com/tnas/reordering-library
- Owner: tnas
- Created: 2017-02-15T14:34:07.000Z (about 8 years ago)
- Default Branch: master
- Last Pushed: 2018-01-02T14:56:56.000Z (over 7 years ago)
- Last Synced: 2025-04-09T23:52:46.840Z (17 days ago)
- Topics: algorithms, matrix, parallel, reordering, sparse
- Language: Fortran
- Homepage:
- Size: 67.5 MB
- Stars: 5
- Watchers: 1
- Forks: 5
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
## Non-Specultive Data-Driven Parallelizations of Irregular Algorithms for Sparse Matrices Reordering
This project aims the parallelization of some algorithms for the bandwidth and wavefront reduction problems.
The related algorithms are:
* Reverse Cuthill McKee - RCM (Bandwidth Reduction)
* Sloan (Wavefront Reduction)### Dependencies
On linux, execute the command to install libraries used by the program:
sudo apt-get install cmake libboost-all-dev gfortran libblas-dev### Running
./reordering-library -m <path of .mtx file> -a <algorithm> -p <number of threads> -b <percent of chunk>
<algorithm>* 0: Serial RCM
* 1: Serial Sloan
* 2: HSL RCM
* 3: HSL Spectral
* 4: HSL Sloan
* 5: Unordered RCM
* 6: Leveled RCM
* 7: Bucket RCM
* 8: Relaxed Order Sloan
* 9: Boost RCM
* 10: Boost Sloan
* 11: Logical Bag Sloan
* 12: Shrinked RCM
<percent of chunk>* It is recommended the value of 0.5.
Example:
./reordering-library -m ./Matrices/rail_5177.mtx -a 5 -p 4 -b .5* In this example, the matrix rail_5177 is processed by the Unordered RCM algorithm. It is executed with 4 threads.
### Profiling
valgrind --leak-check=yes myprog arg1 arg2* For memory check, Valgrind has been used.
valgrind --tool=callgrind program [program_options]* For performance profiling, Callgrind has been used.
kcachegrind callgrind.out.XXX* For graphical performance visualization, KCachegrind has been used. The file callgrind.out.XXX is yielded by Callgrind, and XXX is the process identifier.