簡體   English   中英

並行減少使用Lambda表達式

[英]Parallel reduce using lambda expressions

我目前正在處理一個以數組,大小,低和高為參數的函數

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

該函數從源數組返回落在低范圍和高范圍內的值的數量。

我有以下利用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; }

應該管用

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM