Несколько лет назад я внедрил кумар .
Поскольку я использовал Mac OS X и компилятор 'nvcc' не был доволен 'лязгом' Apple, я разработал эту библиотеку для чистого C ++ (и разновидности лямбды).
Типичная операция на карте выглядит следующим образом:
//A = B + C, all of length 'n'
cumar::map()("[](double a&, double b, double c){ a = b+c; }" )(A, A+n, B, C);
Для операции уменьшения это выглядит так:
// x = min(A), A of size 'n'
cumar::reduce()( "[](double a, double b){ return a < b ? a : b; }" )(A, A+n);