exponenta event banner

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

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

свернуть все

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

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

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

свернуть все

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

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

См. также

| | | | |

Представлен в R2016b