ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

ticBytes

並列プール内で転送されたバイト数のカウントを開始する

説明

ticBytes(pool) は、pool 内の各ワーカーに転送されたバイト数のカウントを開始します。これにより、後ほど tocBytes(pool) によって、2 つの呼び出しの間に各ワーカーへと転送されたデータの量を測定できるようになります。

並列プール内のワーカー間で転送されたデータの量を測定するには、関数 ticBytes (pool) と関数 tocBytes (pool) を共に使用します。ticBytes および tocBytes は、parforspmdparfeval などの並列言語の構成や関数の実行時に使用できます。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                   

各ワーカーで実行するループ反復数が異なる可能性があるため、ワーカーの転送バイト数が異なることがあります。

for ループ内に入れ子にされた parfor ループの実行中に転送されたバイト数の、最小値と平均値を測定します。

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 
          

for ループ内に parfor を入れ子にすると、オーバーヘッドにより低速になることがあります。入れ子にされた for ループから parfor ループへの変換を参照してください。

入力引数

すべて折りたたむ

並列プール。現在の並列プールを使う場合、通常は gcp によって指定します。それ以外の場合は、parpool を使用して新しいプールを作成します。

例: ticBytes(gcp);

出力引数

すべて折りたたむ

後に続く tocBytes の呼び出しの入力引数として返される開始状態。

例: startState = ticBytes(gcp);

R2016b で導入