使用lambda表达式并行约简
Parallel reduce using lambda expressions
我目前正在研究一个函数,该函数接受数组,大小,低和高作为参数
parllelCount(int *src, int size, int low, int high)
函数返回源数组中落在low和high范围内的值的个数。
我有以下函数,使用lambda表达式使用并行减少,但我无法弄清楚paralle_reduce中的组合参数应该如何实现(在代码片段中注释)
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; }
应该
相关文章:
- (C++)分析树以计算返回错误值的简单算术表达式
- 在VS2010-VS2015下编译时,如何使用decltype作为较大类型表达式的LHS
- 提升精神:解析布尔表达式并简化为规范范式
- 不能在初始值设定项列表中将非常量表达式从类型 'int' 缩小到'unsigned long long'
- 使用正则表达式regex_search在字符串中查找字符串
- 如何确认我的constexpr表达式实际上已经在编译时执行
- C++17中的并行执行策略
- 概念中的cv限定符需要表达式参数列表
- 为什么constexpr的性能比正常表达式差
- 对于结构,表达式必须是可修改的ivalue
- 并行用于C++17中数组索引范围内的循环
- 当一个值是非常量但用常量表达式初始化时使用constexpr
- 将fold表达式与std::一起用于两个元组
- 如何在Elixir中调用递归函数并行
- 断言中的Fold表达式在某些计算机上编译,但在其他计算机上不编译
- 标记 '","' 之前的预期主表达式
- OpenMP:并行更新数组总是需要减少数组吗
- gcc和clang在表达式是否为常量求值的问题上存在分歧
- 如何计算具有指定类型的表达式的相对精度和绝对精度
- 在c++中,包含后增量的表达式能否与该表达式的其他部分并行执行?