FlashGraph
FlashGraph is a semi-external-memory graph engine that keeps vertex state in RAM and reads edge lists from SSDs through SAFS.
The FAST 2015 design overlaps host computation with I/O. It requests needed edge lists and merges requests for the same or adjacent pages; user tasks consume the SAFS page cache without separate application read buffers. [1]
The programming guide separates run, run_on_vertex and run_on_message. An adjacency-list request is followed by a callback when its data is ready; an inactive vertex can still receive messages. Iteration completion requires both an empty active set and no pending requests. [2]
The public implementation is part of FlashX, alongside the distinct FlashMatrix engine; the repository provides source under Apache-2.0. [3]
Relations
Limitations
- RAM must still accommodate vertex state, the graph index, runtime status and message queues, alongside the page cache. [1]
- Callback execution order is not guaranteed; algorithm authors must preserve vertex-state correctness. [2]
Citations
- Zheng et al. FlashGraph: Processing Billion-Node Graphs on an Array of Commodity SSDs. FAST 2015, pp. 45-58; sections 3.1-3.6, 5.
- FlashX: The FlashGraph User Guide. Vertex program, interaction with other vertices and adjacency-list access.
- FlashX project: source, component boundaries and Apache-2.0 license.
Further reading
Sources & caveats
- Primary-source review, not a reproduced FlashGraph benchmark. Historical performance comparisons are not modern-device guarantees.