c++ - 在 TBB 中实现 MapReduce

标签 c++ parallel-processing mapreduce tbb

我想使用 TBB 为软件分配“模拟”mapreduce,管道范式似乎是一种很好的查看方式,因为串行过滤器可以是 I/O,而并行过滤器可以是 Map 和 Reduce 实现,但是这函数实现接收并返回单个元素(如果输入只生成一个元组,这对于 map 是可以的,但是需要多个输出的单词计数之类的东西怎么样?),并且 reduce 只是在全局 HashMap 上聚合而不实际返回“某物” "

有没有办法为此目的使用管道,或者我应该使用类似 parallel_while/for 的方法?

谢谢!

最佳答案

并行管道通常不像 parallel_for 那样可扩展,所以我倾向于尝试使用 parallel_for 或一些并行递归方案。我建议查看并行排序算法以获取指导,因为 map-reduce 与排序非常相似,只是合并了重复的键。对于小核心数,类似于并行样本排序的东西似乎是很好的灵感。 (参见 http://parallelbook.com/sites/parallelbook.com/files/code20131121.zip 在 TBB 中的实现)。对于大核心数,类似于并行合并排序的方法可能更好(有关讨论和代码,请参见 https://software.intel.com/en-us/articles/a-parallel-stable-sort-using-c11-for-tbb-cilk-plus-and-openmp)。

关于c++ - 在 TBB 中实现 MapReduce,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23574404/

相关文章:

c - 使用 openmp c 的 Nqueens

hadoop - Mapper 和 Reduce 上的依赖注入(inject)

java - 使用Java在Hadoop中形成自定义链接列表

c++ - 冒泡排序程序不输出结果

c++ - 错误 LNK2019 : unresolved external symbol "public: __thiscall user::user(void)" (? ?0user@@QAE@XZ) 在函数 "..."中引用

c# - .NET 4 Parallel.ForEach 和 PLINQ : can they overwhelm the thread pool and kill the app performance?

hadoop - 使用Hadoop Map reduce处理和拆分大数据?

c++ - 使用MPFR舍入到整数

c++ - 包含主项目中的文件时单元测试项目中的错误

python - 在并行化过程中正确调用和加载外部变量