Parallel Minimum Spanning Tree Library (Online)

Linxuan Ma, Joseph Wan

Summary

We are going to implement a parallel graph processing library in OpenMP for computing minimum spanning trees dynamically with low-latency graph update. By parallelizing algorithms like Prim's and Boruvka's, we aim to trade strict optimality of the generated MST for performance. As an extension, we plan to implement a CUDA-based feature to generate diagnostic and analytical information on the graph objects.

Background

Minimum spanning tree (MST) is a fundamental problem crucial for tasks like network routing, clustering, and pathfinding. In many real-world applications, graphs are dynamic and experience frequent updates. It is computationally expensive to recompute the MST for every update, yet popular MST algorithms like Prim’s assume a static graph as input. Worse, most existing MST algorithms are sequential and do not scale to benefit from a parallel system. To resolve this problem, our project aims to create a parallel library that handles dynamic graph updates while maintaining a close-to-optimal MST. We will accomplish this by parallelizing standard MST algorithms such as Prim's and Boruvka's using OpenMP.

The primary strategies of this problem that can benefit from parallelism are parallel vertex operations and graph partitioning. In our project, we explore both options by implementing these techniques as generic parallel primitives, which we then specialize into parallelized versions of MST algorithms.

The Challenge

Resources

We will use the GHC and PSC machines to test our shared-memory OpenMP implementations on different numbers of threads. We plan to build the core graph processing library and MST algorithms from scratch using C++.

We are planning to reference the following resources:

Goals (Plan to Achieve)

Goals (Hope to Achieve)

Platform of Choice

We plan to choose OpenMP as our platform. It makes sense because graph processing requires cheap communication and heterogeneous control-flow, so OpenMP’s light-weighted threads are very suitable. We plan on using a shared-memory machine for low communication cost and cache-friendliness.

Schedule