1

コード サイズに基づいて、特定のコード ブロックを並列化する価値があるかどうかをどのように判断しますか? 次の計算は正しいですか?

推定:

  • CPU ごとに 1 つのスレッドで構成されるスレッド プール。
  • 実行時間がXミリ秒の CPU バウンド コード ブロック。
  • Y = min(number of CPUs, number of concurrent requests)

したがって:

  • コスト: コードの複雑さ、潜在的なバグ
  • メリット:(X * Y)ミリ秒

私の結論は、XまたはYの値が小さい場合は並列化する価値がないということです。「小さい」とは、リクエストの応答性に依存します。

4

3 に答える 3

4

それを理解するのに役立つことの 1 つは、アムダールの法則です。

並列計算で複数のプロセッサを使用するプログラムの高速化は、プログラムの順次部分に必要な時間によって制限されます。たとえば、プログラムが 1 つのプロセッサ コアを使用して 20 時間を必要とし、1 時間の特定の部分を並列化できない場合、残りの有望な 19 時間 (95%) を並列化できます。このプログラムを並列実行するには、最小実行時間をその重要な 1 時間未満にすることはできません。したがって、速度アップは最大 20 倍に制限されます。

高速化で何を達成したいのか、実際にどの程度の並列処理を達成できるのかを把握し、その価値があるかどうかを確認してください。

于 2009-06-08T16:30:00.090 に答える