tocBytes

Прочитайте, сколько байтов было передано после вызова ticBytes

Описание

пример

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

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

пример

bytes = tocBytes(pool) возвращает количество байтов, переданных в и из каждого из рабочих процессов параллельно pool.

пример

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

пример

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

Примеры

свернуть все

Использование 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 '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                   

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

Использование bytes = tocBytes(gcp) для измерения объема передаваемых данных.

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

       13448        1208
       13448        1208
       13448        1208
       13448        1208          				   

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

Измерьте минимальное и среднее количество байтов, переданных во время выполнения 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 для создания нового пула.

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

Начальное состояние, возвращенное ticBytes(pool).

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

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

свернуть все

Байты переданы, возвращены как матрица размера numWorkers x 2. Эта матрица содержит количество байтов, переданных каждому из работников в параллельном пуле. bytes возвращает значения в байтах без заголовков. Использование tocBytes(pool) без выходного аргумента для получения заголовков Отправлено и Получено, рабочих номеров и значений в байтах в окне Command Window.

Пример: bytes = tocBytes(pool);

См. также

| | | | |

Введенный в R2016b