版本: 所有版本

问题描述

此解决方法描述如何在 COMSOL Multiphysics® 中启用分布式并行(集群作业)。

解决方法

COMSOL 支持两种相互的并行操作模式:共享内存并行操作和分布式内存并行操作,包括集群支持。此解决方法适用于分布式内存并行操作。对于共享内存并行操作,请参见解决方法 1096

COMSOL 可以使用 MPI 在计算集群中分配计算。一个大型问题可以分布到许多计算节点上。每个计算过程都会获取一部分指派的数据和总工作负载。这样可以降低每台主机的内存占用量,提供更多的总累积内存,并缩短大型模型的仿真时间。此外,您还可以分配参数化扫描,为每个集群节点分配单独的参数实例。

Windows®(Windows® HPC Server 2008/2012/2016 或使用 Microsoft MPI 的工作站)以及使用 SLURM®、PBS 或 Open Grid Scheduler/Grid Engine(OGS/GE,基于 Sun Grid Engine)的 Linux® 支持集群计算。通过在 COMSOL Desktop® 中配置通用调度程序类型(使用附加的封装脚本;参见下文),或者从命令行创建用于批处理提交的作业提交脚本,您可以使用 LSF 等其他常见的调度程序。

注:需要“网络浮动许可证”(FNL) 才能在分布式内存并行(集群/云计算)模式下运行 COMSOL Multiphysics®。

请阅读以下章节,了解有关如何开始集群计算的信息和附加链接,并获取有用的技巧和故障排除指导信息。

集群操作模式

您可以在以下操作模式下设置和启动 COMSOL Multiphysics® 集群计算:

从 GUI 远程运行:在集群上运行 COMSOL Multiphysics® 的最简单方式是从 GUI 运行。您可以在本地桌面、工作站或集群本身启动 GUI,用于建立模型。您可以在研究中使用集群计算集群扫描节点,在远程集群或同一本地机器上配置和启动并行执行。当外部分布式作业完成时,解数据会存储在指定的输出文件中。您可以在“集群扫描”节点上选择同步解选项,以便在本地 GUI 中提供用于后处理的参数化解。有关如何设置用于分布式计算的研究以及如何配置集群访问的描述,请参阅 COMSOL Desktop 环境如何实现在集群上运行。您可以在 GUI 中应用有关远程集群中作业调度程序的设置(引用示例中使用了 SLURM®)。

从命令行调用集群批处理:出现以下任意情况时,使用基于 GUI 的集群计算方法来计算大型模型可能不可行:需要传输大数据;作业执行时间很长;开始计算的时间非常晚(多用户集群中的调度程序可能使作业执行延迟);没有可用的 GUI。在这种情况下,您可以从命令行将集群作业作为批处理命令启动。从命令行进行分布式 Runtime,研究中无需使用集群计算集群扫描节点(如果存在这些节点,您甚至可以将其忽略)。启动分布式批处理作业的机制与如何从命令行以批处理模式运行仿真中描述的类似。有关更多详细信息,请参见下面的操作说明。如果集群由调度程序(如 SLURM®、PBS/Torque、OGS/GE、HPCS (Microsoft HPC Pack) 或 LSF)控制,您需要通过提交脚本来封装 COMSOL 批处理命令。

在分布式 GUI 实例中:如果集群不受调度程序控制,您可以使用分布式集群实例启动交互式 GUI 会话。此时的界面外观与您在标准个人计算机或工作站上运行 COMSOL Multiphysics® GUI 时类似。并行执行研究不需要“集群计算”或“集群扫描”节点。

客户端-服务器模式:COMSOL Multiphysics® 产品的 COMSOL 客户端-服务器模式(请勿与 COMSOL Server™ 混淆)也可用于分布式 COMSOL Multiphysics® Server。有关此操作模式的简介,请参阅充分利用客户端-服务器模式。在集群中,您可以使用 COMSOL 命令行参数启动分布式 COMSOL Multiphysics® Server(请参见下面的详细信息),并从用作客户端的远程 GUI 连接到该分布式 Multiphysics Server。

