GraphBLAS / graphblas-api-cpp

GraphBLAS C++ API Specification.
https://graphblas.org/graphblas-api-cpp/
10 stars 1 forks source link
graphs

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

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}
}