exponenta event banner

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

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

свернуть все

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

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

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

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

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

свернуть все

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

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

См. также

| | | | |

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