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-loop может быть медленным из-за накладных расходов, см. «Преобразование вложенных циклов для циклов в циклы parfor».

Входные параметры

свернуть все

Параллельный пул, обычно заданный как gcp, если требуется текущий параллельный пул. В противном случае используйте parpool для создания нового пула.

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

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

свернуть все

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

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

См. также

| | | | |

Введенный в R2016b