云计算:通过在云计算硬件上运行也可以获得集群计算的优势。有关其他信息,包括可以帮助您快速轻松完成设置的云供应商合作伙伴的列表,请参见在云中运行 COMSOL® Multiphysics 和 COMSOL Server™ 以及云合作伙伴

基本信息

描述集群计算和共享内存并行计算所用硬件的常用术语如下:

  • 主机:主机是具有网络适配器和唯一网络地址的物理机器。集群由通过网络连接的多台主机组成。主机有时也称为物理节点。
  • 计算节点:计算节点用于进行分布式计算。COMSOL 实例驻留在每个计算节点中,并使用 MPI 与其他计算节点通信。计算节点是在操作系统上运行的进程,您可以将多个计算节点指派到一台主机上运行。
  • 内核:具有多核处理器的主机上运行的计算节点在共享内存并行模式下使用一个或多个物理处理器内核。例如,具有两个四核处理器的主机有八个可用的内核。

以下设置对于指定 COMSOL 如何在分布式内存硬件上执行集群作业尤为重要:

  • 节点数:执行集群作业时在所有主机上创建的计算节点的总数。这也是活动 MPI 进程数。
  • 主机文件:主机文件是包含每台主机 IP 地址或主机名的纯文本文件。在为 COMSOL 正确配置的主机文件中,每个 IP 地址应该只列出一次,且每个条目单独一行。
  • 主机上的进程数:将在每台主机上运行的计算节点的数量。

您可以在 COMSOL GUI 的集群计算集群扫描节点以及作业配置节点下的关联节点中找到“节点数”和“主机上的进程数”设置。您可以在首选项多核与集群计算中设置主机文件:

从命令行运行 COMSOL 的非交互式会话时,您可以提供类似的设置作为执行参数:

  • -nn <no. of nodes> | 计算节点总数
  • -f <path/hostfile> | 包含主机名列表的路径和文件
  • -nnhost <no. of nodes per host> | 要在每台主机上运行的计算节点的数量
  • -np <no. of cores> | 每个计算节点要使用的内核数

从命令行开始

开始使用 COMSOL 集群计算的一种快捷方式是直接从命令行运行作业。为此,您需要访问一个集群,并且能够在其中登录一台主机并执行命令。最简单的一个例子是基于普通工作站计算机构建的贝奥武夫集群,如建立贝奥武夫集群加速多物理场仿真中所述。

我们举几个例子,并假设系统由四台主机组成,每台有八个内核。在第一个例子中,输入文件 example.mph 可以是分布在四台主机上运行的任意 COMSOL 文件。之所以这样做,最常见的原因是求解器所需的内存太多,无法在一台主机上运行。以下 Linux® 操作系统执行行将创建四个计算节点,每台主机运行一个,hostfile 中列出了每台主机的 IP 地址或主机名。每个计算节点将使用主机上可用的所有八个内核。

comsol batch -nn 4 -nnhost 1 -np 8 -f hostfile -inputfile example.mph \
-outputfile example_solved.mph -batchlog logfile.log

在第二个例子中,输入文件 example.mph 可以是包含参数化扫描的任意 COMSOL 模型文件,其中每个参数值的求解可以在一台机器上完成。在集群中分布扫描可以加快求解速度。在准备模型时,请转到参数化扫描节点,在“模型开发器”窗口顶部的“视图”菜单中打开高级研究选项,然后在研究扩展设置下选中分布式参数化扫描复选框。此设置可将 COMSOL 调度程序配置为在其他计算节点上运行每个参数值。使用第一个例子中的相同 Linux® 命令可同时运行四个参数,每台主机运行一个。如果要扫描的参数超过四个,那么当计算节点完成对一个参数的求解时,它将自动开始求解另一个参数,直到完成所有参数的求解。

