ループは、ループ本体内にある一連のステートメントを並列で実行します。内のワーカー上でループ反復を実行します。処理に必要なデータを複数のワーカーに送信し、そこで計算の大部分が実行されます。結果はクライアントに送り返されて整理されます。ループよりもはるかにパフォーマンスが向上します。ワーカーは特定の順序を定めず、相互に無関係なものとして反復を評価します。各反復は独立しているため、反復が何らかの形で同期される保証はなく、またその必要もありません。つの反復を実行します。ワーカーより多くの反復がある場合は、一部のワーカーが複数のループ反復を実行します。この場合、通信時間を短縮するために、ワーカーが一度に複数の反復を受け取る可能性があります。ループが有用なことがあります。使用を検討してください。実行に長時間かかるループ反復がいくつかある場合。この場合、ワーカーは複数の長い反復を同時に実行できます。反復の数がワーカー数を超えていることを確認してください。ない場合、使用可能なワーカーの一部は使用されません。スイープなど、単純な計算のループ反復が多数ある場合。ループ反復をグループに分割し、各ワーカーによって反復の総数の一部が実行されます。ループが有用でない可能性があります。ループが取り除かれたコードの場合。一般に、コードをより高速で実行させるには、まずコードのベクトル化を試します。(MATLAB)を参照してください。ライブラリのマルチスレッド特性によって提供される、組み込み並列処理を活用できます。ループより遅くなることがあります。使用できるようベクトル化したコードを元に戻すことはしないでください。通常、この解決法はうまく機能しません。実行時間の短いループ反復の場合。この場合、並列オーバーヘッドが計算の大半を占めます。ループは使用できません。個々の反復は他のすべての反復から独立していなければなりません。ループ反復が独立していることの確認を参照してください。この規則の例外は、リダクション変数の使用によりループ内に値を累積する場合です。使用するタイミングの決定に際しては、並列オーバーヘッドについて検討します。必要な時間が含まれます。反復が高速で評価される場合、このオーバーヘッドは合計時間の大きな部分を占める可能性があります。種類のループ反復について考えます。ループへの変換の優れた候補です。計算に必要な時間が、データ転送に必要な時間よりずっと長いためです。ループへの変換が有利に働きません。計算に必要な時間と比較して、データ転送に必要な時間がかなりの長さとなるためです。ループ内の計算負荷の高いタスクから始めます。ループを使用して計算を高速化します。ループの反復を並列プール内のワーカーに分割して実行します。高速化の結果と、並列プール内のワーカーが送受信するデータ量を測定する方法を調べます。