GithubHelp home page GithubHelp logo

yowgf / delta-stepping Goto Github PK

View Code? Open in Web Editor NEW
2.0 1.0 1.0 2.31 MB

Parallel Delta-Stepping SSSP algorithm with the bucket fusion technique invented by Zhang et al. (CGO 2020). Implemented in C++, using the openMP parallelization API.

Makefile 22.16% C++ 65.97% Shell 1.05% Jupyter Notebook 10.81%
parallel-programming sssp graph-algorithms

delta-stepping's Introduction

Delta-Stepping

Parallel Delta-Stepping SSSP algorithm with the bucket fusion technique invented by Zhang et al. (CGO 2020). Implemented in C++, using OpenMP.

Disclaimer

The implementation in this repo is not stable! The algorithms might work for small graph samples, but CRASH under larger loads.

Algorithm overview

Delta-stepping is an algorithm originally suggested by Meyer et al. in 1998 as an alternative to Dijkstra's purely sequential approach to SSSP. The central idea is that of priority coarsening. That is, one can give up on strict ordering, without making the algorithm incorrect.

SSSP tries to calculate the distances of all nodes to a fixed source node. During Delta-stepping, to each node we attribute a ordering "category", instead of a fixed position. More concretely, each node is put in a bucket of width delta, according to its distance to the source node. For example, nodes with distance 0 to 1000 to the source node can all be placed in the bucket (read category) 0, if we take a delta of 1000.

This observation opens opportunity to parallelize the code. Specifically, we can work concurrently with different nodes of the same bucket. In practice, the algorithm can achieve significant speedups over Dijkstra's.

Compile instructions

To compile the code, just type make in the project's main directory. The executable file delta-stepping should be created in the folder build. From there, it should be intuitive how to run the algorithm.

The main implementation of the algorithm can be found in the file lib/main/appliance/Alg/delta-stepping.cpp.

delta-stepping's People

Contributors

yowgf avatar

Stargazers

 avatar  avatar

Watchers

 avatar

Forkers

hilam8899

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.