12

我在 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 虚拟机?

4

3 回答 3

11

是的你可以。有很多方法。最简单的方法之一是使用redis作为后端(就像sudo apt-get install redis-server在 Ubuntu 机器上调用一样简单;有传言说你也可以在 Windows 机器上使用 redis 后端)。

通过使用doRedis包,您可以非常轻松地在 redis 中的任务队列上排队作业,然后使用一个、两个、...空闲的工作人员来查询队列。最重要的是,您可以轻松混合操作系统,所以是的,您同事的 Windows 机器也符合条件。此外,您可以根据需要使用一个、两个、三个……客户端,并按比例放大或缩小。队列不知道也不关心,它只是提供工作。

最重要的是, doRedis中的小插图包含 Linux 和 Windows 客户端混合的工作示例,以使引导示例运行得更快。

于 2013-02-23T19:40:58.730 回答
6

也许不是您正在寻找的答案,但是 - 这是替代方案非常好以至于难以忽视的情况之一。

对于这些类型的计算问题,AWS 集群的成本低得离谱(我强调)。您只需为使用的内容付费。我可以向您保证,通过不花时间尝试将 12 台 Windows 机器转换为集群,您将节省资金(至少在机会成本方面)。出于您的目的,您甚至可以免费执行此操作。(IIRC,他们仍然在集群上提供免费的计算时间)

参考:

其中一些实例非常强大,您甚至可能不需要弄清楚如何在集群上设置您的工作(根据您当前的描述)。正如您从参考资料中看到的,成本低得离谱,每小时计算时间 1-4 美元不等。

于 2013-02-23T10:38:48.270 回答
1

那么 OpenCL 呢?

这将需要重写 C 代码,但会允许潜在的大幅加速。GPU具有强大的计算能力。

于 2013-06-17T22:59:21.417 回答