设计用于执行HPC计算的java GUI
很抱歉,如果这个问题太开放或不合适,但这是因为我对一些技术/软件缺乏了解,我完全迷路了。我有一个项目,其中我有一个现有的JavaSwingGUI,它在本地机器上运行MPI作业。但是,它需要支持在HPC集群上运行MPI作业(假设linux集群具有ssh访问)。更具体地说,我需要执行的主要后端可执行文件(linux和windows)使用一个非常简单的主从系统,其中所有相关输出仅由主节点执行。目前,要在多台机器上运行我的后端可执行文件,我只需要将所有必要的文件复制到机器上(假设没有共享文件空间),并按照惯例调用“mpiexec”或“mpirun”。主设备生成的输出需要由GUI读入(或部分读入) 我看到的主要问题是:在哪里运行GUI?几个选项:设计用于执行HPC计算的java GUI,java,swing,mpi,hpc,Java,Swing,Mpi,Hpc,很抱歉,如果这个问题太开放或不合适,但这是因为我对一些技术/软件缺乏了解,我完全迷路了。我有一个项目,其中我有一个现有的JavaSwingGUI,它在本地机器上运行MPI作业。但是,它需要支持在HPC集群上运行MPI作业(假设linux集群具有ssh访问)。更具体地说,我需要执行的主要后端可执行文件(linux和windows)使用一个非常简单的主从系统,其中所有相关输出仅由主节点执行。目前,要在多台机器上运行我的后端可执行文件,我只需要将所有必要的文件复制到机器上(假设没有共享文件空间),并按
- 本地机器—潜在的问题是需要将数据从集群读回本地机器(同时读取集群进程的stdout/stderr),以便向用户显示当前进度
- 登录节点-占用宝贵资源的明显问题,在许多情况下将被禁止李>
- 计算节点-听起来相当狡猾-尤其是如果集群有一个排队系统(slurm、sun grid等)!也可能被禁止
- 将数据从集群传递到本地计算机-因为我们使用的是集群-根据定义,我们可能会生成大量数据,用户希望看到这些数据的至少一部分!还有,应该如何做到这一点?我可以看到如何使用jsch或类似工具通过ssh在远程机器上执行命令,但如果我当前登录到远程机器上,如何将信息传回本地机器
- 在本地计算机中显示后端的stdout/stderr。与上面类似
- 处理单个集群的特殊方面——我看到的唯一方法是允许用户编写自定义slurm脚本或类似的脚本
- 如何检测后端计算是否已完成/失败-此问题与用户编写的任何自定义slurm脚本交互
实际上,我刚刚遇到了这个问题:这似乎表明,如果集群允许“交互式”模式的作业,那么您可以从计算节点运行GUI。然而,我对此不太了解,也不知道这是否常见。如果您能就这方面发表意见,我将不胜感激。您可以利用所示的方法:a用于在a的后台执行命令,而命令的输出则显示在适当的组件中。在这个例子中,
ls-l
将变成sshusername@host“ls-l”
。根据需要使用。您可能会发现检查Eclipse并行工具平台()的体系结构很有帮助。谢谢您的输入。我一定会看一看。嗨,谢谢你的回答。然而,我已经知道如何使用ProcessBuilder执行系统命令——这就是我在本地机器上执行MPI作业所做的。我还知道,我可以按照您描述的方式使用ssh登录,或者使用JSch或类似的库。困难在于设计出一个可靠、健壮的系统,以扩展到在HPC集群上运行MPI作业;我猜没有普遍的解决办法。另见潜力。如果集群在一个已建立的TCP端口(例如JDBC++)上公开了一个众所周知的服务,那么您可以通过SSH转发端口。我的JavaGUI只处理MPI后端的执行,而不是执行MPI通信本身。关于没有通用解决方案,您可能是对的-也许我需要仔细定义我的范围-但是,这意味着知道足够多来定义范围!:(