在高性能计算(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® 图形界面提交和监控集群作业。
从简单模型开始测试添加集群计算节点
每当我想为尚不熟悉的集群配置集群计算节点时,常常喜欢从简单的母线板模型入手。这个模型只需几分钟即可完成求解,并支持任意类型的许可证,这使集群计算功能的测试变得非常便捷。
为了在集群上运行母线板模型,我们将集群计算节点添加到主研究中。不过,我们需要先启用高级研究选项。为此,我们可以激活首选项中的选项,也可以单击“模型开发器”工具栏中的显示按钮。
激活高级研究选项以启用集群计算节点。
现在,通过右键单击“研究”并选择集群计算,可以将集群计算节点添加到任何研究中。
右键单击“研究”节点,然后从菜单中选择集群计算,将其添加到模型中。
如果找不到集群计算节点,可能是你的许可证未启用集群(如 CPU 许可证和学术类课堂许可证套装)。在这种情况下,请联系销售代表询问许可证选项。
集群计算节点的设置
使用集群计算节点最复杂的部分是找到正确的设置并首次使用它。一旦能够在集群中成功地运行这个节点,即可在其他仿真中轻松地对这些设置进行微调。
为了将设置存储为默认选项,你可以在多核与集群计算和远程计算栏的首选项下更改设置。此外,你也可以将默认设置直接应用于集群计算节点,然后单击“设置”窗口顶部的保存图标。强烈建议你将这些设置存储为默认选项,这样,你就不必为下一个模型再次键入任何内容。
讨论集群计算节点的所有可能设置不在本篇博客文章的范围内,因此我们将重点讨论一个典型的设置。请参阅COMSOL Multiphysics Reference Manual获取更多信息。在本篇博客文章中,我们假设:
- COMSOL Multiphysics® 在本地 Windows® 机器上运行,我们要将作业提交到远程集群
- 集群在 Linux® 系统上运行,并安装有 SLURM® 软件作为调度程序
这些设置如下方屏幕截图所示:
首先,我们来看看集群计算设置栏。由于集群使用 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在集群上的安装位置。
远程连接设置。
下一个重要的栏是远程和云访问,这是我们指定如何在本地计算机和远程集群之间建立连接的位置。
为了从 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® 被锁定,软件忙于跟踪远程作业。
在外部进程窗口中跟踪远程作业的进度,从调度作业(顶)一直到完成作业(底)。
这个过程与批处理扫描节点的工作方式非常相似。事实上,你可以通过使用批处理扫描功能来识别外部进程窗口。就像使用批处理扫描一样,我们可以通过单击外部进程窗口下方的脱离作业按钮,将 GUI 从远程作业中分离出来,从而重新对其进行控制。然后,我们可以通过单击附加作业按钮重新附加到同一个作业,当脱离作业时它取代了脱离作业按钮。
通常,在两台机器上同时运行 COMSOL Multiphysics 需要两个许可证,但你可以选中使用批处理许可证选项,以便从远程作业中分离出来,并仅使用一个许可证在本地继续编辑。事实上,你甚至可以向集群提交多个作业并同时运行这些作业,只要这两个作业是同一个模型文件的变体即可;也就是说,它们只是全局参数值不一样。唯一的限制是你的本地用户名需要与远程集群上的用户名相同,这样许可证管理器可以确定同一个人同时使用两个许可证,否则,即使启用了使用批处理许可证选项,也会占用额外的许可证席位。
仿真完成后,系统会提示你打开生成的文件:
集群作业完成后,系统会提示你立即打开已求解的文件。
如果你选择否,稍后仍然可以打开文件,因为该文件已经下载并复制到设置中指定的目录。我们来看一下这些文件:
集群作业期间在本地端创建的文件。
这些文件随着仿真的执行被创建和更新。COMSOL Multiphysics 定期从远程集群中检索每个文件,在进度窗口中更新状态,并在仿真结束后立即通知你。远程端也存在相同的文件:
集群作业期间在远程端创建的文件。注:颜色已从 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 进程并使每个进程的参数值不同来加快计算速度。我们称这类问题为“高度并行”,因为在求解过程中节点不需要通过网络交换信息。在这种情况下,如果物理节点的数量翻倍,理想情况下仿真时间将减半。实际加速往往没有那么好,因为将模型发送到各个节点需要一些时间,将结果复制回来也需要额外的时间。
为了运行分布式参数化扫描,我们需要激活参数化扫描设置底部的分布式参数化扫描选项。否则,仿真将利用所有集群节点一次运行一个参数,这种情况下,由于在求解器层级执行并行,效率要低得多。
如果运行辅助扫描,你也可以在研究步骤中选中分布参数化求解器选项,从而在可能的多个物理节点上使用多个进程在多个频率下并行运行频率扫描。请注意,如果你使用连续方法,或者各个仿真相互依赖,那么这种分布参数的方法就不起作用了。
注意:不要在集群计算节点上使用分布式参数化扫描选项,因为它的性能已降低。最好在参数化扫描时直接指定。
为了并行运行扫描,我们还可以使用集群扫描节点,它将批处理扫描节点的功能与集群计算节点远程运行作业的能力结合起来。可以说集群扫描是远程版本的批处理扫描,就像集群计算节点是远程版本的批处理节点。我们将在以后的博客文章中更详细地讨论集群扫描。
需要记住的最重要的区别是,集群计算节点为整个研究提交一个作业(即使它包含扫描),而集群扫描和批处理扫描节点为每组参数值创建一个作业。
用 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 是微软公司在美国和/或其他国家/地区的注册商标或商标。
评论 (0)