平行作业雪的最大工人/奴隶数

时间:2015-10-22 18:47:53

标签: r parallel-processing snow parallel-foreach rparallel

我在Windows机器上运行带有雪后端的foreach循环。我有8个内核可以使用。 rscript是通过嵌入在python脚本中的系统调用来实现的,所以也会有一个活动的python实例。

没有#workers = #core而不是#workers< #cores是否有任何好处所以系统进程或python实例总是有空缺?

它成功运行#workers = #core但我是否通过使用r worker实例使内核饱和(最大可能线程数)来降低性能?

1 个答案:

答案 0 :(得分:1)

这将取决于

  1. 您的处理器(特别是超线程)
  2. 必须向/从不同图像复制多少信息
  3. 如果您在多个方框(LAN)上实现此功能
  4. 1)超线程有帮助。我知道我的机器是这样做的所以我通常有两倍的工作人员是核心,我的代码在大约85%的时间内完成,相比之下,如果我将工作人员与核心数量相匹配。它不会比这更好。

    2)如果您不使用套接字进行分叉,那么您就像在分布式内存范例中一样工作,这意味着在内存中为每个工作人员创建一个副本。这可能是非常重要的时间。此外,同一台机器中的多个图像可能会占用大量空间,具体取决于您正在处理的内容。我经常将工人数量与数字相匹配,因为工人加倍会使我的记忆力不足。

    3)多个工作站的网络速度加剧了这种情况。在本地机器之间,我们的交换机将以大约20兆字节/秒的速度传输数据,比我家中的互联网下载速度快10倍,但与在同一个盒子中制作副本相比,这是一个蜗牛的速度。

    您可以考虑增加R的优秀值,以便python在需要执行某些操作时具有优先级。