什么是推荐的大数据处理C++并行化库

Vid*_*gar 4 c++ parallel-processing tbb openmp dataset

有些人可以推荐在C++中进行并行化的方法,当要执行的数据非常庞大时.我一直在阅读有关openMP和英特尔TBB在C++中进行并行化的内容,但尚未对它们进行过实验.哪些对并行数据处理更好?还有其他图书馆/方法吗?

Dir*_*tel 5

OpenMP和Intel TBB都可供本地使用,因为它们有助于编写多线程应用程序.

如果您拥有真正庞大的数据集,则可能需要在多台计算机上拆分负载 - 然后使用Open MPI等库 来进行MPI并行编程.Open MPI有一个C++接口,但您现在还面临一个网络组件和一台计算机没有的管理问题.


Jon*_*rsi 5

"大"和"数据处理"在这里涵盖了很多,如果没有更多的信息,很难给出明智的答案.

如果数据处理是"令人尴尬的并行" - 如果它涉及进行大量和完全独立的计算 - 那么就有一百万个可以工作的东西,而这只是找到与你的代码相匹配的东西的问题.背景.

如果它不是令人尴尬的并行,但几乎是如此 - 计算需要大量的数据,但只是将其提炼成一小撮数字 - 数量较少,但仍有很多选择.

如果计算比这更紧密地耦合 - 你需要处理器在大块数据上串联工作,那么你可能会坚持使用备用数据库 - 如果它可以在一台机器上工作,那么编译器的OpenMP功能(那里有) TBB,但通常用于数字运算OpenMP更快更容易)或MPI如果它同时需要多台机器.你提到过C++; Boost有一个非常好的MPI层.

但是考虑使用哪个库进行并行化可能首先考虑问题的错误结束.在许多情况下,您不一定需要直接处理这些图层.如果数字运算涉及大量的线性代数(例如),那么PLASMA(用于多核机器 - http://icl.cs.utk.edu/plasma/)或PetSC,它支持分布式存储器,例如,多个电脑(http://www.mcs.anl.gov/petsc/petsc-as/)是很好的选择,可以完全隐藏你并行实现的实际细节.其他类型的技术也有其他库.最好考虑一下您需要做什么样的分析,并查看现有工具包是否具有您需要的并行化数量.只有当你确定答案是肯定的,你才会开始担心如何推出自己的答案.