ticBytes

Начните считать байты переданными в параллельном пуле

    Описание

    пример

    ticBytes(pool) начинает считать количество байтов переданным каждому рабочему в pool, так, чтобы позже tocBytes(pool) может измерить объем данных, переданный каждому рабочему между двумя вызовами.

    Используйте ticBytes (pool) и tocBytes (pool) функции вместе, чтобы измериться, сколько данных передается и от рабочих в параллельном пуле. Можно использовать ticBytes и tocBytes при выполнении построений языка параллельного программирования и функций, такой как parfor, spmd, или parfevalИспользование ticBytes и tocBytes раздать меньше данных и оптимизировать ваш код.

    пример

    startState = ticBytes(pool) сохраняет состояние в выходной аргумент, startState, так, чтобы можно было одновременно записать количество байтов, переданных для нескольких пар ticBytes и tocBytes вызовы. Используйте значение startState как входной параметр для последующего вызова tocBytes.

    Примеры

    свернуть все

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

    Рабочие могут передать различные числа байтов, потому что каждый рабочий может выполнить различные количества итераций цикла.

    Измерьте минимальное и среднее количество байтов, переданных при выполнении parfor цикл вкладывается в for цикл.

    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.ProcessPool или parallel.ClusterPool объект.

    Чтобы создать пул процесса или кластерный пул, использовать parpool.

    Пример: pool = parpool('local');

    Выходные аргументы

    свернуть все

    Начальное состояние, возвращенное как входной параметр для последующего вызова tocBytes.

    Пример: startState = ticBytes(gcp);

    Смотрите также

    | | | | |

    Введенный в R2017b