【问题标题】:IPython parallel computing vs pyzmq for cluster computing用于集群计算的 IPython 并行计算 vs pyzmq
【发布时间】:2014-09-18 13:05:22
【问题描述】:

我目前正在编写一些用 C 编写的模拟代码,这些代码可以在不同的远程机器上运行。在 C 部分完成后,我想通过使用 python 模拟 api 和某种作业队列系统对其进行扩展来简化我的工作,它应该执行以下操作:

1.指定一组应执行模拟的参数并将它们放入主机上的队列中

2.worker对远程机器进行模拟

3.返回结果给主机

我查看了完成这项任务的不同框架,我的第一选择归结为 IPython.parallel。我查看了文档,从我测试的结果来看,它似乎很容易使用。我的方法是使用负载平衡视图,如

中所述

http://ipython.org/ipython-doc/dev/parallel/parallel_task.html#creating-a-loadbalancedview-instance

但我没有看到的是:

  • 会发生什么,即如果 ipcontroller 崩溃,我的作业队列是否消失了?
  • 如果远程计算机崩溃会怎样?是否有某种错误处理?

由于我运行的模拟时间相对较长(1-2 周),因此我不希望我的模拟在系统的某些部分崩溃时失败。那么有没有办法在 IPython.parallel 中处理这个问题?

我的第二种方法是使用 pyzmq 并从头开始实施作业系统。 在这种情况下,最好的 zmq 模式是什么?

最后但同样重要的是,对于这种情况是否有更好的框架?

【问题讨论】:

    标签: python parallel-processing zeromq pyzmq ipython-parallel


    【解决方案1】:

    幕后是一个更复杂的观点,即如何在(并行的)数字处理管道旁边安排工作包流。

    作为许多CPU-core-week的工作包,

    作为一个几十万CPU核心小时以上的工作量,原理相似,遵循常识。

    主要特点

    • 所有资源的计算性能的可扩展性(理想情况下是线性资源)
    • 轻松任务提交角色
    • 已提交任务的容错能力(理想情况下具有自动自我修复
    • 可行访问/使用充足资源池的 TCO 成本(前期成本、经常性成本、适应成本成本、成本成本)

    解决方法

    • 基于分布式大规模并行调度程序的自愈计算引擎的自制架构

    • 重用可用的基于网格的计算资源

    根据自己的经验,解决在大量参数SetVectorSPACE(无法分解为任何平凡的GPU并行化方案)上重复运行数值密集型优化问题的需要,已验证选择第二种方法更富有成效,而不是试图在另一个试验中烧掉几十个人*年来重新发明一个轮子。

    在学术环境中,人们可能会更容易地获得资源池的可接受访问权限以处理工作包,而商业实体可能会根据其可接受的预算门槛获得相同的资源。


    【讨论】:

      【解决方案2】:

      我的直觉是建议为此推出您自己的解决方案,因为就像您所说的那样,您依赖 IPython 不会崩溃。

      我会在每个节点上运行一个简单的 python 服务来监听运行命令。当它收到一个时,它会启动你的 C 程序。但是,我建议您确保 C 程序是 true Unix daemon,因此当它运行时,它会完全断开与 python 的连接。这样,如果您的节点 python 实例崩溃,如果 C 程序成功执行,您仍然可以获取数据。让 C 程序将输出数据写入文件或数据库,并在任务完成后将“已完成”写入“状态”或类似内容。 python 服务应监控该文件,并在指示完成后检索数据并将其发送回服务器。

      此设计的中心思想是尽可能少的故障点。只要 C 程序不崩溃,您仍然可以通过一种或另一种方式获取数据。至于处理系统崩溃、网络断开等,这取决于您。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-10-16
        • 2011-07-26
        • 2015-09-09
        • 2015-05-19
        • 2017-08-22
        • 2016-08-23
        • 2012-01-14
        相关资源
        最近更新 更多