COMSOL Desktop® 环境如何实现在集群上运行

Lars Drögemüller 2018年 3月 9日

在高性能计算(HPC)硬件上运行 COMSOL Multiphysics® 软件对许多类型的分析都非常有利,这是创建集群计算 节点的主要原因之一,该节点有助于将 COMSOL® 软件与任何类型的 HPC 基础设施无缝集成,同时保持图形用户界面的便利性。在本篇博客文章中,我们将学习如何直接从 COMSOL Desktop® 图形环境在 HPC 硬件上远程运行大型仿真。

什么是集群计算?

HPC 硬件最常见的类型是集群;它是通过网络连接的一组独立计算机(后者通常称为节点)。即使只有一台专用的仿真机器,你也可以将它视为一个单节点集群。

COMSOL Reference Manual 中,还将单个 COMSOL Multiphysics 进程称为节点。这种区别无关紧要,但在需要对二者进行区分时,我们会将计算机称为物理节点或主机,将 COMSOL Multiphysics 程序的实例称作计算节点或进程

阐述集群定义的简单图表。
包含四个计算节点的集群示例。

我们要在集群上执行的工作被捆绑成原子单元(称为作业),并提交给集群。这种情况下的作业是通过 COMSOL Multiphysics 运行的研究。

向集群提交作业时,集群会执行两项操作:

  • 决定哪些节点运行哪些作业,以及何时运行
  • 限制对节点的访问,使多个作业之间不会相互干扰

这些任务分别由称为调度程序资源管理程序 的特殊程序执行,由于大多数程序都是同时执行两个任务,因此这两个术语可以交替使用,本文中我们使用前者。

请注意,在提交给集群的脚本中,可以使用 comsol batch 命令(Linux® 操作系统)或 comsolbatch.exe 命令(Windows® 操作系统)提交 COMSOL Multiphysics 作业。如果你熟悉基于控制台的集群访问,你可能更喜欢这种方法。有关更多信息,请参见 COMSOL 知识库文章“在集群上并行运行 COMSOL® ”。

在接下来的章节中,我们将探讨如何使用集群计算 节点从 COMSOL Desktop® 图形界面提交和监控集群作业。

从简单模型开始测试添加集群计算节点

每当我想为尚不熟悉的集群配置集群计算节点时,常常喜欢从简单的母线板模型入手。这个模型只需几分钟即可完成求解,并支持任意类型的许可证,这使集群计算功能的测试变得非常便捷。

为了在集群上运行母线板模型,我们将集群计算节点添加到主研究中。不过,我们需要先启用高级研究选项。为此,我们可以激活首选项 中的选项,也可以单击“模型开发器”工具栏中的显示 按钮。

显示 COMSOL Multiphysics GUI 中的“高级研究选项”的屏幕截图。
激活高级研究选项以启用 集群计算 节点。

现在,通过右键单击“研究”并选择集群计算,可以将集群计算 节点添加到任何研究中。

显示 COMSOL Multiphysics 中的“集群计算”选项的屏幕截图。
右键单击“研究”节点,然后从菜单中选择 集群计算, 将其添加到模型中。

显示 COMSOL Multiphysics 中的“集群计算”设置的屏幕截图。
集群计算节点的默认设置

如果找不到集群计算节点,可能是你的许可证未启用集群(如 CPU 许可证和学术类课堂许可证套装)。在这种情况下,请联系销售代表询问许可证选项

集群计算节点的设置

使用集群计算节点最复杂的部分是找到正确的设置并首次使用它。一旦能够在集群中成功地运行这个节点,即可在其他仿真中轻松地对这些设置进行微调。

为了将设置存储为默认选项,你可以在多核与集群计算远程计算栏的首选项下更改设置。此外,你也可以将默认设置直接应用于集群计算节点,然后单击“设置”窗口顶部的保存图标。强烈建议你将这些设置存储为默认选项,这样,你就不必为下一个模型再次键入任何内容。

