配置用于 Slurm、Torque、LSF、PBS、Grid Engine、HTCondor 或 AWS 批处理系统。
在集群上使用 MATLAB® Parallel Server™ 配合第三方调度器来运行并行作业。此配置允许 MATLAB 客户端向由 Slurm、LSF® 和 Torque 等调度器管理的集群提交作业。
开始之前,您必须确保已在集群节点上安装并获得了 MATLAB Parallel Server 的许可。有关详细信息,请参阅在集群中为 MATLAB Parallel Server 授予许可并进行安装。
MATLAB 如何与第三方调度器集群进行接口
MATLAB Parallel Server 无需在您的集群上部署服务器端组件或专用服务。相反,MATLAB 使用了一个插件框架,其中包含的脚本定义了 MATLAB 客户端与调度器以及 MATLAB Parallel Server 工作单元之间的通信方式。
每个包含 Parallel Computing Toolbox™ 的 MATLAB 安装包都包含针对特定调度器的插件脚本,您可以直接使用这些脚本,也可以对其进行自定义。插件脚本中包含针对您的集群基础设施量身自定义的指令,例如:
如何与作业调度器进行接口(提交、监控或取消作业)。
如何将作业和任务数据传输到集群节点。
集群配置文件允许您为插件脚本定义某些属性,然后在 MATLAB 客户端中创建集群、作业和任务对象时应用这些属性。默认情况下,您的 MATLAB 安装包中包含适用于以下调度器的插件脚本和集群配置模板:
Slurm
LSF
Torque
PBS Pro® 和 OpenPBS
Grid Engine
HTCondor
AWS® Batch
如果您使用的调度器不受 MATLAB 支持,可以使用通用调度器接口。若要使用通用集群配置文件与集群进行接口,请参阅 使用通用调度器接口进行配置。
为了管理作业,这些脚本会调用调度器的命令行实用工具。例如,使用 sbatch、qsub 或 bsub 提交作业,使用 squeue、qstat 或 bjobs 查询作业状态。为了使客户端与 MATLAB Parallel Server 工作单元之间能够进行通信,脚本会将作业和任务文件存储在磁盘上,以便进行传输和结果检索。
创建集群配置文件并验证安装
为您的特定调度器创建一个集群配置文件。此过程验证并行计算产品是否在您的集群上正确安装和配置。
对于某些调度器,您可以使用内置集群类型或通用调度器接口创建集群配置文件。作为最佳做法,请尽可能使用内置集群类型。
步骤 1:创建集群配置文件
在此步骤中,您将创建一个集群配置文件以供后续步骤使用。
在 MATLAB 客户端上,启动集群配置文件管理器。在主页选项卡的环境区域中,选择并行 > 创建和管理集群。
通过选择添加集群配置文件 > Slurm(或 AWS Batch、Grid Engine、HTCondor、LSF、PBS Pro 或 Torque(视情况而定))在集群配置文件管理器中创建一个新的配置文件。
在列表中选择新的配置文件后,点击重命名并将配置文件名称编辑为
InstallTest。选择 Enter。在“属性”选项卡中,提供以下字段的设置:
将描述字段设置为
For testing installation。将 JobStorageLocation 字段设置为要在客户端计算机上存储作业和任务数据的位置,例如
C:\Temp\joblocation。如果集群中的节点也能访问该位置,MATLAB Parallel Server 工作单元可以直接对其进行读写操作。否则,客户端使用sftp在集群之间复制作业和任务数据文件。注意
不能对不同版本的并行计算产品使用相同的作业存储位置。集群上的每个版本都必须使用其自己的作业存储位置。
在许可限制范围内,将 NumWorkers 字段设置为您想要运行验证测试的工作单元数量。
将 NumThreads 设置为每个工作单元上使用的线程数。
将 ClusterMatlabRoot 设置为在工作单元计算机上运行的 MATLAB 安装位置。
如果集群使用在线许可,请将 RequiresOnlineLicensing 设置为 true。
如果将 RequiresOnlineLicensing 设置为 true,则在 LicenseNumber 字段中输入您的许可证号。
如果您使用的是 LSF,请将 OperatingSystem 字段设置为您的工作单元计算机的操作系统。
如果客户端和工作单元共享同一文件系统,并且可以使用同一个
JobStorageLocation文件夹,请将 HasSharedFilesystem 字段设置为true。否则,将 HasSharedFilesystem 设置为 false。然后将RemoteJobStorageLocation属性添加到 AdditionalProperties 表中,并将其值设置为集群上主节点和工作单元均可访问的某个文件夹。当 HasSharedFilesystem 为 false 时,MATLAB 会使用 SFTP 在客户端和集群之间传输作业和任务文件。
默认情况下,您的 MATLAB 安装附带可立即使用的调度器程序插件脚本。您可以将 PluginScriptsLocation 字段保留为默认值 MathWorks®,系统会提供相应的插件脚本。
如果您想在集群配置文件中使用自定义插件脚本,您可以在 PluginScriptsLocation 字段中指定自定义插件脚本的位置。要了解如何下载和修改默认插件脚本,请参阅下载并自定义插件脚本。
您可以向 AdditionalProperties 表添加其他属性,以自定义客户端如何使用内置调度器属性或自定义调度器属性与集群交互。有关每个调度器的内置附加属性的完整列表,请参阅 自定义示例插件脚本的行为。
例如,您可以使用这些附加属性来连接远程集群并在其上运行作业。
ClusterHost如果客户端无法使用调度器实用工具直接向调度器提交作业,则插件脚本会建立与集群的 SSH 会话,并通过该连接执行调度器命令。当 MATLAB 运行
sbatch和squeue等调度器实用工具时,您必须提供集群头节点或登录节点的主机名。在 AdditionalProperties 表下,选择添加。指定一个名为ClusterHost的新属性。该值应指定集群头节点的主机名,例如cluster-host-name。将类型设置为String。RemoteJobStorageLocation如果客户端和工作节点使用的作业存储位置不同,且您将 HasSharedFilesystem 设置为 false,则必须提供一个头节点和集群工作单元均可访问的作业存储位置。客户端使用 SFTP 在您的计算机与集群上的远程作业存储位置之间复制作业和任务文件。在 AdditionalProperties 表下,选择添加。指定一个名为
RemoteJobStorageLocation的新属性。对于值,提供集群工作单元可以存储作业和任务数据的位置的路径,例如/network/share/joblocation。将类型设置为String。
点击完成以保存您的集群配置文件。完成的集群配置文件应类似于这些图形之一。
步骤 2:验证集群配置文件
在此步骤中,您将验证您的集群配置文件,从而验证您的安装。您可以指定验证个人配置文件时要使用的工作单元数量。如果您没有在验证选项卡中指定工作单元的数量,那么验证将尝试使用与属性选项选项卡上的 NumWorkers 属性所指定值一样多的工作单元。您可以指定较少数量的工作单元来验证您的配置,而无需占用整个集群。
如果尚未打开,请从 MATLAB 桌面启动集群配置文件管理器。在主页选项卡的环境区域中,选择并行 > 创建和管理集群。
在列表中选择您的集群配置文件。
点击验证选项卡。
使用复选框选择全部或部分验证阶段,并指定验证您的配置文件时要使用的工作单元数量。
点击验证。
客户端完成集群验证后,验证选项卡显示输出。
该图显示了通过所有验证测试的 InstallTest 配置文件的结果。
注意
如果您的验证未通过,请联系 MathWorks 安装支持团队。
如果您的验证通过,您现在就拥有一个可以在其他并行应用程序中使用的有效配置文件。您可以根据申请需要对配置文件进行任何修改,例如 NumWorkersRange、AttachedFiles、AdditionalPaths 等。
若要与其他用户共享您的配置文件,请选中该配置文件并点击 导出,然后将配置文件保存到方便查找的位置。其他用户可以通过在集群配置文件管理器中选择导入来导入您的配置文件。
下载并自定义插件脚本
Parallel Computing Toolbox 使用一组插件脚本来定义您的计算机如何与您的调度器通信。您的 MATLAB 安装附带可立即使用的调度器特定插件脚本。但是,您可以下载并修改插件脚本来配置 MATLAB 如何与调度器交互,以最适合您的集群设置并支持自定义提交选项。
下载插件脚本
MathWorks 为以下第三方调度器提供插件,您可以从 GitHub® 存储库或附加功能资源管理器下载。
| 插件 | GitHub 存储库 |
|---|---|
Parallel Computing Toolbox plugin for MATLAB Parallel Server with Slurm | https://github.com/mathworks/matlab-parallel-slurm-plugin |
Parallel Computing Toolbox plugin for MATLAB Parallel Server with IBM Spectrum® LSF | https://github.com/mathworks/matlab-parallel-lsf-plugin |
Parallel Computing Toolbox plugin for MATLAB Parallel Server with Grid Engine | https://github.com/mathworks/matlab-parallel-gridengine-plugin |
Parallel Computing Toolbox plugin for MATLAB Parallel Server with PBS | https://github.com/mathworks/matlab-parallel-pbs-plugin |
Parallel Computing Toolbox plugin for MATLAB Parallel Server with HTCondor | https://github.com/mathworks/matlab-parallel-htcondor-plugin |
使用这些工作流之一为您的调度器下载适当的插件脚本。
您可以从 GitHub 存储库下载插件。
从您计算机上的命令行窗口克隆 GitHub 存储库。例如,要使用 Slurm 克隆 MATLAB Parallel Server 的 Parallel Computing Toolbox 插件的存储库,请使用:
git clone https://github.com/mathworks/matlab-parallel-slurm-plugin
在浏览器中访问 GitHub 页面并将插件下载为 ZIP 存档。
或者,要从 MATLAB 附加功能资源管理器安装附加功能,请转到主页选项卡,在环境部分中点击附加功能图标。在附加功能资源管理器中,搜索附加功能并安装它。
您还可以从 MATLAB Central™ File Exchange 下载插件。
自定义插件脚本
您可以通过添加自己的自定义附加属性来自定义插件脚本。自定义附加属性允许您在向集群提交作业时修改这些属性的值,而无需重复修改插件脚本。
作为示例,考虑一个 Slurm 调度器。Slurm 的提交命令接受 -nodelist 参量,允许您指定想要运行的节点。为 -nodelist 创建一个附加属性允许您更改此参量的值,而无需修改插件脚本。要创建 -nodelist 参量附加属性,请将此代码模式包含在插件脚本文件夹中的 independentSubmitFcn.m 或 communicatingSubmitFcn.m 脚本中。
% Basic SLURM submit command submitCommand = 'sbatch'; % Check if property is defined if isprop(cluster.AdditionalProperties, 'NodeList') % Add appropriate argument and value to submit string submitCommand = [submitCommand ' --nodelist=' cluster.AdditionalProperties.NodeList]; end
或者,要修改独立作业和通信作业的提交命令,请在 getCommonSubmitArgs 函数中包含上述代码模式。getCommonSubmitArgs 函数是示例插件脚本中包含的辅助函数,您可以使用它来修改两种类型作业的提交命令。您可以像内置附加属性一样向集群配置文件中的 AdditionalProperties 表中添加自定义附加属性。您还可以使用集群对象设置自定义附加属性。要了解详细信息,请参阅设置其他属性。
在 LSF 集群上配置 Windows 调度器
如果您的集群已配置为使用 mpiexec 和 smpd,且您使用的 MPI 实现库与 matlabroot\toolbox\parallel\mpi\mpiLibConf.m 中定义的兼容,则可以在现有配置下使用 Parallel Computing Toolbox。但是,如果您的集群上没有 mpiexec 但您想使用它,那么您可以使用并行计算产品附带的 mpiexec 软件。
有关 mpiexec 和 smpd 的更多信息,请参阅 MPICH 主页。要查看该页面上的用户指南和安装说明,请选择文档 > 用户文档。
在服务器上配置 Windows 防火墙
如果您在集群节点上使用 Windows 防火墙,请在每个节点的防火墙规则中添加 MATLAB。


