CPUはいくつあり、送信する必要がある作業は何ですか?

CPUはいくつあり、送信する必要がある作業は何ですか?

私はコンピュータ(実際には複数台)で科学的な計算をしていますが、一度にいくつの課題を提出する必要があるかを知りたいです。 lscpuは以下を表示します:

CPU(s):                8
On-line CPU(s) list:   0-7
Thread(s) per core:    2
Core(s) per socket:    4
Socket(s):             1

あいまいさは「スレッド」です。私はオンラインで検索し、関連情報を学びました。しかし、まだ混乱しています。 (送信したジョブの数によって異なります。) 私は機械の詳細に興味がありません。たとえば、これで実行可能ファイルが作成されました。自分で実行すると10分かかります。それでは、実行する必要がある項目が800個あるとしましょう。総時間コストを削減するには、一度に4つまたは8つを実行する必要がありますか?

ベストアンサー1

このPCにIntel CPUがある場合コアあたりのスレッド数最も確実なのはハイパースレッディングです。

https://en.wikipedia.org/wiki/hyperthreading

物理的に存在する各プロセッサコアに対して、オペレーティングシステムは2つの仮想(論理)コアを処理し、可能であればそれらの間のワークロードを共有します。ハイパースレッディングの主な目的は、パイプラインの独立したコマンドの数を増やすことです。これは、複数のコマンドが別々のデータに対して並列に動作するスーパースカラーアーキテクチャを利用します。

総時間コストを削減するには、一度に4つまたは8つを実行する必要がありますか?

時々違うよねハイパースレッディングを使用すると、一部のジョブはより速く実行され、一部のジョブはそうではありません。自分でテストしてみてください。

それでは、実行する必要がある項目が800個あるとしましょう。

私はこの問題を処理するためにGNU Parallelを使用します。

https://www.gnu.org/software/parallel/

GNU Parallelは、1つ以上のコンピュータを使用してタスクを並列に実行するためのシェルツールです。

.処理するファイルのリストがある場合は、次の方法を使用できます。

find . | parallel -j4 yourprogram

以前のテストでハイパースレッディングがより速く実行されるように見える場合は、「4」を「8」に変更します。

編集:時々、プログラムがより速く実行されることに言及するのを忘れました。障害を負うBIOSのHT。

おすすめ記事