讨论集群计算节点的所有可能设置不在本篇博客文章的范围内,因此我们将重点讨论一个典型的设置。请参阅COMSOL Multiphysics Reference Manual获取更多信息。在本篇博客文章中,我们假设:

  • COMSOL Multiphysics® 在本地 Windows® 机器上运行,我们要将作业提交到远程集群
  • 集群在 Linux® 系统上运行,并安装有 SLURM® 软件作为调度程序

这些设置如下方屏幕截图所示:

显示 COMSOL Multiphysics 中的典型“集群计算”节点设置的屏幕截图。

首先,我们来看看集群计算设置栏。由于集群使用 SLURM® 软件作为调度程序,因此我们将调度程序类型设为“SLURM”。以下选项特定于 SLURM® 类型的调度程序:

  • 调度程序留空,指示 SLURM® 软件仅使用当前可用的调度程序
  • 用户是我们的用户名,可以留空以使用我们登录集群所用的用户名
  • 队列名称是要向其提交作业的队列名称

本例使用的机器上有两个队列:“cluster”用于多达 10 个物理计算节点的作业,每个节点的 RAM 为 64 GB;“fatnode”用于 256 GB 的单个节点。每个集群都有不同的队列,你可以询问集群管理员可以使用哪些队列。

下一个编辑框标为“目录”,这是作业完成后求解的 COMSOL Multiphysics 文件在本地计算机上的保存位置,也是 COMSOL® 软件存储任何中间文件、状态文件和日志文件的位置。

接下来的三个编辑框用于指定集群上的位置。请注意,目录是 Windows® 路径(因为这里我们使用的是 Windows® 计算机),但这三个栏的位置是 Linux® 路径(因为我们的集群使用 Linux® 系统)。请确保路径类型与本地和远程端的操作系统相匹配。

服务器目录 指定在客户端-服务器模式下,从 COMSOL Multiphysics 会话中使用集群计算时,文件应存储的位置。从本地机器执行集群计算时,不使用此设置,因此我们将其留空。然而,我们确实需要外部 COMSOL 批处理目录,这是仿真过程中集群上保存模型文件、状态文件和日志文件的位置。对于这些路径,请确保选择一个已经存在并且您有写入权限的目录;例如根目录下的某个位置。(请参阅上一篇有关使用客户端-服务器模式的博客文章,获取更多详细信息)。

COMSOL 安装目录 一目了然,应该包含 folders bin applications 等文件夹,默认情况下,通常类似于“/usr/local/comsol/v53a/multiphysics/”,但很明显取决于 COMSOL Multiphysics在集群上的安装位置。

显示 COMSOL Multiphysics 中的“远程计算”设置的屏幕截图。
远程连接设置

下一个重要的栏是远程和云访问,这是我们指定如何在本地计算机和远程集群之间建立连接的位置。

为了从 Windows® 工作站连接到 Linux® 集群,我们需要第三方程序 PuTTY 作为 COMSOL® 软件的 SSH 客户端。请确保 PuTTY 已安装并可以使用它与集群连接。此外,还要确保使用一个公私密钥对来设置无密码身份验证。网上有许多相关教程,你也可以求助于集群管理员。完成此操作后,输入 PuTTY 的安装目录作为 SSH 目录,并在 SSH密钥文件 中输入无密码身份验证产生的私钥文件。将 SSH用户 设为你在集群上的登录名。

SSH 用于登录集群并运行命令,SCP 用于文件传输(例如,向集群传入或传回模型文件)。PuTTY 对 SCP 和 SSH 使用相同的设置,因此只需从 SSH 复制设置即可。

最后,在远程主机 下输入集群的地址,它可以是主机名或 IP 地址。还请记得将远程操作系统 设为集群上的正确操作系统。

完成上述操作后,你可以单击“设置”窗口顶部的保存 图标,下次要运行远程集群作业时,可以从这些设置开始操作。

测试集群设置是否有效的另一种可行方法是使用 COMSOL Multiphysics 5.3a 版提供的集群设置验证 App

在集群上运行研究

