【问题标题】:Messaging between torque jobs in a cluster集群中扭矩作业之间的消息传递
【发布时间】:2015-06-16 16:35:43
【问题描述】:

因此,我需要将计算密集型作业(深度神经网络训练)提交到一个租用计算时间的扭矩集群,并且我需要在活动节点之间每隔几分钟交换几兆的大型浮点数组,因为节点需要使用最新版本的神经网络才能很好地训练它。

我想知道是否有任何好的通信选项,至少告诉每个活动作业其姐妹作业的 ips,以便它可以通过 tcp 连接到它们。节点无法访问互联网,我们不能让守护进程在作业提交服务器上工作。

我看到的唯一选项是:

  • Torque 上的一些消息传递选项(我对扭矩相当陌生)
  • 使用文件进行通信的非常容易出错的选项,我讨厌。
  • 一种从服务器查询活动节点 ips 的方法。

【问题讨论】:

  • 这个问题非常广泛(并且可能基于意见)!我认为您应该看一下消息传递接口(MPI)。这是一种标准化的集群通信方式,并且得到 Torque 的良好支持。它可用于 C/C++ 和 Fortran(可能还有其他)。无需重新发明轮子。
  • 传统的 MPI 在这里没有帮助。他需要来自 TCP 或 MPI 的连接接受语义。
  • Open MPI 绝对可以做到这一点。您必须运行全局可访问(通过 TCP/IP)名称服务器 (orte-server) 或启动“主”作业并让其 mpiexec 充当这样的角色,然后将名称服务器的 URI 提供给 @ 的每个实例987654323@。然后工作可以利用MPI_Publish_name/MPI_Lookup_nameMPI_Comm_connect 找到彼此并建立通信。 Torque 不提供工作间通信机制,或者至少没有在其 API 中公开此类机制。

标签: hpc pbs torque


【解决方案1】:

根据集群的架构,有多种方法可以在集群上的节点之间交换信息。 Torque 是一个资源管理器,因此如果使用批处理脚本将作业提交到集群,则有一些环境变量应该能够为您提供作业中使用的节点的主机名或 IP 地址。

查找 IP 地址和/或主机名的确切语法取决于集群上与 Torque 一起使用的调度程序/工作负载管理器。此链接包含 PBS Works 工作负载管理器的文档。

节点之间的并行通信可以通过多种方式实现,并且部分取决于集群中可用的硬件。使用 MPI 是并行化代码以在集群上使用的最常见方法之一,许多实现支持多个高性能结构/互连系统,如 Infiniband。可以在here 找到一些关于不同类型并行性的有用介绍。

作为 MPI 远程直接内存访问 (RDMA) 的替代方案,可用于在节点之间传递和访问信息。如果集群具有 Infiniband 网络适配器,则从供应商处查看 IB-Verbs API 将是在节点之间传递数据的附加选项。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-12
    • 2016-06-23
    • 2019-09-15
    • 2016-04-30
    • 2017-03-21
    • 2011-12-28
    相关资源
    最近更新 更多