Single-Source Shortest Paths

Problem Description

This benchmark computes the shortest path from a source node to all nodes in a directed graph with non-negative edge weights by using a modified near-far algorithm [1]. This program is generated by the IrGL compiler [2].

[1] https://people.csail.mit.edu/jshun/6886-s18/papers/DBGO14.pdf
[2] https://users.ices.utexas.edu/~sreepai/sree-oopsla2016.pdf

Algorithm

The computation is implemented in a delta-stepping based SSSP algorithm. Worklists are created and managed by Pipe.The Pipe statement implements the invocation of a pipeline of kernels each of which produces a worklist for the next kernel.
  Kernel sssp (...) {
    ...
    if (dst.dsitance <= delta)
      Respawn(dst)
    else
      WL.push(dst)
    ...
  }
  Pipe Once {
    Invoke initialize(graph, src)
    Pipe {
      Invoke sssp(graph, curdelta);
      Invoke remove_dups();
      curdelta += DELTA;
    }
  }

Performance

The benchmark is written in CUDA.
Compile as: make
Execute as: test <graphfile>
e.g., test USA-road-d.NY.gr

GraphTime (ms)
rmat22243
USA659

The above performance is observed on a 1733.500 Mhz GeForce GTX 1080 6000 with 8119 MB of main memory.