当听说我正在运行的科学计算项目(碰巧是随机跟踪图像法described here)将在我们的50节点集群上运行4个月后,调查者要求我检查其他选择。该项目目前正在使用并行python将4d数组的数据块外包给不同的集群节点,并将处理后的数据块重新组合在一起。
我目前使用的任务可能太粗粒度了,(5秒到10分钟,我不得不在并行python中增加超时默认值),我估计我可以通过重写它来加速2-4倍的过程,以更好地利用资源(拆分和重新组合数据花费的时间太长,这也应该并行化)。大部分工作都是由numpy数组完成的。
让我们假设2-4次还不够,我决定从本地硬件上获取代码。对于像这样的高吞吐量计算,我的商业选择是什么,我需要如何修改代码?
发布于 2011-02-11 01:47:50
脑海中浮现的最明显的商业选择是亚马逊EC2和Rackspace Cloud。我尝试过这两种方法,发现Rackspace API更容易使用。
好消息是,您可以使用其计算实例(您选择的操作系统的短期或长期虚拟机)建立原型并使用它们,只需很少的投资,通常是$US 0.10 /小时左右。您可以按需创建它们,然后在完成后将它们释放回云,并且只为您使用的内容付费。例如,我看到了一个使用6个Rackspace实例的Django部署演示,它花费了大约一个小时,花费了演讲者不到一美元。
对于你的用例(不清楚你所说的“高吞吐量”到底是什么意思),你必须考虑你的预算和计算需求,以及你的总网络吞吐量(你也要为此买单)。一些小规模的测试和简单的电子表格计算应该会告诉你它是否真的实用。
Rackspace Cloud和亚马逊EC2都有Python。无论您使用哪种方式,我都推荐使用基于python的Fabric来实现实例的自动部署和配置。
发布于 2011-02-11 01:50:22
您可能会对PiCloud感兴趣。我从来没有用过它,但他们的服务显然包括Enthought Python Distribution,它涵盖了标准的科学图书馆。
很难说这是否适用于您的特定情况,但并行Python接口非常通用。所以希望不需要太多的改变。也许你甚至可以编写一个自定义的调度器类(实现与PP相同的接口)。实际上,这可能对许多人有用,所以也许你可以在PP论坛上争取一些支持。
https://stackoverflow.com/questions/4952720
复制相似问题