【问题标题】:Are there MapReduce implementations on GPUs (CUDA)?GPU (CUDA) 上是否有 MapReduce 实现?
【发布时间】:2011-06-14 07:01:19
【问题描述】:

到目前为止,我知道Mars,但替代方案呢?

【问题讨论】:

    标签: cuda mapreduce gpu


    【解决方案1】:

    目前最简单的接口是thrust::reduce提供的。

    正如你所说,还有Mars

    【讨论】:

    • thrust::reduce 所做的不是我所说的 map-reduce。 push::reduce 是在许多函数式编程上下文中发现的 reduce 函数,它将序列、起始值和二元运算转换为单个值。在 Scala 中,它被称为“foldLeft”或“foldRight”,但在大多数函数式编程语言中,它被称为“reduce”。 map-reduce 算法的 reduce 阶段对与键关联的一组值执行一些操作,但此操作不是二进制的,也不一定将序列转换为单个值。
    【解决方案2】:

    几年前我已经实现了cumar

    由于我使用的是 Mac OS X 并且“nvcc”编译器对 Apple 的“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);
    

    对于reduce操作,它看起来像这样:

    // x = min(A), A of size 'n'
    cumar::reduce()( "[](double a, double b){ return a < b ? a : b; }" )(A, A+n);
    

    【讨论】:

      猜你喜欢
      • 2013-09-19
      • 2012-10-01
      • 2014-01-29
      • 1970-01-01
      • 2012-01-09
      • 2011-05-19
      • 2014-09-23
      • 2020-10-29
      • 1970-01-01
      相关资源
      最近更新 更多