Skip to content

GraphBLAS/graphblas-api-cpp

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 

Repository files navigation

GraphBLAS C++ Specification

Click here for the most recent HTML draft and most recent PDF draft.

The currently under development GraphBLAS C++ API aims to provide a C++ API for implementing graph algorithms in the language of linear algebra, and is part of the larger GraphBLAS project. The API provides data structures for storing matrices and vectors, as well as a collection of algorithms, such as generalized matrix multiplication, that can be used with custom or pre-defined operators, monoids, and semirings.

The standard document itself can be found in the folder markdown, while minutes for meetings of the GraphBLAS C++ API subcommittee can be found in the folder minutes.

Brief API Example

  // Create a GraphBLAS matrix of size 128 x 128.
  grb::matrix<float> x({128, 128});
  
  // Write to elements along the diagonal.
  for (size_t i = 0; i < 128; i++) {
    x[{i, i}] = i*i;
  }
  
  float sum = 0;
  // Sum up all the elements stored in the matrix.
  for (auto&& [index, value] : x) {
    sum += value;
  }

Libraries

  • rgri is being developed as a reference implementation alongside the API.
  • GBTL has heavily influenced the development of the C++ API, and is also being updated alongside the development of the API.

Citation

To cite the GraphBLAS C++ Specification:

Benjamin Brock, Scott McMillan, Aydın Buluc ̧, Timothy Mattson, and Jose ́ Moreira. GraphBLAS C++ specification. https://github.com/ GraphBLAS/graphblas-api-cpp, 2022.

@misc{graphblascppspec,
  title={Graph{BLAS} {C}++ Specification},
  author={Brock, Benjamin and McMillan, Scott and Bulu\c{c}, Ayd{\i}n and Mattson, Timothy and Moreira, Jos{\'e}},
  howpublished={\url{https://github.com/GraphBLAS/graphblas-api-cpp}},
  volume = {Version 1.0},
  year={2023}
}

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •