【发布时间】:2019-03-18 16:51:39
【问题描述】:
这不是关于特定集群环境的问题,而是关于在集群上的多个节点上分发软件的一般情况。
据我了解,大多数 HPC 集群都使用某种工作负载管理器将作业分配到多个节点。根据我有限的研究,Slurm 似乎是一种流行的选择,但其他人也在使用。
如果您想运行n 独立任务,我可以看到这很有用。但是,如果您想运行相互通信的任务怎么办?
如果我正在开发一个跨两台或多台机器的应用程序,我可以设计一个简单的协议(或使用现有协议)并通过 TCP/IP 之类的方式发送/接收消息。如果事情变得非常复杂,设计一个简单的消息总线或消息集线器来容纳两台以上的机器不会太难。
首先,在 HPC 集群中使用 TCP 是否明智,还是出于性能原因通常不使用它?
其次,在非集群环境中,我事先知道所涉及机器的 IP 地址,但在集群上,我将决定将我的软件部署在哪些物理机器上的决定权交给了 Slurm 等工作负载管理器。那么我怎样才能“连接”节点呢? MPI是如何做到这一点的,还是不使用TCP/IP来允许节点间的通信?
很抱歉,如果这个问题对 StackOverflow 来说有点开放式,我很乐意将它移到其他地方,如果有更合适的地方来问这些问题。
【问题讨论】: