Skip to content

HDagg's source code used to evaluate the paper "HDagg: Hybrid Aggregation of Loop-carried Dependence Iterations in Sparse Matrix Computations."

License

Notifications You must be signed in to change notification settings

learning-chip/HDagg-benchmark

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

APM example workflow example workflow

HDagg

Hybrid Aggregation of Loop-carried Dependence Iterations in Sparse Matrix Computations (HDagg) is a DAG partitioning/scheduling algorithm used for making sparse matrix loops parallel. It can be used within code generators or libraries. It is integrated into Sympiler framework. This repository is the opensource reference implementation of the IPDPS 2022 paper. For more information see Sympiler documents.

Files

  • src/: source code
  • cmake/ and CMakeLists.txt: CMake files
  • input/: input folder where matrices reside
  • output/: output folder to store data
  • demo/: example folder to show HDagg usage
  • scripts/: Python and Bash scripts for generating and processing results

Install

Prerequisites

First following items should be installed:

  • CMake
  • C++ compiler (GCC, ICC, or CLang)
  • METIS (optional) dependency for running the demo efficiently and is handled by the cmake. If you have installed the package using a packet manager (e.g., apt of homebrew), CMake should be able to detect it. Otherwise, it installs METIS from source internally.
  • OpenMP (optional) for running some parts of the code in parallel. If you use GCC/ICC then OpenMP should be supported natively. If you use Apple CLang, you probably need to install OpenMP using homebrew install libomp. You can
  • also install LLVM usng brew install llvm which support OpenMP natively.

MKL

The cmake currently supports mkl library inside oneapi. To use it, please provide $MKLROOT environmental variable using export MKLROOT=<your-address>/make/latest.

  • For example: export MKLROOT=/opt/intel/oneapi/mkl/latest/

Relative Works

You can switch the HDAGG_WITH_SPMP and HDAGG_WITH_DAGP options in CMakeLists.txt to add the SpMP or DAGP. To use these tools, after installation, provide their addresses using $SPMPROOT and $DAGPROOT.

  • For example: export SPMPROOT=/home/behrooz/SpMP

Build

Then build HDagg, using the following:

mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Release ..
make

You can always set -DCMAKE_CXX_COMPILER= and -DCMAKE_C_COMPILER= to use a different compiler. For example: cmake -DCMAKE_CXX_COMPILER=/usr/local/Cellar/gcc\@9/9.3.0_2/bin/g++-9 -DCMAKE_C_COMPILER=/usr/local/Cellar/gcc\@9/9.3.0_2/bin/gcc-9 ..

Run

For each executable file the inputs is as follows: ./<executable_address> <matrix_address> <num_threads> for example: ./build/demo/HDAGG_SpTRSV input/apache2.mtx 10

About

HDagg's source code used to evaluate the paper "HDagg: Hybrid Aggregation of Loop-carried Dependence Iterations in Sparse Matrix Computations."

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C++ 92.9%
  • CMake 5.7%
  • Other 1.4%