对于某些参数化扫描,比如在相对较小的模型中求解多个参数,那么在每台主机上指派多个计算节点是比较好的做法。以下 Linux® 命令将创建八个计算节点,对于 hostfile 中列出的四台主机,每台运行两个。由于两个计算节点需要共享主机上可用的八个内核,因此,每个计算节点上指派了四个内核。

comsol batch -nn 8 -nnhost 2 -np 4 -f hostfile -inputfile example.mph \
-outputfile example_solved.mph -batchlog logfile.log

博客文章混合计算:共享内存和分布式内存相结合的优势讨论了在单台主机上同时运行多个参数的潜在优势。

交互式 COMSOL® 会话中的集群分布

运行集群作业的另一种方式是在研究中添加集群计算集群扫描节点。右键单击研究节点(必须启用高级研究选项)即可完成此操作。集群计算接口将研究工作分布到所有主机上,与上述第一个例子类似。您可以在“集群计算”或“集群扫描”节点上应用节点数、主机文件和并发作业数等相关设置。有关可用设置的详细描述,请参阅 COMSOL Desktop® 环境如何实现在集群上运行

集群扫描接口与运行分布式参数化扫描类似,如上述第二个例子所述。其中包含跨参数实例同步解数据或累积探针表的附加设置。博客如何使用 Comsol Multiphysics® 中的集群扫描节点描述了如何设置和使用“集群扫描”节点。

“案例库”中包含的集群计算模型案例如下:

COMSOL_Multiphysics/Tutorials/micromixer_cluster 演示如何使用集群计算接口将运行单个模型的工作分布到多个节点。如果 COMSOL 会话在其中一台集群主机上运行,那么将“调度程序类型”设置改为“常规”,然后指定节点数并提供主机文件路径,即可使用内置的 COMSOL 调度程序。

微混合器 - 集群版本

COMSOL_Multiphysics/Tutorials/thermal_actuator_jh_distributed 演示如何将集群计算接口与分布式参数化扫描结合使用,使每个节点运行不同的参数。您也可以通过将集群计算参数化扫描替换为集群扫描来实现此功能,后者包含额外的文件处理选项,并且对单独节点故障具有更强的恢复能力。

微执行器焦耳热 - 分布式参数版本

启动 GUI 集群实例

您可以通过调用类似如下的命令来启动 GUI 集群实例(在非批处理模式下):

comsol -nn 8 -nnhost 2 -np 4 -f hostfile 

GUI 中的所有计算都在分布式模式下运行,并且在相应的研究中不需要“集群计算”或“集群扫描”节点。请注意,对于调度程序控制的集群,或者因系统策略而没有可用的 GUI 时,此方法并不适用。

在安装有 Microsoft MPI 的(多核/多插槽)Windows 计算机上,您可以通过调用类似如下的命令来启动 GUI 集群实例:

mpiexec -n 2 comsolcluster.exe -np 2

此命令可提供通过两个线程运行的两个计算节点(适用于四核处理器)。

启动分布式 COMSOL Multiphysics® Server

您可以使用类似如下的命令启动分布式 COMSOL Multiphysics® Server:

comsol mphserver -nn 8 -nnhost 2 -np 4 -f hostfile 

当另一个 COMSOL Multiphysics 实例启动(在同一台机器或其他机器上)并作为客户端连接到 Multiphysics® Server 时,所有计算都会在指定的并行环境中执行。

阅读批处理日志和求解器日志

阅读求解器日志(GUI 交互式运行)或批处理日志(批处理运行)始终是较好的做法。在 COMSOL Multiphysics 5.4 中,输出数据可以提供启动进程的主机名、使用的计算进程(节点)数,并提供有关使用的处理器、插槽和内核数的信息。

当 COMSOL 启动时,您可以获取如下信息:

Node 0 is running on host: cluster0
Node 0 has address: cluster0.myinst.com
Node 1 is running on host: cluster1
Node 1 has address: cluster1.myinst.com
...

