主要内容

本页采用了机器翻译。点击此处可查看最新英文版本。

createCommunicatingJob

在集群上创建通信作业

    说明

    j = createCommunicatingJob(cluster) 为已识别的集群创建一个通信作业对象。

    示例

    j = createCommunicatingJob(___,Name=Value) 还指定使用一个或多个名称-值参量来传达作业对象属性。

    有关支持的对象属性的列表,请参阅 parallel.Job。大多数情况下,您指定的值会覆盖集群配置文件中的值。如果您指定 AttachedFilesAdditionalPaths,软件会将这些值与适用配置文件中的值结合起来。如果指定了无效的属性名称或值,软件将不会创建对象。

    j = createCommunicatingJob(___,Type=jobType) 指定通信作业类型为 poolspmdpool 作业使用可用的并行池运行指定的任务函数。spmd 作业在所有工作单元上同时运行指定的任务函数,并且可以使用 spmd* 函数进行工作单元之间的通信。

    j = createCommunicatingJob(___,Profile=profileName) 创建一个通信作业对象,其属性值与配置文件 profileName 相对应。如果您未指定配置文件,软件将应用集群对象 clusterProfile 属性。

    示例

    全部折叠

    此示例显示如何创建和提交池类型通信作业。

    在默认集群上创建一个通信作业对象。

    myCluster = parcluster;
    j = createCommunicatingJob(myCluster,Type="pool"); 

    将任务添加到作业中,使用 maxEig 函数的函数句柄,该函数使用 parfor 循环来计算随机矩阵的最大特征值。该函数定义在本示例的末尾。maxEig 函数需要一个池类型的通信作业来执行 parfor 循环中的语句。

    createTask(j,@maxEig,1,{100});

    使用 NumWorkersRange 作业属性设置并行执行所需的工作单元数量。

    j.NumWorkersRange = [5 10];

    运行作业。

    submit(j);

    等待作业完成并检索其结果。

    wait(j)
    out = fetchOutputs(j)
    out = 1×1 cell array
        {[2.5248e+03]}
    
    

    从集群中删除该作业。

    delete(j);

    支持函数

    maxEig 函数使用 parfor 循环来计算随机生成的、大小不断增加的矩阵的最大特征值。

    function result = maxEig(N)
        result = 0;
        parfor ii=1:N
            result = result + max(eig(rand(ii)));
        end
    end

    输入参数

    全部折叠

    集群,指定为代表集群计算资源的 parallel.Cluster 对象。要创建对象,请使用 parcluster 函数。

    示例: parcluster;

    数据类型: parallel.Cluster

    通信作业类型,指定为以下选项之一:

    • "pool" - 使用并行池运行指定的任务函数。并行池执行任务函数内部的 parforspmd 等并行函数体。

      您可以通过将 NumWorkersRange 的值设置为以下任一值来指定要进入并行池的工作单元数量:

      • 一个非负整数。

      • 一个由非负整数组成的 2 元素向量,被解释为一个范围。得到的并行池的大小在请求的范围内尽可能大。

      并行池中的一个工作单元运行任务函数。因此,对于 N 个工作单元池上的池类型作业,只有 N-1 个工作单元执行任务函数中的 parforspmd 代码。

      createCommunicatingJob 支持最多有 2000 个工作单元的池。 (自 R2024a 起)

    • "spmd" - 在所有工作单元上同时运行指定的任务函数。您可以使用 spmdSendspmdReceive 等通信函数在工作单元之间进行通信。

    数据类型: char | string

    聚类配置文件文件,指定为字符向量或字符串标量。

    示例: "Processes"Processes 配置文件中指定的属性值应用于该作业。

    数据类型: char | string

    输出参量

    全部折叠

    作业,以 parallel.Job 对象形式返回。

    数据类型: parallel.Job

    提示

    • 为了开发和测试您的代码,您可以在客户端计算机上的本地集群上运行批处理作业。如果您关闭 MATLAB® 会话,任何使用本地集群的批处理作业也会立即停止。

    • 当您将工作卸载到远程集群时,您可以在作业处理时关闭 MATLAB 客户端会话,然后稍后从批处理作业中或在新的客户端会话中检索信息。

    • 当您将计算任务卸载到工作单元时,客户端进行计算所需的任何文件也必须在工作单元上可用。默认情况下,客户端会尝试检测并附加这些文件。要关闭自动检测,请将 AutoAttachFiles 属性设置为 false。如果软件无法找到所有文件,或者从客户端向工作单元发送文件的速度很慢,请使用以下选项之一。

      • 如果文件位于工作单元无法访问的文件夹中,请设置 AttachedFiles 属性。集群将您指定的每个文件从客户端复制到工作单元。

      • 如果文件位于工作单元可访问的文件夹中,则可以设置 AdditionalPaths 属性。使用 AdditionalPaths 属性将路径添加到每个工作单元的 MATLAB 搜索路径,并避免不必要地从客户端复制到工作单元。

    版本历史记录

    在 R2012a 中推出

    全部展开