【问题标题】:How can I implement MATLAB parallel computing on more than one node如何在多个节点上实现 MATLAB 并行计算
【发布时间】:2019-07-11 08:43:16
【问题描述】:

在超级计算服务器上,我将任务分配给 2 个节点,最多 48 个工作人员。

但是 MATLAB 命令parpool(36) 不起作用。错误信息如下:

使用 parpool 时出错(第 113 行) 您请求至少 36 个工作人员,但集群“本地”的 NumWorkers 属性设置为最多允许 24 个工作人员。要在比这更多的工作人员上运行通信作业(本地集群最多为 512),请增加集群的 NumWorkers 属性的值。本地集群的 NumWorkers 的默认值是本地机器上的核心数。

根据这个提示,我在代码中添加了两个命令,如下所示:

myCluster = parcluster;
myCluster.NumWorkers = 36;

之后,parpool(36) 运行没有错误,但计算时间保持不变。所以我猜这两个命令帮不了我。如何在 2 个节点上使用 36 核?

【问题讨论】:

  • 可能你的代码不正确,但我们不知道,你没有分享代码
  • 您是在告诉 MATLAB 它可以在哪些模式下运行?看起来您正在单个节点上进行计算。

标签: matlab parallel-processing


【解决方案1】:

您编写的代码在 MATLAB 中使用“本地”集群类型。这旨在在单台机器的核心上运行。如果您想在“真实”集群上运行,您需要使用提交到MATLAB Parallel Server 集群的集群配置文件来提交作业(或启动parpool)。

例如,如果您想使用运行 SLURM 的现有集群,您可以按照说明 here 安装内容,然后按照 here 设置集群配置文件。获得此类集群配置文件后,您可以提交 batch 作业以在其中运行,如下所示:

clus = parcluster('my slurm profile');
j = batch(@myFunction, 3, {in1, in2}, 'Pool', 36); % 3 is nargout for myFunction

或者您可以像这样在访问集群的客户端上运行交互式池

parpool('my slurm profile', 36);

【讨论】:

    猜你喜欢
    • 2013-08-01
    • 2015-04-14
    • 2017-08-22
    • 1970-01-01
    • 2012-10-08
    • 1970-01-01
    • 2021-12-18
    • 2012-02-28
    • 1970-01-01
    相关资源
    最近更新 更多