GUI 中的“消息”窗口会通知您类似如下的消息:

使用 8 个节点在分布式模式下运行

“日志”窗口中的求解器日志或批处理日志文件从以下方面详细描述了所有计算节点的处理器和内核信息

...
<<<<< 节点 1 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
使用 8 个节点在分布式模式下运行。
在 2 x Intel(R) Xeon(R) Gold 6132 CPU 上运行,频率为 2.60 GHz。
在 cluster1.myinst.com 上使用 2 个插槽(共 28 个内核)。
...

<<<<< 节点 1 <<< ... 行用于指定可输出后续行的节点。后续第一行是所有节点发出的全局信息,最后两行是特定于当前节点的局部信息。

注:COMSOL 不会受益于超线程技术。特定主机上的进程使用的内核总数不应超过该主机上的物理内核数。请检查日志中是否存在警告,以防止过度分配。如果您的处理器支持超线程,您应该总是启用此功能,以便其他应用程序加以使用。

直接提交到作业调度程序

如果集群由作业调度程序控制,您可以在调用中添加调度程序特定的命令。在 SLURM® 集群中,启动命令如下所示

sbatch -N 4 --ntasks-per-node=2 --export=FLROOT=${COMSOL_INSTALL_PATH} \
${COMSOL_INSTALL_PATH}/bin/comsol batch -mpibootstrap slurm \
-inputfile ${MODEL_PATH}/input.mph -outputfile ${MODEL_PATH}/output.mph \
-batchlog ${MODEL_PATH}/job.log

SLURM 选项 -N 用于设置物理主机数,选项 --ntasks-per-node 用于设置每台物理主机的计算节点数。COMSOL 选项 -mpibootstrap slurm 指示 COMSOL 从 SLURM 环境推导 COMSOL 特定的参数 -nn-nnhost(线程数 -np 的值将自动设为最优值,即,使用所有可用资源)。在上例中,我们得到 -nn 8-nnhost 2。系统变量 FLROOT 需要设为 COMSOL 安装路径(由用户设置的变量 COMSOLINSTALLPATH 给出,比如,本例中为 /usr/local/comsol54/multiphysics)。此外,您还需要设置变量 MODEL_PATH

使用作业提交脚本

如果集群中的作业由调度程序管理,那么您可以将预定义的 GUI 界面用于支持的调度程序(Microsoft HPC Pack、SLURM®、PBS、OGS/GE)。如果使用不支持的调度程序(如 LSF),则可以将调度程序类型配置为“常规”,并从 GUI 调用集群中的封装脚本(请见下文)。

为了从本地启动调度程序控制的集群作业,您可以将 COMSOL 批处理命令封装成作业提交脚本。从命令行启动 COMSOL 时,可以通过选项 -nn 指定计算进程总数(即 MPI 进程总数),并通过选项 -nnhost 指定每台主机的计算进程数。相反,许多调度程序(如 SLURM)都要求将物理主机总数用作输入参数,因此您需要相应地调整预期的设置。计算进程总数(通过 -nn 指定用于 COMSOL)由物理主机数(通过 -N--nodes 指定用于 SLURM®)与每台主机的任务数(通过 --ntasks-per-node 指定用于 SLURM®,通过 -nnhost 指定用于 COMSOL)的乘积给定。除这些附加设置以外,作业提交脚本还必须在所需的 COMSOL 选项与调度程序选项之间进行转换。

以下是提交脚本示例的集合。

SLURM® 作业提交脚本示例

#!/bin/bash
# slurmsubmit.sh    

#SBATCH --nodes=4
#SBATCH --ntasks-per-node=2
#SBATCH --job-name="COMSOL"
#SBATCH --mem="8000"
#SBATCH --time="04:00:00"
#SBATCH --partition="general" 
#SBATCH --mail-type=all 
#SBATCH --mail-user="${USER}@domain.com"
#SBATCH --exclusive 
#SBATCH --account="${USER}" 
#SBATCH -D "/srv/data/comsol54/bin"
#SBATCH -o "${HOME}/logs/slurm.out"
#SBATCH -e "${HOME}/logs/slurm.err"

