gpt4 book ai didi

ipython - 在 Sun Grid Engine 上使用 IPython Parallel

转载 作者:行者123 更新时间:2023-12-04 21:44:01 25 4
gpt4 key购买 nike

我正在尝试将 IPython Parallel 用于一个非常常见的场景,我想在运行 Sun Grid Engine 的集群上运行模拟,但我找不到一种可靠的方法来做到这一点。

这是我想要做的:

我想用几个不同的参数值运行数值模拟(使用 Numpy 数组)——这些任务显然是/“令人尴尬地”并行的。我可以(通过 ssh)访问运行 Grid Engine 的集群的头节点。到目前为止,我一直在使用 QSUB 命令运行 shell 脚本,但这非常笨拙(处理节点崩溃等),我正在寻找一种在 Python 中完成所有这些的方法。

IPython 似乎非常适合这种情况,但结果证明要使设置顺利运行很麻烦。我在头节点上使用 IPCLUSTER 启动了 n 个(比如 20 个)引擎,然后将 .json 文件复制到我使用 IPython.parallel.Client 连接的本地机器上。

我已经设置了IPClusterStart.controller_launcher_class = 'SGEControllerLauncher'IPClusterEngines.engine_launcher_class = 'SGEEngineSetLauncher'
IPCLUSTER 似乎运行良好;我从 ssh 终端的头节点得到这个输出:

-- [IPClusterStart] Starting Controller with SGEControllerLauncher
-- [IPClusterStart] Job submitted with job id: '143396'
-- [IPClusterStart] Starting 4 Engines with SGEEngineSetLauncher
-- [IPClusterStart] Job submitted with job id: '143397'
-- [IPClusterStart] Engines appear to have started successfully

但是,我有以下问题:
  • 很多时候,即使在我看到上面说引擎已成功启动的消息后,许多引擎也无法向 Controller 注册。当我使用 20 个引擎启动 IPCLUSTER 时,我可以看到 10 - 15 个引擎出现在 Grid Engine 队列中。我不知道其他引擎会发生什么——没有输出文件。在这 10-15 个引擎中,它们仅启动其中一些向 Controller 注册,我在它们的输出文件中看到了这一点:
    ... [IPEngineApp] Using existing profile dir: .../.ipython/profile_sge'
    ... [IPEngineApp] Loading url_file ... .ipython/profile_sge/security/ipcontroller-engine.json'
    ... [IPEngineApp] Registering with controller at tcp://192.168.87.106:63615
    ... [IPEngineApp] Using existing profile dir: .../.ipython/profile_sge'
    ... [IPEngineApp] Completed registration with id 0

    在其他人身上,我看到了这一点:
    ... [IPEngineApp] Using existing profile dir: .../.ipython/profile_sge'
    ... [IPEngineApp] Loading url_file .../.ipython/profile_sge/security/ipcontroller-engine.json'
    ... [IPEngineApp] Registering with controller at tcp://192.168.87.115:64909
    ... [IPEngineApp] Registration timed out after 2.0 seconds

    知道为什么会这样吗?
  • 有时,引擎启动并成功注册,但当我让它们运行一些非常简单的东西时,它们开始死亡,比如 view.execute('%pylab')我回来的唯一异常(exception)是:

    [引擎异常]
    回溯(最近一次调用最后一次):
    文件“/Library/Frameworks/EPD64.framework/Versions/7.3/lib/python2.7/site-packages/IPython/parallel/client/client.py”,第708行,_handle_stranded_msgs
    raise error.EngineError("Engine %r 在运行任务 %r 时死亡"%(eid, msg_id))
    引擎错误:引擎 1 在运行任务“b9601e8a-cff5-4037-b9d9-a0b93ca2f256”时死亡
  • 以这种方式启动引擎意味着只要引擎正在运行,我就会占用节点和队列,即使它们没有执行任何操作。是否有一种简单的方法来启动引擎,以便它们仅在您想运行某些脚本时才会产生,并且一旦返回计算结果它们就会关闭?
  • Grid Engine 似乎每次都在不同的节点上启动 Controller ,因此 IPCLUSTER 配置文件中的 --ruse 标志没有用;每次使用 IPCLUSTER 时,我都必须复制 JSON 文件。有没有办法避免这种情况?

  • 如果有人可以为这种常见场景提供一个简单的工作流程,那将非常有帮助:使用 IPython 并行通过 SSH 连接将明显并行的作业提交到 SGE 集群。应该有一些处理引擎崩溃重新提交的方法,如果有一种方法可以只在模拟期间使用集群资源,那也很好。

    最佳答案

    这来得有点晚,它实际上并没有回答您的具体问题。但是,您是否尝试过 pythongrid ?

    关于ipython - 在 Sun Grid Engine 上使用 IPython Parallel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17791107/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com