Vid*_*gar 4 c++ parallel-processing tbb openmp dataset
有些人可以推荐在C++中进行并行化的方法,当要执行的数据非常庞大时.我一直在阅读有关openMP和英特尔TBB在C++中进行并行化的内容,但尚未对它们进行过实验.哪些对并行数据处理更好?还有其他图书馆/方法吗?
"大"和"数据处理"在这里涵盖了很多,如果没有更多的信息,很难给出明智的答案.
如果数据处理是"令人尴尬的并行" - 如果它涉及进行大量和完全独立的计算 - 那么就有一百万个可以工作的东西,而这只是找到与你的代码相匹配的东西的问题.背景.
如果它不是令人尴尬的并行,但几乎是如此 - 计算需要大量的数据,但只是将其提炼成一小撮数字 - 数量较少,但仍有很多选择.
如果计算比这更紧密地耦合 - 你需要处理器在大块数据上串联工作,那么你可能会坚持使用备用数据库 - 如果它可以在一台机器上工作,那么编译器的OpenMP功能(那里有) TBB,但通常用于数字运算OpenMP更快更容易)或MPI如果它同时需要多台机器.你提到过C++; Boost有一个非常好的MPI层.
但是考虑使用哪个库进行并行化可能首先考虑问题的错误结束.在许多情况下,您不一定需要直接处理这些图层.如果数字运算涉及大量的线性代数(例如),那么PLASMA(用于多核机器 - http://icl.cs.utk.edu/plasma/)或PetSC,它支持分布式存储器,例如,多个电脑(http://www.mcs.anl.gov/petsc/petsc-as/)是很好的选择,可以完全隐藏你并行实现的实际细节.其他类型的技术也有其他库.最好考虑一下您需要做什么样的分析,并查看现有工具包是否具有您需要的并行化数量.只有当你确定答案是肯定的,你才会开始担心如何推出自己的答案.