主要内容

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

parallel.pool.ActivityMonitor

并行池活动监控程序

自 R2025a 起

    说明

    使用 ActivityMonitor 监控并收集并行池中工作单元的活动数据。

    监控数据包括:

    • 并行构造的类型,例如 parforparfevalspmd

    • 客户端和工作单元发送和接收的数据量(以字节为单位)。

    • 每个工作单元处理并行代码部分所花费的时间。

    您可以使用 results 函数检索监控结果,并在并行池仪表板中查看监控数据。

    创建对象

    描述

    monitor = parallel.pool.ActivityMonitor 创建一个 ActivityMonitor 对象,并开始收集当前并行池上的活动监控数据。如果不存在并行池,parallel.pool.ActivityMonitor 将使用默认配置文件启动一个新的并行池,除非您在并行设置中禁用了自动创建池。

    要保存监控结果,请使用 results 函数。要停止收集并保存监控结果,请使用 stop 函数。

    示例

    monitor = parallel.pool.ActivityMonitor(pool) 开始收集由 pool 指定的并行池上的活动监控数据。

    示例

    monitor = parallel.pool.ActivityMonitor(___,Start=false) 创建一个 ActivityMonitor 对象,但不会开始收集活动监控数据。要开始收集监控数据,请使用 start 函数。

    示例

    输入参量

    全部展开

    并行池,指定为 parallel.Pool.ProcessPoolparallel.pool.ClusterPool 对象。

    您可以使用交互式或批处理并行池。ActivityMonitor 不支持线程工作单元的并行池。

    示例: parpool("Processes");

    示例: batch(...,Pool=4);

    输出参量

    全部展开

    并行池活动监控程序,以 ActivityMonitor 对象返回。

    对象函数

    results从并行池活动监控程序中检索结果
    stop停止监控并行池活动
    start开始收集并行池活动监控数据

    示例

    全部折叠

    创建一个 ActivityMonitor 对象,开始收集池监控数据。在默认设置下,如果不存在默认配置文件,parallel.pool.ActivityMonitor 会自动使用默认配置文件启动交互式并行池。

    monitor = parallel.pool.ActivityMonitor;
    Starting parallel pool (parpool) using the 'Processes' profile ...
    Connected to parallel pool with 6 workers.
    

    运行一个 parfor 循环来生成随机数,并将它们存储在一个数组中。

    data = zeros(1,100);
    parfor idx = 1:100
        data(idx) = rand;
    end

    停止活动监控程序并获取在 parfor 执行期间收集的结果。

    monitorResults = stop(monitor);

    使用集群配置文件 MyCluster 创建一个并行池。

    pool = parpool("MyCluster");

    创建一个 ActivityMonitor 对象来收集池的监控数据,但不要立即开始收集数据。

    monitor = parallel.pool.ActivityMonitor(pool,Start=false);

    使用 ActivityMonitor 对象收集批处理作业的活动监控数据。

    编写一个函数,创建一个 ActivityMonitor 对象来收集监控数据,执行并行任务,并收集池监控结果。

    function monitorResults = myParallelCode
    
    monitor = parallel.pool.ActivityMonitor;
    
    f(1:100) = parallel.FevalFuture;
    for idx = 1:100
        f(idx) = parfeval(@(n) real(eig(randn(n))),1,5e2); 
    end
    maxFuture = afterEach(f,@max,1);
    wait(maxFuture);
    
    monitorResults = stop(monitor);
    end

    使用 myCluster 配置文件将 myParallelCode 函数作为批处理作业运行,然后等待批处理作业完成。

    j = batch(@myParallelCode,1,Pool=4,Profile="myCluster");
    wait(j);

    从已完成的批处理作业中获取监控结果。

    out = fetchOutputs(j);
    monitoringResults = out{1};

    限制

    • ActivityMonitor 不支持并行线程工作单元池。

    替代功能

    工具

    您可以使用并行池仪表板来收集和查看交互式并行池上的池监控数据。

    版本历史记录

    在 R2025a 中推出