2011-06-14 134 views

回答

6

目前最簡單的界面是由thrust::reduce提供的。

如您所述,還有Mars

+0

什麼推力::減少並不是我所說的map-reduce。 thrust :: reduce是許多函數式編程語境中的reduce函數,它們將序列,起始值和二進制運算轉換爲單個值。在Scala中,它被稱爲「foldLeft」或「foldRight」,但在大多數函數式編程語言中,它被稱爲「reduce」。 map-reduce算法的reduce階段對一組與key關聯的值執行一些操作,但該操作不是必需的二進制,並且不必將該序列轉換爲單個值。 – 2013-06-26 00:41:32

0

多年前,我已實施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);