首页 文章

设计用于执行HPC计算的java GUI

提问于
浏览
0

对不起,如果问题太开放或不合适,但这是由于我对几个技术/软件缺乏了解,我很遗憾 . 我有一个项目,我有一个现有的java swing GUI,它在本地机器上运行MPI作业 . 但是,需要支持在HPC群集上运行MPI作业(假设使用ssh访问的Linux群集) . 更具体地说,我需要执行的主要后端可执行文件(linux和windows)执行使用一个非常简单的主从系统,其中所有相关输出仅由主节点执行 . 目前,要在多台机器上运行我的后端可执行文件,我只需要将所有必需的文件复制到机器上(假设没有共享文件空间)并按照惯例练习调用“mpiexec”或“mpirun” . 主机生成的输出需要由我的GUI读入(或部分读入) .

我看到的主要问题是: Where to run the GUI? 几个选项:

  • 本地计算机 - 潜在问题是需要将数据从群集读回本地计算机(并且还要读取群集进程的stdout / stderr)以向用户显示当前进度 .

  • 登录节点 - 占用宝贵资源的明显问题,并且在许多情况下将被禁止 .

  • 计算节点 - 听起来很狡猾 - 特别是如果集群有一个排队系统(slurm,sun grid等)!也可能被禁止 .

在这三个选项中,第一个似乎是最合理的,也似乎最不可能打乱任何HPC管理员,但也是最难实现的!该设置存在多个问题:

  • 将数据从群集传递到本地计算机 - 因为我们're using a cluster - by definition we probably will generate large amounts of data, which the user wants to see at least part of! Also, how should this be done? I can see how to execute commands on remote machine via ssh using jsch or similar, but if i' m当前已登录到远程计算机上 - 如何将信息传递回本地计算机?

  • 在本地计算机中显示后端的stdout / stderr . 与上面类似 .

  • 处理各个集群的特殊方面 - 我看到的唯一方法是允许用户编写自定义slurm脚本等 .

  • 如何检测后端计算是否已完成/失败 - 此问题与用户编写的任何自定义slurm脚本进行交互 .

希望从上面可以清楚地看出我很困惑 . 我看过apache camel,jsch,ganemede ssh,apache mina,netty,slurm,Sun Grid,open mpi,mpich,pmi,但是有太多的信息我觉得我需要寻求一些帮助和建议 . 我非常感谢有关这些问题的任何评论!

谢谢

================================

编辑

实际上,我刚刚遇到过这个问题:link似乎暗示如果群集允许"interactive" -mode作业,那么您可以从计算节点运行GUI . 但是,我对此并不了解,也不知道这是否常见 . 对于这方面的评论,我将不胜感激 .

1 回答

  • 2

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

相关问题