使用 lambda 表达式并行减少
Parallel reduce using lambda expressions
我目前正在开发一个接受数组、大小、低和高作为参数的函数
parllelCount(int *src, int size, int low, int high)
函数 returns 源数组中落在低值和高值范围内的值的数量。
我有以下函数使用 lambda 表达式使用并行化简,但我无法弄清楚 paralle_reduce 中的 combine 参数应该如何实现(在片段中注释)
int parallelCount(int *src, int size, int low, int high)
{
int counter = parallel_reduce(blocked_range<int>(0, size),
int(0),
[&](blocked_range<int> r, int counter)->int{
for(int i = r.begin(); i < r.end(); i++){
if(low <= src[i] && src[i] <= high){
counter++;
}
}
return counter;
},
//[](){}
);
return counter;
}
combine
大概应该只是将工作人员计算的结果相加,所以类似于
[](int a, int b) { return a + b; }
应该可以
我目前正在开发一个接受数组、大小、低和高作为参数的函数
parllelCount(int *src, int size, int low, int high)
函数 returns 源数组中落在低值和高值范围内的值的数量。
我有以下函数使用 lambda 表达式使用并行化简,但我无法弄清楚 paralle_reduce 中的 combine 参数应该如何实现(在片段中注释)
int parallelCount(int *src, int size, int low, int high)
{
int counter = parallel_reduce(blocked_range<int>(0, size),
int(0),
[&](blocked_range<int> r, int counter)->int{
for(int i = r.begin(); i < r.end(); i++){
if(low <= src[i] && src[i] <= high){
counter++;
}
}
return counter;
},
//[](){}
);
return counter;
}
combine
大概应该只是将工作人员计算的结果相加,所以类似于
[](int a, int b) { return a + b; }
应该可以