Coder Social home page Coder Social logo

rainyuxuan / hdagg-benchmark Goto Github PK

View Code? Open in Web Editor NEW

This project forked from behroozzare/hdagg-benchmark

0.0 0.0 0.0 232 KB

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

License: GNU General Public License v3.0

Shell 0.78% C++ 92.94% C 0.59% CMake 5.69%

hdagg-benchmark's Introduction

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

hdagg-benchmark's People

Contributors

behroozzare avatar rainyuxuan avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.