目前我知道的是Mars,但还有其他选择吗?
目前,最简单的接口由thrust::reduce提供。
正如您所指出的,还有Mars。
多年前,我已经实现了cumar。
由于我使用的是Mac OS X系统,而“nvcc”编译器与苹果的“clang”不兼容,因此我设计了这个纯C++库(以及一种lambda的变体)。
一个典型的映射操作如下所示:
//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);