Main Content

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

tocBytes

读取自调用 ticBytes 以来已传输了多少字节

    说明

    示例

    tocBytes(pool) 读取自调用 ticBytes 以来已传输了多少字节。该函数显示在最近一次执行 ticBytes 之后,并行 pool 中每个工作进程传输的总字节数。

    结合使用 ticBytes (pool) 和 tocBytes (pool) 函数来测量并行池中往返于工作进程之间的数据传输量。您可以在执行并行语言构造和函数(例如 parforspmdparfeval)时使用 ticBytestocBytes。使用 ticBytestocBytes 传递更少的数据并优化您的代码。

    示例

    bytes = tocBytes(pool) 返回并行 pool 中每个工作进程传输的字节数。

    示例

    tocBytes(pool,startState) 显示在生成 startStateticBytes 命令之后在并行 pool 中传输的总字节数。

    示例

    bytes = tocBytes(pool,startState) 返回在生成 startStateticBytes 命令之后,传输到和从并行 pool 中的每个工作进程的字节数。

    示例

    全部折叠

    使用 tocBytes(gcp,startS) 来测量传输的数据量。

    a = 0;
    b = rand(100);
    startS = ticBytes(gcp);
    parfor i = 1:100
        a = a + sum(b(:, i));
    end
    tocBytes(gcp,startS)
    Starting parallel pool (parpool) using the 'Processes' profile ... 
    connected to 4 workers.
    
                 BytesSentToWorkers    BytesReceivedFromWorkers
                 __________________    ________________________
    
        1            42948              7156                   
        2            36548              7156                   
        3            27500              4500                   
        4            27500              4500                   
        Total    1.345e+05             23312                   
    

    工作进程可能会传输不同数量的字节,因为每个工作进程可能执行不同数量的循环迭代。

    使用 bytes = tocBytes(gcp) 来测量传输的数据量。

    ticBytes(gcp);
    spmd
        rand(100);
    end
    bytes = tocBytes(gcp)
    bytes =
    
           13448        1208
           13448        1208
           13448        1208
           13448        1208          				   

    工作进程传输相同数量的字节,因为每个工作进程执行相同数量的循环迭代。

    测量运行嵌套在 for 循环中的 parfor 循环时传输的最小和平均字节数。

    REPS = 10;   
    minBytes = Inf;   
    ticBytes(gcp);  % ticBytes, pair 1
    
    for ii=1:REPS
       a = 0;
       b = rand(100);
       startS = ticBytes(gcp)  % ticBytes, pair 2  
       parfor i = 1:100
           a = a + sum(b(:, i));
       end
       bytes = tocBytes(gcp, startS)  % tocBytes, pair 2  
       minBytes = min(bytes, minBytes)
    end
    
    averageBytes = tocBytes(gcp)/REPS  % tocBytes, pair 1 
              

    请注意,将 parfor 循环嵌套在 for 循环中可能会因开销而变慢,请参阅 将嵌套的 for-循环转换为 parfor-循环

    输入参数

    全部折叠

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

    要创建进程池或集群池,请使用 parpool

    示例: pool = parpool('Processes');

    ticBytes(pool) 返回的起始状态。

    示例: startState = ticBytes(gcp);

    输出参量

    全部折叠

    传输的字节数,以大小为 numWorkers x 2 的矩阵返回。该矩阵包含并行池中每个工作进程传输的字节数。bytes 返回的字节值为无标题的值。使用不带输出参量的 tocBytes(pool) 来获取命令窗口输出中的已发送和已接收标题、工作进程编号和字节值。

    示例: bytes = tocBytes(pool);

    扩展功能

    版本历史记录

    在 R2016b 中推出

    另请参阅

    | | | | |