每次运行研究时更改的设置包括模型名称和要使用的物理节点数量。当你单击运行研究后,COMSOL Multiphysics 开始向集群提交作业。第一步是不可见的,涉及运行 SCP 将模型文件复制到集群。第二步是通过向调度程序提交作业开始仿真。此阶段开始后,外部进程 窗口会自动出现,并通知你集群上仿真的进度。在这个阶段中,COMSOL Desktop® 被锁定,软件忙于跟踪远程作业。

COMSOL Multiphysics 研究的集群计算过程的前三个阶段。 COMSOL Multiphysics 研究的集群计算过程的最后三个阶段。
在外部进程窗口中跟踪远程作业的进度,从调度作业(顶)一直到完成作业(底)

这个过程与批处理扫描节点的工作方式非常相似。事实上,你可以通过使用批处理扫描功能来识别外部进程窗口。就像使用批处理扫描一样,我们可以通过单击外部进程窗口下方的脱离作业按钮,将 GUI 从远程作业中分离出来,从而重新对其进行控制。然后,我们可以通过单击附加作业按钮重新附加到同一个作业,当脱离作业时它取代了脱离作业按钮。

通常,在两台机器上同时运行 COMSOL Multiphysics 需要两个许可证,但你可以选中使用批处理许可证选项,以便从远程作业中分离出来,并仅使用一个许可证在本地继续编辑。事实上,你甚至可以向集群提交多个作业并同时运行这些作业,只要这两个作业是同一个模型文件的变体即可;也就是说,它们只是全局参数值不一样。唯一的限制是你的本地用户名需要与远程集群上的用户名相同,这样许可证管理器可以确定同一个人同时使用两个许可证,否则,即使启用了使用批处理许可证选项,也会占用额外的许可证席位。

仿真完成后,系统会提示你打开生成的文件:

要求在集群作业完成后打开 MPH 文件的对话框。
集群作业完成后,系统会提示你立即打开已求解的文件

如果你选择,稍后仍然可以打开文件,因为该文件已经下载并复制到设置中指定的目录。我们来看一下这些文件:

集群作业期间创建的一组文件。
集群作业期间在本地端创建的文件

这些文件随着仿真的执行被创建和更新。COMSOL Multiphysics 定期从远程集群中检索每个文件,在进度窗口中更新状态,并在仿真结束后立即通知你。远程端也存在相同的文件:

COMSOL Multiphysics 模型的集群作业期间创建的 PuTTY 文件的屏幕截图。
集群作业期间在远程端创建的文件。注:颜色已从 PuTTY 中的默认配色方案更改为强调 MPH 文件

以下是最相关文件类型的概述:

文件 远程端 本地端
backup*.mph N/A
  • 单击计算 时模型文件所处状态的副本
*.mph
  • 作业开始前,输入文件存储在此处
  • 仿真过程中,输出文件写入此处
  • 仿真完成后立即从远程端复制输出文件
*.mph.log
  • 通常写入日志 窗口,但包含更多信息,包括有关内存使用和当前进度百分比
  • 从远程端连续复制
  • 用于更新进度信息
*.mph.recovery
  • 跟踪当前恢复数据的位置,以防止仿真失败
  • 从远程端连续复制
*.mph.status
  • 检查取消停止 事件
  • 状态改变时写入
  • 从远程端连续复制和连续复制到远程端
  • 用于更新状态信息
*.mph.host N/A
  • 包含要向其提交作业的主机的地址(如果有多个)

使用集群计算功能执行 COMSOL Multiphysics® 仿真

母线板模型非常小,我们不想在集群上实际运行。使用该示例测试功能后,我们可以打开任何模型文件,添加集群计算 节点(使用我们之前设置的默认值),更改节点数量和文件名,然后单击计算。无需再次更改远程运行 选项、调度程序类型和所有相关设置。

当我们在多台主机上运行一个模型时,COMSOL® 软件会执行什么操作?工作如何分配?软件中的大多数算法是并行的,这意味着所有主机上的 COMSOL Multiphysics 进程在同一计算中协同工作。将工作分配在多台计算机上可以提供更多的计算资源,并可以提高针对许多问题的处理能力。

