【问题标题】:Parallel reduce using lambda expressions使用 lambda 表达式的并行化简
【发布时间】:2016-10-23 14:40:55
【问题描述】:

我目前正在研究一个以数组、大小、低和高为参数的函数

parllelCount(int *src, int size, int low, int high)

该函数返回源数组中位于上下限范围内的值的数量。

我有以下使用 lambda 表达式使用并行 reduce 的函数,但我无法弄清楚 paralle_reduce 中的 combine 参数应该如何实现(在 sn-p 中注释)

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;
}

【问题讨论】:

    标签: c++ lambda tbb


    【解决方案1】:

    combine 大概应该只是将工作人员计算的结果相加,所以类似于

    [](int a, int b) { return a + b; }
    

    应该工作

    【讨论】:

    • 所以 combine 参数总是带两个参数,谢谢!!您的解决方案确实输出了预期的输出
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多