Graph algorithms have long taken advantage of the idea that a graph can be represented as a matrix, and graph operations can be performed as linear transformations and other linear algebraic operations on sparse matrices.: xxv–xxvi For example, matrix-vector multiplication can be used to perform a step in a breadth-first search.: 32–33
Originally motivated by the need for standardization in graph analytics, similar to its namesake BLAS, the GraphBLAS standard has also begun to interest people outside the graph community, including researchers in machine learning, and bioinformatics. GraphBLAS implementations have also been used in high-performance graph database applications such as RedisGraph.
The GraphBLAS specification has been in development since 2013, and has reached version 2.1.0 as of December 2023. While formally a specification for the C programming language, a variety of programming languages have been used to develop implementations in the spirit of GraphBLAS, including C++, Java, and Nvidia CUDA.
There are currently two fully-compliant reference implementations of the GraphBLAS specification. Bindings assuming a compliant specification exist for the Python, MATLAB, and Julia programming languages.
All the examples above satisfy the following two conditions in their respective domains:
While the GraphBLAS specification generally allows significant flexibility in implementation, some functionality and implementation details are explicitly described:
"GraphBLAS". graphblas.org. Retrieved 2021-12-04. https://graphblas.org/
"GraphBLAS: A Programming Specification for Graph Analysis". www.sei.cmu.edu. Retrieved 2019-11-08. https://www.sei.cmu.edu/research-capabilities/all-work/display.cfm?customel_datapageid_4050=6501
Pereira, Juliana. "High-Performance Graph Algorithms Using Linear Algebra". Central European University, Department of Network and Data Science. Retrieved 13 February 2020. https://networkdatascience.ceu.edu/article/2020-01-15/high-performance-graph-algorithms-using-linear-algebra
"People of ACM - Tim Davis". acm.org. Association for Computing Machinery. Retrieved 8 November 2019. https://www.acm.org/articles/people-of-acm/2019/tim-davis
Mattson, Tim; Gabb, Henry. "Graph Analytics: A Foundational Building Block for the Data Analytics World". Tech.Decoded. Intel. Retrieved 14 February 2020. https://techdecoded.intel.io/big-picture/graph-analytics-a-foundational-building-block-for-the-data-analytics-world/#gs.watx6b
Kepner, Jeremy; Gilbert, John (2011). Graph Algorithms in the Language of Linear Algebra. Philadelphia, PA, USA: Society for Industrial and Applied Mathematics. ISBN 9780898719901. Retrieved 8 November 2019. 9780898719901
Kepner, Jeremy; Gilbert, John (2011). Graph Algorithms in the Language of Linear Algebra. Philadelphia, PA, USA: Society for Industrial and Applied Mathematics. ISBN 9780898719901. Retrieved 8 November 2019. 9780898719901
Vu, Linda. "GraphBLAS: Building Blocks for High Performance Graph Analytics". crd.lbl.gov. Retrieved 8 November 2019. In subsequent years, various research collaborations created a variety of BLAS libraries for different tasks. Realizing the benefits to users, vendors also worked with researchers to optimize these building blocks to run on their hardware. GraphBLAS is essentially a continuation of this BLAS heritage. https://crd.lbl.gov/news-and-publications/news/2017/graphblas-building-blocks-for-high-performance-graph-analytics/
Kepner, Jeremy; Kumar, Manoj; Moreira, José; Pattnaik, Pratap; Serrano, Mauricio; Tufo, Henry (12–14 September 2017). "Enabling massive deep neural networks with the GraphBLAS". 2017 IEEE High Performance Extreme Computing Conference (HPEC). pp. 1–10. arXiv:1708.02937. Bibcode:2017arXiv170802937K. doi:10.1109/HPEC.2017.8091098. ISBN 978-1-5386-3472-1. S2CID 3632940. In this paper we have shown that the key [deep neural network] computations can be represented in GraphBLAS, a library interface defined for sparse matrix algebra. Furthermore, we have shown that the key step of forward propagation, with ReLU as the nonlinearity, can be performed much more efficiently with GraphBLAS implementation as compared to BLAS implementation when the weight matrices are sparse. 978-1-5386-3472-1
Vu, Linda (12 March 2018). "A Game Changer: Metagenomic Clustering Powered by Supercomputers". Lawrence Berkeley National Laboratory News Center. Retrieved 10 November 2019. https://newscenter.lbl.gov/2018/03/12/metagenomic-clustering-powered-by-supercomputers/
"RedisGraph". Redis Labs. Retrieved 11 November 2019. https://redislabs.com/redis-enterprise/redis-modules/redis-enterprise-modules/redisgraph/
Anadiotis, George (24 October 2019). "Redis Labs goes Google Cloud, Graph, and other interesting places". ZDNet. Retrieved 8 November 2019. https://www.zdnet.com/article/redis-labs-goes-google-cloud-graph-and-other-interesting-places/
"Redis Labs Introduces RedisGraph and Streams to Support a Zero Latency Future". DevOps.com. 16 November 2018. Retrieved 10 November 2019. Built on GraphBLAS, an open-source library that employs linear algebra including matrix multiplication, RedisGraph can complete calculations up to 600 times faster than any alternate graph solution according to benchmark results. https://devops.com/redis-labs-introduces-redisgraph-and-streams-to-support-a-zero-latency-future/
Woodie, Alex (28 September 2018). "Redis Speeds Towards a Multi-Model Future". Datanami. Retrieved 10 November 2019. One of the newest modules to emerge from Redis Labs turns the key value store into a graph database. The module, called RedisGraph, will be based on the GraphBLAS technology that emerged out of academia and industry. https://www.datanami.com/2018/09/28/redis-speeds-towards-a-multi-model-future/
Dsouza, Melisha (20 November 2018). "RedisGraph v1.0 released, benchmarking proves its 6-600 times faster than existing graph databases". Packt. Retrieved 10 November 2019. RedisGraph is a Redis module that adds a graph database functionality to Redis. RedisGraph delivers a fast and efficient way to store, manage and process graphs, around 6 to 600 times faster than existing graph databases. RedisGraph represents connected data as adjacency matrices and employs the power of GraphBLAS which is a highly optimized library for sparse matrix operations. https://hub.packtpub.com/redisgraph-v1-0-released-benchmarking-proves-its-6-600-times-faster-than-existing-graph-databases/
Mattson, Tim; Bader, David; Berry, Jon; Buluç, Aydin; Dongarra, Jack; Faloutsos, Christos; Feo, John; Gilbert, John; Gonzalez, Joseph; Hendrickson, Bruce; Kepner, Jeremy; Leiserson, Charles; Lumsdaine, Andrew; Padua, David; Poole, Stephen; Reinhardt, Steve; Stonebraker, Mike; Wallach, Steve; Yoo, Andrew (10–12 September 2013). "Standards for graph algorithm primitives". 2013 IEEE High Performance Extreme Computing Conference (HPEC). pp. 1–2. arXiv:1408.0393. doi:10.1109/HPEC.2013.6670338. ISBN 978-1-4799-1365-7. S2CID 12099965. It is our view that the state of the art in constructing a large collection of graph algorithms in terms of linear algebraic operations is mature enough to support the emergence of a standard set of primitive building blocks. This paper is a position paper defining the problem and announcing our intention to launch an open effort to define this standard. 978-1-4799-1365-7
Brock, Benjamin; Buluç, Aydın; Kimmerer, Raye; Kitchen, Jim; Kumar, Manoj; Mattson, Timothy; McMillan, Scott; Moreira, José; Pelletier, Michel; Welch, Erik. "The GraphBLAS C API Specification: Version 2.1.0" (PDF). Retrieved 22 December 2023. https://graphblas.org/docs/GraphBLAS_API_C_v2.1.0.pdf
"GraphBLAS Template Library (GBTL)". GitHub.com. Retrieved 8 November 2019. https://github.com/cmu-sei/gbtl
"Graphulo: Graph Processing on Accumulo". graphulo.mit.edu. Retrieved 8 November 2019. http://graphulo.mit.edu
"GraphBLAST". GitHub.com. Retrieved 8 November 2019. https://github.com/gunrock/graphblast
Davis, Timothy. "SuiteSparse:GraphBLAS". Retrieved 11 November 2019. SuiteSparse:GraphBLAS is a full implementation of the GraphBLAS standard (graphblas.org), which defines a set of sparse matrix operations on an extended algebra of semirings using an almost unlimited variety of operators and types. http://faculty.cse.tamu.edu/davis/GraphBLAS.html
Moreira, Jose; Horn, Bill. "ibmgraphblas". GitHub.com. Retrieved 19 November 2019. https://github.com/IBM/ibmgraphblas
Pelletier, Michel. "GraphBLAS for Python". GitHub.com. Retrieved 11 November 2019. https://github.com/michelp/pygraphblas
Davis, Timothy. "SuiteSparse:GraphBLAS". Retrieved 11 November 2019. Now with OpenMP parallelism and a MATLAB interface http://faculty.cse.tamu.edu/davis/GraphBLAS.html
Mehndiratta, Abhinav. "GraphBLAS Implementation". Google Summer of Code Archive. Retrieved 11 November 2019. https://summerofcode.withgoogle.com/archive/2019/projects/5106075190165504/
Mehndiratta, Abhinav (7 June 2019). "An introduction to GraphBLAS". GSoC'19 Blog. Retrieved 11 November 2019. https://abhinavmehndiratta.github.io/2019-06-07/an-introduction-to-graphblas
Kepner, Jeremy; Aaltonen, Peter; Bader, David; Buluç, Aydın; Franchetti, Franz; Gilbert, John; Hutchison, Dylan; Kumar, Manoj; Lumsdaine, Andrew; Meyerhenke, Henning; McMillan, Scott; Moreira, José; Owens, John D.; Yang, Carl; Zalewski, Marcin; Mattson, Timothy (13–15 September 2016). "Mathematical foundations of the GraphBLAS". 2016 IEEE High Performance Extreme Computing Conference (HPEC). pp. 1–9. arXiv:1606.05790. Bibcode:2016arXiv160605790K. doi:10.1109/HPEC.2016.7761646. ISBN 978-1-5090-3525-0. S2CID 3654505. 978-1-5090-3525-0
For additional mathematical background, see Kepner, Jeremy; Jananthan, Hayden (17 July 2018). Mathematics of Big Data: Spreadsheets, Databases, Matrices, and Graphs. The MIT Press. pp. 81–168. ISBN 978-0262038393. Retrieved 10 November 2019. 978-0262038393
Kepner, Jeremy; Aaltonen, Peter; Bader, David; Buluç, Aydın; Franchetti, Franz; Gilbert, John; Hutchison, Dylan; Kumar, Manoj; Lumsdaine, Andrew; Meyerhenke, Henning; McMillan, Scott; Moreira, José; Owens, John D.; Yang, Carl; Zalewski, Marcin; Mattson, Timothy (13–15 September 2016). "Mathematical foundations of the GraphBLAS". 2016 IEEE High Performance Extreme Computing Conference (HPEC). pp. 1–9. arXiv:1606.05790. Bibcode:2016arXiv160605790K. doi:10.1109/HPEC.2016.7761646. ISBN 978-1-5090-3525-0. S2CID 3654505. 978-1-5090-3525-0
Brock, Benjamin; Buluç, Aydın; Kimmerer, Raye; Kitchen, Jim; Kumar, Manoj; Mattson, Timothy; McMillan, Scott; Moreira, José; Pelletier, Michel; Welch, Erik. "The GraphBLAS C API Specification: Version 2.1.0" (PDF). Retrieved 22 December 2023. https://graphblas.org/docs/GraphBLAS_API_C_v2.1.0.pdf
Brock, Benjamin; Buluç, Aydın; Kimmerer, Raye; Kitchen, Jim; Kumar, Manoj; Mattson, Timothy; McMillan, Scott; Moreira, José; Pelletier, Michel; Welch, Erik. "The GraphBLAS C API Specification: Version 2.1.0" (PDF). Retrieved 22 December 2023. https://graphblas.org/docs/GraphBLAS_API_C_v2.1.0.pdf
Brock, Benjamin; Buluç, Aydın; Kimmerer, Raye; Kitchen, Jim; Kumar, Manoj; Mattson, Timothy; McMillan, Scott; Moreira, José; Pelletier, Michel; Welch, Erik. "The GraphBLAS C API Specification: Version 2.1.0" (PDF). Retrieved 22 December 2023. https://graphblas.org/docs/GraphBLAS_API_C_v2.1.0.pdf
Brock, Benjamin; Buluç, Aydın; Kimmerer, Raye; Kitchen, Jim; Kumar, Manoj; Mattson, Timothy; McMillan, Scott; Moreira, José; Pelletier, Michel; Welch, Erik. "The GraphBLAS C API Specification: Version 2.1.0" (PDF). Retrieved 22 December 2023. https://graphblas.org/docs/GraphBLAS_API_C_v2.1.0.pdf
Brock, Benjamin; Buluç, Aydın; Kimmerer, Raye; Kitchen, Jim; Kumar, Manoj; Mattson, Timothy; McMillan, Scott; Moreira, José; Pelletier, Michel; Welch, Erik. "The GraphBLAS C API Specification: Version 2.1.0" (PDF). Retrieved 22 December 2023. https://graphblas.org/docs/GraphBLAS_API_C_v2.1.0.pdf