GraphBLAS / graphblas-api-cpp

GraphBLAS C++ API Specification.

Home Page:https://graphblas.org/graphblas-api-cpp/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Implement `reduce` algorithm

BenBrock opened this issue · comments

We should implement a reduce algorithm that will reduce a grb::vector to a single value or reduce a grb::matrix to a single value, or vector by row or column.

We had a long discussion in this week's meeting about the API for reduce, and whether to

  1. Default an initial value to T{}, as in std::reduce
  2. Always require an initial value
  3. Default the initial value to grb::monoid_traits<Fn, T>::identity() when the binary operator passed in is a monoid.

At some point we should implement this full algorithm, but for now I am leaving this unimplemented as it is fairly trivial to use std::reduce at the moment, as shown below.

grb::matrix<float> x = ...;
grb::values_view view(x);
float sum = std::reduce(view.begin(), view.end(), float(0), grb::plus{});