GraphBLAS Pointers
Notation:

if you’re new to GraphBLAS, check out these pointers first

theoryfocused

implementationfocused

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

graphblasalgorithms  A library of algorithms written using pythongraphblas
Generic
Traversals, maxflow, and shortest paths
Connected components
Triangle counting, ktruss, clustering coefficient, etc.
Contextfree path querying (CFPQ)
Other
Presentations
Overviews on GraphBLAS and linear algebrabased 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 algebrabased 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, p81113)
 This book is currently the latest detailed reference on semiringbased 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 semiringbased generalization of shortest path problem. The mathematical foundations of semiringbased 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” (p1719) provides a matrixbased framework for the algebraic path problem which is highly relevant to GraphBLAS.
 The table on pages 5859 contains 29 different semirings and respective applied problems.
Implementations
Core implementations
Other implementations
Wrappers
 Python wrappers:

pygraphblas: a Python wrapper for SuiteSparse:GraphBLAS aiming to provide a Pythonic API

pythongraphblas: a Python wrapper for SuiteSparse:GraphBLAS with highlevel syntax that adheres closely to the mathematical abstractions of GraphBLAS with natural syntax for masks, transpose descriptors, etc.

daskgrblas: mirrors the pythongraphblas API and uses dask for outofcore or distributed computation

PyGB: a Python wrapper for GBTL

SuiteSparseGraphBLAS.jl: a Julia wrapper for SuiteSparse:GraphBLAS

rustgraphblas: a Rust wrapper

graphblasjavanative: a Java wrapper
 MATLAB wrapper: builtin for SuiteSparse:GraphBLAS
 Docker containers on Docker Hub
See also the ongoing design of the GraphBLAS C++ API and its rgri
reference implementation.

Graphony: a Python library for doing highperformance 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.

RedisGraph

Graphulo (built for Apache Accumulo)

D4M

pggraphblas: Postgres extension for using GraphBLAS

Combinatorial BLAS (CombBLAS): “An extensible distributedmemory 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 workinprogress distributed C++11 GraphBLAS implementation)
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

Serverside 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/GraphBLASPointers.