MODELTOCOMPUTE="mymodel.mph"
INPUTFILE="${HOME}/input/${MODELTOCOMPUTE}"
OUTPUTFILE="${HOME}/output/${MODELTOCOMPUTE}"
BATCHLOG="${HOME}/logs/${MODELTOCOMPUTE}.log"

# COMSOL command, using -nn 8 and -nnhost 2 deduced from SLURM
./comsol batch -mpibootstrap slurm -inputfile ${INPUTFILE} -outputfile ${OUTPUTFILE} \
-batchlog ${BATCHLOG} -alivetime 15 -prefermph -recover -mpidebug 10

使用 sbatch slurmsubmit.sh 启动作业。

OGS/GE 作业提交脚本示例

#!/bin/bash
# ogssubmit.sh

#$ -b y 
#$ -pe "cluster" 8
#$ -wd "/srv/data/comsol54/bin"
#$ -o "${HOME}/logs/ogs.out"
#$ -e "${HOME}/logs/ogs.err"

MODELTOCOMPUTE="mymodel.mph"
INPUTFILE="${HOME}/input/${MODELTOCOMPUTE}"
OUTPUTFILE="${HOME}/output/${MODELTOCOMPUTE}"
BATCHLOG="${HOME}/logs/${MODELTOCOMPUTE}.log"

./comsol batch -nn '${NHOSTS}' -nnhost 1 \
-inputfile ${INPUTFILE} -outputfile ${OUTPUTFILE} -batchlog ${BATCHLOG} \
-recover -alivetime 15 -prefermph 

使用 qsub ogssubmit.sh 启动作业。

PBS 和 Torque 作业提交脚本示例

#!/bin/bash
# pbssubmit.sh

#PBS -V 
#PBS -l nodes=4:ppn=2
#PBS -j oe
#PBS -N "COMSOL"
#PBS -q "standard"
#PBS -d "/srv/data/comsol54/bin"
#PBS -o "${HOME}/logs/pbs.out"
#PBS -e "${HOME}/logs/pbs.err"
#PBS -l walltime="04:00:00"
#PBS -m abe 
#PBS -M "${USER}@myinst.com"

./comsol batch -mpirmk pbs -job b1 -alivetime 15 -prefermph -recover \
-inputfile "${HOME}/input/mymodel.mph" -outputfile "${HOME}/output/mymodel.mph" \
-batchlog  "${HOME}/logs/mymodel.mph.log"

使用 qsub pbssubmit.sh 启动作业。

LSF 作业提交脚本示例

#!/bin/bash
# lsfsubmit.sh

#BSUB -r
#BSUB -t "04:00:00"
#BSUB -J "comsoltest"
#BSUB -q "general"
#BSUB -cwd "/srv/data/comsol54/bin"
# Set total number of compute cores, n = nn*np = 32
#BSUB -n 32
# Use np = 8 cores per node
#BSUB -R "span[ptile=8]"
#BSUB -R "rusage[resmem=8000]"
#BSUB -o "${HOME}/logs/comsol_lsf.log"

MODELTOCOMPUTE="mymodel.mph"
INPUTFILE="${HOME}/input/${MODELTOCOMPUTE}"
OUTPUTFILE="${HOME}/output/${MODELTOCOMPUTE}"
BATCHLOG="${HOME}/logs/${MODELTOCOMPUTE}.log"

# Launch the COMSOL batch job with -nn 4 -nnhost 1 -np 8 derived from LSF
./comsol batch -mpibootstrap lsf -inputfile ${INPUTFILE} -outputfile ${OUTPUTFILE} \
-batchlog ${BATCHLOG}

使用 bsub lsfsubmit.sh 启动作业。

