GraphBLAS Pointers
Notation:
-
if you’re new to GraphBLAS, check out these pointers first
-
theory-focused
-
implementation-focused
-
mix of theory and implementation
-
detailed specification
Selected readings and presentations
GraphBLAS design papers
Tutorials
Specifications
-
The GraphBLAS C API Specification, v2.0.0 by Benjamin Brock, Aydın Buluç, Timothy Mattson, Scott McMillan, and José Moreira
-
The GraphBLAS C API Specification, v1.3.0 by Aydın Buluç, Tim Mattson, Scott McMillan, José Moreira, Carl Yang
-
Introduction to GraphBLAS 2.0 (GrAPL @ IPDPS 2021) by Benjamin Brock et al.
-
SuiteSparse:GraphBLAS User Guide by Tim Davis
Algorithms
-
LAGraph – A library of algorithms for GraphBLAS, similar to LAPACK for BLAS
-
graphblas-algorithms - A library of algorithms written using python-graphblas
Generic
Traversals, max-flow, and shortest paths
Connected components
Triangle counting, k-truss, clustering coefficient, etc.
Context-free path querying (CFPQ)
Other
Presentations
Overviews on GraphBLAS and linear algebra-based graph processing
Books
-
Graph Algorithms in the Language of Linear Algebra (SIAM, 2011) by Jeremy Kepner and John R. Gilbert
- This is the best reference on the topic of linear algebra-based graph processing. However, note that GraphBLAS effort was not yet started when this book was written. Therefore, there are some differences between the notation of GraphBLAS documents and the one used in this book.
-
Mathematics of Big Data: Spreadsheets, Databases, Matrices, and Graphs (MIT Press, 2018) by Jeremy Kepner and Hayden Jananthan
- An updated version of paper Mathematical Foundations of the GraphBLAS is reprinted in this book (Chapter 6, p81-113)
- This book is currently the latest detailed reference on semiring-based computations, including graph algorithms. It also covers many other topics such as associative arrays. The book is not intended to be a GraphBLAS reference, but it can be used for providing a background in linear algebra (see e.g. Chapter 8, “Visualizing the Algebra of Associative Arrays”).
-
Path Problems in Networks (Morgan & Claypool Publishers, 2010) by John S. Baras and George Theodorakopoulos.
- This book is about the algebraic path problem – a semiring-based generalization of shortest path problem. The mathematical foundations of semiring-based graph analysis are described. Basic ideas to create new semirings to solve new problems are described.
- The section 3.1 “Alternative viewpoints: paths and matrices” (p17-19) provides a matrix-based framework for the algebraic path problem which is highly relevant to GraphBLAS.
- The table on pages 58-59 contains 29 different semirings and respective applied problems.
Implementations
Core implementations
Other implementations
Wrappers
See also the ongoing design of the GraphBLAS C++ API and its rgri
reference implementation.
-
Graphony: a Python library for doing high-performance graph analysis using the GraphBLAS over sparse and hypersparse data sets. It uses pygraphblas to store graph data in sparse GraphBLAS matrices and node and edge properties in PostgreSQL.
-
FalkorDB: a graph database that uses GraphBLAS under the hood for its sparse adjacency matrix graph.
- Note: Several developers of FalkorDB originally worked on RedisGraph which was also powered by GraphBLAS.
-
Graphulo (built for Apache Accumulo)
-
D4M
-
pggraphblas: Postgres extension for using GraphBLAS
-
Combinatorial BLAS (CombBLAS): “An extensible distributed-memory library offering a small but powerful set of linear algebraic operations specifically targeting graph analytics.” Influences the development of GraphBLAS.
- Viral B. Shah, Alan Edelman, Stefan Karpinski, Jeff Bezanson, Jeremy Kepner: Novel algebras for advanced analytics in Julia, HPEC 2013
- A Hybrid GraphBLAS in C++11: specification, design, implementation, and performance (a work-in-progress distributed C++11 GraphBLAS implementation)
FalkorDB
RedisGraph
Graphulo
-
Graphulo: Graph Analytics in Apache Accumulo (Accumulo Summit 2016) by Vijay Gadepally, Timothy Weale, Dylan Hutchison, Jeremy Kepner
-
Interacting with Accumulo and Graphulo using Julia/Python D4M (Accumulo Summit 2018) by Lauren Milechin, Hayden Jananthan, Vijay Gadepally, Jeremy Kepner
-
Accumulo and the Convergence of Machine Learning, Big Data, and Supercomputing (Accumulo Summit 2017) by Jeremy Kepner
-
Server-side Sparse Matrix Multiply in the Accumulo Database (HPEC 2015) by Dylan Hutchison, Jeremy Kepner, Vijay Gadepally, Adam Fuchs
-
Using D4M for rapid prototyping of analytics for Apache Accumulo (Accumulo Summit 2015) by Vijay Gadepally, Lauren Edwards, Jeremy Kepner
-
Graph Analytics expressed in GraphBLAS (2014) by Jeremy Kepner, Vijay Gadepally, Ben Miller
You can also find many papers, posters, and presentations in the Accumulo repository.
Events
News, interviews, popular science
Typesetting
The nicematrix
LaTeX package can be used to typeset block matrices.
Source code
The source of this page is available at https://github.com/GraphBLAS/GraphBLAS-Pointers.