我在 5 个不同国家/地区的 10 年每日债券价格数据中运行 R 中的 termtrc 收益率曲线分析包。这是高度计算密集型的,在标准 lapply 上每个国家/地区需要 3200 秒,如果我在我的 2009 i7 mac 上使用 foreach 和 %dopar%(带 doSNOW),使用所有 4 个内核(8 个带超线程),我得到这个850 秒。每次我添加一个国家(以计算国家间的利差)时,我都需要重新运行这个分析,我还有 19 个国家要去,未来还有更多的信贷收益率曲线。所花费的时间开始看起来像一个主要问题。顺便说一下,所讨论的 termstrc 分析函数是在 R 中访问的,但它是用 C 编写的。
现在,我们是一个 12 人的小公司(阅读预算有限),全部配备 8GB 内存,i7 电脑,其中至少有一半用于日常文字处理/电子邮件/浏览风格的任务,即使用 5%发挥他们的最大作用。它们都使用千兆(但不是 10 千兆)以太网进行联网。
我可以使用 MPI 对这些未充分利用的 PC 进行聚类并在它们之间运行我的 R 分析吗?网络会不会受影响?收益率曲线分析函数的每次迭代大约需要 1.2 秒,所以我假设如果并行处理的粒度是将整个函数迭代传递给每个集群节点,与千兆以太网延迟相比,1.2 秒应该是相当大的?
这可以做到吗?如何?对我的同事会有什么影响。当我对他们的机器征税时,他们可以继续阅读他们的电子邮件吗?
我注意到 Open MPI 似乎不再支持 Windows,而 MPICH 似乎支持。如果有的话,你会用哪个?
也许在每台 PC 上运行一个 Ubuntu 虚拟机?