Sample 3 - Thesis kickoff — heavy weight perfect matching on the GPU
Framing the problem, why the sequential auction/Hungarian family stalls, and the target for a GPU implementation.
The thesis is titled "Implementing the Heavy Weight Perfect Matching Algorithm for Bipartite Graphs on the GPU". This first entry sets the scope.
The problem
Given a bipartite graph G = (U ∪ V, E) with edge weights w(u, v), find a perfect matching that maximises total weight. The classical exact solutions — Hungarian / Kuhn–Munkres, and auction-based methods — are inherently sequential in their augmenting-path phase, which is exactly the part that dominates runtime on large sparse instances.
Why GPUs are awkward here
- Augmenting paths are irregular pointer chases: poor coalescing, heavy warp divergence.
- The active frontier shrinks over iterations, so occupancy collapses late in the run.
- Dual price updates are global reductions interleaved with sparse scatter writes.
Plan of attack
- Build a correct CPU baseline (auction algorithm with ε-scaling) to validate against.
- Port the bidding phase first — it is embarrassingly parallel over unmatched vertices.
- Attack the assignment phase with atomics, then compare against a sort-based reduction.
- Profile with Nsight Compute at each step; record occupancy, achieved bandwidth, and warp stall reasons.
Test instances
| Instance family | |U| | Avg degree | Notes |
|---|---|---|---|
| Random sparse | 1e5 | 16 | Uniform weights |
| Power-law | 1e5 | 12 | Heavy hub vertices |
| SuiteSparse | varies | varies | Real-world matrices |
Next entry: the CPU baseline and the first naive CUDA bidding kernel.