xml 格式的 HPCS 作业文件示例

<?xml version="1.0" encoding="utf-8"?>
<Job IsExclusive="true" Owner="myname" UserName="myname" JobType="Batch" 
     Priority="Normal" MinNodes="2" MaxNodes="2">
    <Dependencies></Dependencies>
    <Tasks>
        <Task WorkDirectory="\srv\data\comsol54\bin\win64" 
              CommandLine="mpiexec.exe comsolclusterbatch.exe  
              -inputfile "\home\myname\input\batchmodel.mph" 
              -batchlog "\home\myname\output\batchmodel.mph.log" 
              -prefsdir "\home\myname\data\comsol\prefs" -recover" 
              StdOutFilePath="\home\myname\output\batchmodel.mph.out" 
              StdErrFilePath="\home\myname\output\batchmodel.mph.err" 
              MinNodes="2" MaxNodes="2"></Task>
    </Tasks>
</Job>

封装脚本

当您从 GUI 配置不支持的调度程序时,需要使用远程端的封装脚本,该脚本从本地 GUI 调用。调用的结构是(如果要在远程机器上执行): ssh command - wrapper script - COMSOL command。封装脚本将 COMSOL 命令用作输入,并从 COMSOL 命令中提取 -nn-nnhost-np 的设置,然后将它们转换为作业提交调用。

您可以在前置命令框中设置封装脚本,该编辑框位于首选项/多核与集群计算窗口或“作业配置”下的“集群计算”节点中:

首选项中的封装脚本

含封装脚本的集群计算节点

用于 SLURM® 的封装脚本 wrapper.sh 如下所示

#!/bin/bash
# wrapper.sh

COMSOL_COMMAND=$*
# parse arguments: -np, -nn, -nnhost
while [ $# -gt 0 ]; do
    case "$1" in
        -np)
            shift
            NP=`sh -c "echo $1"`
            shift
            ;;
        -nn)
            shift
            NN=`sh -c "echo $1"`
            shift
            ;;
        -nnhost)
            shift
            NNHOST=`sh -c "echo $1"`
            shift
            ;;
        *)
            shift
            ;;
    esac
done

NNODES=${(((${NN}+${NNHOST}-1)/${NNHOST}))}

# call sbatch
sbatch --nodes=${NNODES} --ntasks-per-node=${NNHOST} --job-name="COMSOL" \
--mem="8000" --time="04:00:00" --partition="general" \
--exclusive --account="${USER}" -D "/srv/data/comsol54/bin" \
-o "${HOME}/logs/slurm.out" -e "${HOME}/logs/slurm.err" \
${COMSOL_COMMAND}

另请参见

有关 COMSOL 如何在多核计算机上使用共享内存并行的附加信息,请参见 COMSOL 和多线程处理

硬件建议

请参见“知识库”中的解决方法:选择集群硬件

故障排除

首先,请确保您安装了最新版软件。您可以在此下载最新版本。此外,还需执行帮助 > 检查更新以安装最新的软件更新。您也可以单击此处下载最新更新。

分布式参数化扫描的解数据不完整或发生错误

如果 COMSOL 5.3a(更新 4 之前的所有版本)中分布式参数化扫描的解数据不完整,或是您收到“解编号无效”或“解编号超出范围”之类的错误,请参见知识库条目 1249,获取问题描述以及建议的变通方法。

与 Linux® 上的 GTK 相关的错误消息
GLib-GObject-警告 **:无效 (NULL) 指针实例
GLib-GObject-CRITICAL **: g_signal_connect_data:断言“G_TYPE_CHECK_INSTANCE(实例)”失败
Gtk-CRITICAL **: gtk_settings_get_for_screen:断言“GDK_IS_SCREEN(屏幕)”失败
...

