并行处理数据分析 - 拥有比处理器核心更多的分裂是否有益处?

时间:2018-02-02 20:57:20

标签: r foreach parallel-processing parallel-foreach

我正在使用朴素贝叶斯分类器来预测R中的一些测试数据。测试数据具有> 1,000,000,000条记录,并且使用一个处理器处理时间太长。我使用的计算机(总共)有四个处理器,其中三个我可以自由运行我的任务(我可以使用所有四个,但更喜欢保留一个用于我需要做的其他工作)。

使用foreachdoSNOW软件包,并按照this教程,我已经设置并运行了一些东西。我的问题是:

我将数据集分为三个部分,每个处理器一个部分。将数据集拆分为6,9或12个部分有什么好处?换句话说,更多拆分之间的权衡是什么,只需要为每个处理器核心运行一大块记录?

我这里没有提供任何数据,因为我认为这个问题更具理论性。但是如果需要数据,请告诉我。

1 个答案:

答案 0 :(得分:2)

从广义上讲,将其拆分为更多部分的优势在于您可以优化处理器的使用。

如果数据集被分成3个部分,每个处理器一个,并且它们需要以下时间:

拆分A - 10分钟

拆分B - 20分钟

拆分C - 12分钟

您可以立即看到两个处理器将在执行完整分析所需的大量时间内处于空闲状态。

相反,如果您有12个分组,每个分组需要3到6分钟才能运行,那么处理器A可以在完成第一个分段后获取另一个作业块,而不是空闲,直到最长运行的分割结束