IPython并行计算与pyzmq集群计算

IPython并行计算与pyzmq集群计算,python,parallel-processing,zeromq,pyzmq,ipython-parallel,Python,Parallel Processing,Zeromq,Pyzmq,Ipython Parallel,我目前正在编写一些用C编写的模拟代码,这些代码在不同的远程机器上运行。C部分完成后,我想通过使用python模拟api和某种作业队列系统对其进行扩展,从而简化我的工作,该系统应完成以下操作: 1.指定一组应执行模拟的参数,并将其放入主机上的队列中 2.由工人在远程机器上进行模拟 3.将结果返回到主机 我研究了完成这项任务的不同框架,我的第一选择是IPython.parallel。我看了一下文档,从测试结果来看,它似乎很容易使用。我的方法是使用负载平衡视图,如 但我看不到的是: 会发生什么情况

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

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

2.由工人在远程机器上进行模拟

3.将结果返回到主机

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

但我看不到的是:

  • 会发生什么情况,即如果ipcontroller崩溃,我的作业队列是否消失
  • 如果远程机器崩溃会发生什么?是否存在某种错误处理
因为我运行相对较长的模拟(1-2周),所以如果系统的某个部分崩溃,我不希望我的模拟失败。那么,在IPython.parallel中有没有办法处理这个问题

我的第二种方法是使用pyzmq,从头开始实现jobsystem。 在这种情况下,对于这种情况,什么是最好的zmq模式


最后但并非最不重要的一点是,是否有更好的框架用于此场景?

幕后隐藏的是关于如何沿(并行)数字处理管道安排工作包流的更为复杂的视图

作为许多CPU核心周的工作包

由于作业的总体积大于几十万CPU核心小时,因此原理相似,遵循常识

主要特征
  • 所有相关资源的计算性能的可伸缩性(理想情况下是线性的)
  • 任务提交角色的轻松性
  • 提交任务的故障恢复能力(理想情况下具有自动的自愈功能
  • 可行获取/使用足够资源池的TCO成本(前期成本$ts、经常性成本$ts、适应成本$co$ts、成本$peed)
解决办法
  • 基于分布式大规模并行调度器的自愈计算引擎的home brew体系结构

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

根据自己的经验,解决了大量参数集向量空间(无法分解为任何简单化的GPU并行化方案)上重复运行数值密集型优化问题的需要,第二种方法的选择已经被证实是更有成效的,而不是仅仅为了重新发明一个轮子而在另一次试验中耗费几十年的时间

在学术界环境中,人们可以更容易地获得对资源池的可接受访问,以处理工作包,而商业实体可以根据其可接受的预算树获取相同的资源池



我的直觉是建议推出您自己的解决方案,因为正如您所说,否则您将依靠IPython不会崩溃

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

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