当 COMSOL® 用户界面的 Java® 组件尝试在图形窗口中显示错误消息,但没有可用的图形显示时,通常会发生上述错误。这种错误表明,在 COMSOL 配置目录中启动 Eclipse Runtime 的过程中出现问题。您可以查看日志文件,其形式为 .comsol/v54/configuration/comsol_<一些数字>/<一些数字>.log。解决此问题的变通方法是:在文本编辑器中打开以下三个 COMSOL *.ini 配置文件:

/usr/local/comsol54/multiphysics/bin/glnxa64/comsolcluster.ini
/usr/local/comsol54/multiphysics/bin/glnxa64/comsolclustermphserver.ini
/usr/local/comsol54/multiphysics/bin/glnxa64/comsolclusterbatch.ini

并找到以下行

-Dosgi.configuration.area=@user.home/.comsol/v54/configuration/comsol_@process.id
-Dosgi.instance.area=@user.home/.comsol/v54/workspace/comsol_@process.id

如果您使用的是基于漫游配置文件或网络的文件系统,可以改用本地机器上的文件位置来解决此问题。后缀 _@process.id 对于避免不同进程之间的冲突非常重要。如果您没有安装文件夹的写权限,可以将修改后的 *.ini 文件放入用户定义的目录,并可在启动 COMSOL 时通过 -comsolinifile 标志传递路径。除了修改 *.ini 文件,您还可以采用备选方法,即:在启动时使用 -configuration-data 标志。请注意,由于包含重要数据的现有目录可能被清除,configurationworkspace 的路径不应指向这些目录。

检查节点是否可以访问许可证管理器

Linux®:登录到每个节点并运行以下命令

comsol batch -inputfile /usr/local/comsol54/multiphysics/applications/COMSOL_Multiphysics/Equation_Based/point_source.mph -outputfile out.mph

您应该在一行中发出上述命令。其中假设 /usr/local/comsol54 是 COMSOL 安装目录,/usr/local/comsol54/multiphysics/bin 目录(comsol 脚本所在的位置)包含在系统 PATH 中。请确保您对 ./out.mph 具有写权限。在运行上述命令时不应显示任何错误消息,否则可能出现许可证管理器连接问题。

Windows® HPCS:通过远程桌面登录到每个节点,然后启动 COMSOL Desktop GUI。此时不应显示错误消息。

基于 Infiniband 的 Linux® 集群问题

请将 Infiniband 驱动程序更新到最新的软件版本。如果此时无法更新,可以添加命令行选项 -mpifabrics shm:tcp-mpifabrics tcp。这将使用 TCP 在节点之间进行通信。

有关如何解决 Infiniband 问题的更多建议信息,请参阅 COMSOL Multiphysics Reference Manual 中的 Troubleshooting Distributed COMSOL and MPI 一节。

模型树中的集群计算特征问题

如果您收到错误消息“进程状态表明进程正在运行”,表示批处理目录中的 *.status 文件指出上一个作业仍在运行。在某些情况下,即使作业实际上没有运行(例如,作业停止或以不受控制的方式终止),也可能出现这一错误。为了解决这个问题,请执行以下步骤:

  • 取消 Windows® HPCS 作业管理器或您使用的其他调度程序中正在运行的任何作业。
  • 在 COMSOL 中,转到 COMSOL Desktop 右下角的“外部进程”页面。
  • 单击清除状态按钮。 如果仍然存在错误,则手动删除批处理目录中的所有文件。
Linux® 节点之间的通信问题导致的错误消息

如果您收到相关错误消息,请确保计算节点可以通过 TCP/IP 相互访问,并且所有节点都可以访问许可证管理器以签出许可证。如果您在 Linux 集群中的主机之间运行 ssh 协议,则需要预生成密钥,以防止节点在通信开始后相互询问密码:

# generate the keys
ssh-keygen -t dsa
ssh-keygen -t rsa
# copy the public key to the other machine
ssh-copy-id -i ~/.ssh/id-rsa.pub user@hostname
ssh-copy-id -i ~/.ssh/id-dsa.pub user@hostname