然而,应该注意的是,集群节点之间所需的通信可能会产生性能瓶颈。模型的求解速度在很大程度上取决于模型本身、求解器配置、网络质量以及许多其他因素。你可以在关于混合建模的系列博客中找到更多信息。

使用集群硬件性能的另一个原因是,仿真所需的总内存大致保持不变,但所有主机加起来有更多的内存,因此每台主机所需的内存会减少,这使我们能够运行原本不可能在单台计算机上求解的大型模型。实际上,问题的总内存消耗略有增加,因为 COMSOL Multiphysics 进程需要跟踪它们自身的数据以及它们互相接收的数据(通常要少得多)。此外,进程所需的确切内存量是不可预测的,因此添加更多进程可能会增加单个物理节点耗尽内存并中止仿真的风险。

更简单的情况是运行分布式参数化扫描。我们可以通过使用多个 COMSOL Multiphysics 进程并使每个进程的参数值不同来加快计算速度。我们称这类问题为“高度并行”,因为在求解过程中节点不需要通过网络交换信息。在这种情况下,如果物理节点的数量翻倍,理想情况下仿真时间将减半。实际加速往往没有那么好,因为将模型发送到各个节点需要一些时间,将结果复制回来也需要额外的时间。

为了运行分布式参数化扫描,我们需要激活参数化扫描设置底部的分布式参数化扫描选项。否则,仿真将利用所有集群节点一次运行一个参数,这种情况下,由于在求解器层级执行并行,效率要低得多。

如果运行辅助扫描,你也可以在研究步骤中选中分布参数化求解器 选项,从而在可能的多个物理节点上使用多个进程在多个频率下并行运行频率扫描。请注意,如果你使用连续方法,或者各个仿真相互依赖,那么这种分布参数的方法就不起作用了。

注意:不要在集群计算 节点上使用分布式参数化扫描 选项,因为它的性能已降低。最好在参数化扫描时直接指定。

显示 COMSOL Multiphysics 中的“参数化扫描”设置的屏幕截图。
激活 分布式参数化扫描选项以在不同节点上并行运行每组参数。

为了并行运行扫描,我们还可以使用集群扫描 节点,它将批处理扫描 节点的功能与集群计算 节点远程运行作业的能力结合起来。可以说集群扫描是远程版本的批处理扫描,就像集群计算 节点是远程版本的批处理 节点。我们将在以后的博客文章中更详细地讨论集群扫描。

需要记住的最重要的区别是,集群计算 节点为整个研究提交一个作业(即使它包含扫描),而集群扫描批处理扫描 节点为每组参数值创建一个作业。

用 App 进行集群计算

本篇博客文章涵盖的所有内容也可以从 COMSOL Multiphysics 或 COMSOL Server™ 中运行的仿真 App 中获得。App 只是从其所基于的模型继承集群设置。

从 COMSOL Server™ 运行 App 时,你可以在 COMSOL Server™ 的管理网页访问集群首选项。你可以让 App 使用这些首选项为特定的 App 硬连接和定制集群设置。你还可以根据需要将 App 设计成用户可以访问一个或多个低级集群设置。举个例子,你可以在 App 用户界面中设计一个菜单或列表,让用户在不同队列之间进行选择,例如前面提到的“cluster”或“fatnode”选项。

结语

无论你使用的是大学集群、虚拟云环境还是自己的硬件,集群计算 节点都可以让你轻松地远程运行仿真。因此,通常不需要昂贵的装置。事实上,当你在本地处理其他任务时,有时你只需要贝奥武夫集群来运行参数化扫描

集群计算是一个功能强大的工具,可以帮助你加速仿真、研究详细而真实的设备,最终帮助你实现研究和开发目标。

SLURM 是 SchedMD LLC 公司的注册商标。

Linux 是 Linus Torvalds 在美国和其他国家/地区的注册商标。

Microsoft 和 Windows 是微软公司在美国和/或其他国家/地区的注册商标或商标。


博客标签

技术资料
正在加载评论...

博客分类


博客标签