【发布时间】:2014-08-25 01:41:18
【问题描述】:
对不起,如果问题过于开放或不适合,但这是由于我对几项技术/软件缺乏了解,我很迷茫。我有一个项目,我有一个现有的 java swing GUI,它在本地机器上运行 MPI 作业。但是,希望支持在 HPC 集群上运行 MPI 作业(让我们假设具有 ssh 访问权限的 linux 集群)。更具体地说,我需要执行的主要后端可执行文件(linux 和 windows)erm 使用一个非常简单的主从系统,其中所有相关输出仅由主节点执行。目前,要在多台机器上运行我的后端可执行文件,我只需将所有必要的文件复制到机器上(假设没有共享文件空间)并按照通常的做法调用“mpiexec”或“mpirun”。我的 GUI 需要读入(或部分读入)master 产生的输出。
我看到的主要问题是:在哪里运行 GUI? 几个选项:
- 本地机器 - 潜在的问题是需要将数据从集群读取回本地机器(并且还读取集群进程的标准输出/标准错误)以向用户显示当前进度。
- 登录节点 - 占用宝贵资源的明显问题,在很多情况下会被封禁。
- 计算节点 - 听起来很狡猾 - 特别是如果集群有排队系统(slurm、sun grid 等)!也可能被禁止。
在这三个选项中,第一个似乎是最合理的,也是最不可能让任何 HPC 管理员感到不安的,但也是最难实施的!该设置存在多个问题:
- 将数据从集群传递到本地机器 - 因为我们使用的是集群 - 根据定义,我们可能会生成大量数据,用户希望至少看到其中的一部分!另外,这应该怎么做?我可以看到如何使用 jsch 或类似工具通过 ssh 在远程机器上执行命令,但如果我当前登录到远程机器上 - 如何将信息传回本地机器?
- 在本地机器中显示后端的标准输出/标准错误。与上述类似。
- 处理单个集群的特殊方面 - 我看到的唯一方法是允许用户编写自定义 slurm 脚本等。
- 如何检测后端计算是否已完成/失败 - 此问题与用户编写的任何自定义 slurm 脚本交互。
希望从上面可以清楚地看出我很困惑。我看过 apache camel、jsch、ganemede ssh、apache mina、netty、slurm、Sun Grid、open mpi、mpich、pmi,但信息太多,我想我需要寻求帮助和建议。对于这些问题,我将不胜感激!
谢谢
=================================
编辑
实际上,我刚刚遇到这个:link,这似乎表明如果集群允许“交互式”模式作业,那么您可以从计算节点运行 GUI。但是,我对此知之甚少,也不知道这是否普遍。在这方面我会感谢 cmets。
【问题讨论】:
-
您可能会发现检查 Eclipse 并行工具平台 (eclipse.org/ptp) 的架构很有指导意义。
-
感谢您的意见。我一定会看看的。