tocBytes

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

Синтаксис

tocBytes(pool)
bytes = tocBytes(pool)
tocBytes(pool,startState)
bytes = tocBytes(pool,startState)

Описание

пример

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 - цикл может быть медленным из-за издержек, видеть, Преобразовывают Вложенные циклы for в циклы parfor.

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

свернуть все

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

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

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

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

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

свернуть все

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

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

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

| | | | |

Введенный в R2017b

Для просмотра документации необходимо авторизоваться на сайте