4

私はpython/numpy/cythonで書かれたシミュレーションを使用します。多くのシミュレーション実行を平均化する必要があるため、マルチプロセッシングモジュールを使用して、個々のシミュレーション実行をすべてバッチで実行します。

オフィスには、HTを搭載したi7-920ワークステーションがあります。家に私はi5-560なしで持っています。オフィスの各バッチでシミュレーションのインスタンスを2倍実行でき、実行時間を半分に短縮できると思いました。驚いたことに、個々のインスタンスの実行時間は、自宅のワークステーションでかかる時間と比較して2倍になりました。つまり、自宅で3つのシミュレーションインスタンスを並行して実行するには、たとえば8分かかりますが、オフィスで6つのインスタンスを実行するには、約15分かかります。'cat / proc / cpuinfo'を使用して、'兄弟'=8および'cpuコア'= 4を検証したため、HTが有効になります。

私は「総実行時間の保存」法を知りません(科学的な観点からは非常に興味深いかもしれませんが:))、そしてここで誰かをホッピングすることはこの難問にいくらかの光を当てるかもしれません。

4

4 に答える 4

5

ハイパースレッディングは、ある種のワークロードに適している場合があります。強力な数値計算はこれらの1つではありません。数値計算を実行する場合は、ハイパースレッディングをオフにすることをお勧めします。ハイパースレッディングが提供するのは、タスク間の「フリーコンテキストスイッチング」ですが、CPUには非常に多くの実行ユニットしかありません。

この場合、OSは、どのプロセスが別々のコアで実行されているか(完全なパフォーマンスが得られる場所)、同じコアで、異なる「ハイパースレッド」で実行されているかを認識できないため、事態が悪化する可能性があります。

(実際、Linuxカーネルはそれを細かく制御する方法を提供できると思いますが、Pythonのマルチプロセッシングモジュールは、デフォルトのリソース割り当てを使用する追加のプロセスを起動するだけです)。

結論:可能であればHTをオフにします-少なくとも4つのコアを最大限に活用します。

于 2011-12-07T14:39:23.683 に答える
3

おそらく、コンテキストスイッチは、6つの大規模な計算プロセスと4つの実際のコアのみが原因で、より多くのオーバーヘッドを生成します。プロセスがcpu-ressourcesをめぐって競合する場合、非効率的なcpu-cachesを使用する可能性があります。

6コアではなく4コアのみを有効にした場合、結果はどうなりますか?

于 2011-12-07T14:04:47.357 に答える
1

他の人はあなたに問題についての洞察をほとんど与えてくれました、私はHTがどのように機能するかとマルチスレッドプログラムのパフォーマンスへの影響についてもう少し説明するこの記事をリンクすることによって貢献したいと思います:http://software。 intel.com/en-us/articles/performance-insights-to-intel-hyper-threading-technology/

于 2012-01-21T10:39:46.367 に答える
0

私のHPワークステーション(16コア/ CPU、ハイパースレッディングを使用すると32プロセッサになります)で、数値シミュレーションを実行すると、壊れたpythonでもハイパースレッディングをオンにすると、エラーコードは0x000005になり、HTになるまで長い間戸惑いましたオフにすると、シミュレーションはうまく機能します!多分あなたはHTがオンとオフの両方の実行時間をチェックして比較することができます

于 2015-09-16T09:10:25.160 に答える