【问题标题】:Designing java GUI for performing HPC computations设计用于执行 HPC 计算的 java GUI
【发布时间】: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) 的架构很有指导意义。
  • 感谢您的意见。我一定会看看的。

标签: java swing mpi hpc


【解决方案1】:

您可以利用here 所示的方法:ProcessBuilder 用于在SwingWorker 的后台执行命令,而命令的输出显示在合适的组件中。在示例中,ls -l 将变为 ssh username@host 'ls -l'。根据需要使用JPasswordField

【讨论】:

  • 您好,感谢您的回答。但是,我已经知道如何使用 ProcessBuilder 来执行系统命令——这是我已经在本地机器上执行 MPI 作业的方法。我也知道我可以按照您描述的方式使用 ssh 登录,或者使用诸如 JSch 或类似的库。困难在于开发一个可靠且健壮的系统,以扩展在 HPC 集群上运行 MPI 作业。
  • 我想知道;我猜没有通用的解决方案。另请参阅潜在的MPI-Java bindings。如果集群在已建立的 TCP 端口上公开了众所周知的服务,例如JDBC,可以通过SSH转发端口。
  • 不幸的是,MPI 的东西已经在 C++ 后端实现了。我的 Java GUI 仅处理 MPI 后端的执行,而不是执行 MPI 通信本身。关于没有通用解决方案,您可能是对的——也许我需要仔细定义我的范围——但是,这意味着知道足以定义范围! :(
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-05-12
  • 2018-04-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多