問題タブ [hyperthreading]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - JVM + Linux + Intel のハイパースレッディング =
何らかの理由で JVM スレッドが Linux でプロセスとして実行されることに気付きました (間違っていたら訂正してください)。さらに、インテルのハイパースレッディングは、同じプロセスに属する 2 つのスレッドに対してのみ追加の並列化を提供するという事実があります。
そのスレッドは CPU の「観点」からはスレッドではないため、単一のマルチスレッド JVM プログラムはLinux でのハイパースレッディングの恩恵を受けないということですか?
matlab - MATLAB から物理コアの数を照会するにはどうすればよいですか?
MATLAB から物理コアの数を照会する方法を知っている人はいますか? 具体的には、論理コアではなく物理コアの数を取得したいと考えています (ハイパースレッディングが有効になっていると異なる場合があります)。
メソッドをクロスプラットフォーム (Windows と Linux、Mac は気にしない) にする必要がありswitch
ますが、computer
.
これまでのところ、私は試しました:
java.lang.Runtime.getRuntime().availableProcessors
System.Environment.ProcessorCount
!wmic cpu get NumberOfCores
と!wmic cpu get NumberOfLogicalProcessors
。
1 はクロスプラットフォームですが、物理プロセッサではなく論理プロセッサの数を返します。
2 は Windows のみで、物理プロセッサではなく論理プロセッサも返します。
3 は物理プロセッサと論理プロセッサの両方を提供しますが、これも Windows のみです。DOS コマンド ウィンドウからは正常に使用できますが、何らかの理由で MATLAB から実行すると永遠にハングアップするようです。
python - ハイパースレッディングでシミュレーションを実行すると、実行時間が2倍になります
私はpython/numpy/cythonで書かれたシミュレーションを使用します。多くのシミュレーション実行を平均化する必要があるため、マルチプロセッシングモジュールを使用して、個々のシミュレーション実行をすべてバッチで実行します。
オフィスには、HTを搭載したi7-920ワークステーションがあります。家に私はi5-560なしで持っています。オフィスの各バッチでシミュレーションのインスタンスを2倍実行でき、実行時間を半分に短縮できると思いました。驚いたことに、個々のインスタンスの実行時間は、自宅のワークステーションでかかる時間と比較して2倍になりました。つまり、自宅で3つのシミュレーションインスタンスを並行して実行するには、たとえば8分かかりますが、オフィスで6つのインスタンスを実行するには、約15分かかります。'cat / proc / cpuinfo'を使用して、'兄弟'=8および'cpuコア'= 4を検証したため、HTが有効になります。
私は「総実行時間の保存」法を知りません(科学的な観点からは非常に興味深いかもしれませんが:))、そしてここで誰かをホッピングすることはこの難問にいくらかの光を当てるかもしれません。
cpu-architecture - 1 つの CPU コアで 2 つのプロセスを同時に実行できますか?
ハイパースレッディングを備えた 1 つの CPU コアで 2 つのプロセスを同時に実行できますか? 私はインターネットから学びます。しかし、明確なストレートな答えは見えません。
編集: 議論と共有に感謝します! ここに質問を投稿する私の財布は、並列コンピューティングについて議論するためではありません。ここで議論するには大きすぎるでしょう。マルチスレッド アプリケーションが、マルチ プロセス アプリケーションよりもハイパー スレッディングの恩恵を受けることができるかどうかを知りたいだけです。さらに読んだ後、学習ノートとして以下を持っています。
1) ハイパースレッディング テクノロジ対応の CPU コアには、CPU 状態と割り込みロジックの 2 つのセットがあります。一方、実行ユニットとキャッシュのセットは 1 つだけです。(パイプラインとは何かはまだ調べていません)
2) マルチスレッドは、実行されたスレッドで遅延が発生する場合にのみ、ハイパー スレッディングの恩恵を受けます。この点は、ソフトウェア プログラマーがマルチ スレッドを使用する理由とタイミングの一般的な理由に正確に対応していると思います。マルチスレッド アプリケーションが最適化されている場合。Hypter スレッド化による利点は得られない可能性があります。
3) CPU の状態がプロセスの状態にマップされている場合、マルチプロセス アプリケーションはハイパー スレッディング テクノロジからさらに多くの恩恵を受けることができるという Marc の意見は正しいと思います。
4) CPU ベンダーが「スレッド」と言うとき、彼らの「スレッド」は、私が Java プログラマーとして知っているスレッドとは異なるように見えますか?
performance - 並列シミュレーションを実行するには、ハイパースレッディングを無効にする必要がありますか?
私のコンピューターにはクアッドコアi7プロセッサーが搭載されています。科学シミュレーションの並列化を研究しています。ハイパースレッディングは並列パフォーマンスにどのように影響しますか?降下パフォーマンスを得るために、4つを超える作業プロセスを使用してはならないことを私は知っています。しかし、ハイパースレッディングも無効にする必要がありますか?並列パフォーマンスに影響はありますか?
multithreading - ハイパースレッディングは、32ビットプロセッサでの32ビットint読み取り/書き込みのアトミック性に影響を与える可能性がありますか?
ハイパースレッディングにより、境界が整列している場合でも、32ビットint(32ビットプロセッサ上)が非アトミックな読み取りと書き込みを行うことができることをどこかで読んだことがあります。ハイパースレッディングがこれにどのように影響するかを誰かが説明できますか?
multithreading - 4 コアで 8 つの論理スレッドを並列に実行すると、最大で 4 倍高速になりますか?
Intel 2670QM で 4 倍高速に実行されるソフトウェアのベンチマークを行っており、8 つの「論理」スレッドすべてを使用してシリアル バージョンを実行しています。ベンチマーク結果に対する私の認識について、コミュニティからのフィードバックをお願いします。
4 コアで 4 スレッドを使用すると、4 倍の速度になり、アルゴリズム全体が並列で実行されます。「アムダルスの法則」がそれを予測しているので、これは私には論理的に思えます。Windows タスク マネージャーで、CPU の 50% を使用していると表示されます。
ただし、8 つのスレッドすべてで同じソフトウェアを実行すると、8 倍ではなく4 倍の速度になります。
これを正しく理解していれば、私のCPUには周波数が個別に2.2GHZの4つのコアがありますが、8つの「論理」スレッドに適用すると周波数は1.1GHZに分割され、キャッシュメモリなどの残りのコンポーネントについても同じことが続きます。 ? これが本当なら、なぜタスク マネージャーは CPU の 50% しか使用されていないと主張するのでしょうか?
ディスク I/O を使用する時間は含めていません。ディスク I/O ではなく、STL 呼び出し (STL ソート) にかかる時間のみに関心があります。
c# - このコードでi7プロセッサーの使用率を100%に到達させる方法(xmlを解析する最速の方法)
このコードでi7プロセッサーの使用率を100%にするにはどうすればよいですか?XmlDocumentで何か特別なことが起こりますか?コンテキストの変更だけが原因ですか?もしそうなら、なぜもっと多くのスレッドを配置してもプロセッサがそのフルパワーを使用しないのでしょうか?一度に複数の文字列を解析するための最も簡単な方法は何でしょうか?
編集:
おそらく、このコードは、プロセッサの30%を使用するスレッドの数に関係なく、より明確になります。
x86 - ハイパースレッディングがサポートされていないプロセッサでサポートされていると報告されるのはなぜですか?
システム情報を収集しようとしていますが、Intel Xeon E5420 で次のことに気付きました。
を実行するCPUID(EAX=1)
と、EDX[28] が設定され、ハイパースレッディングのサポートを示します。これは、プロセッサがインテルの Web サイトでハイパースレッディングをサポートしていないと記載されているにもかかわらずです ( ark.intel.com ) 。
誰もこれについて説明がありますか?
linux - ハイパースレッドを有効にした後、パフォーマンスが低下するのはなぜですか?
Linuxカーネル2.6.32をIntel(R)Xeon(R)CPU E31275@3.40GHzに移植します。BIOSでハイパースレッドを有効にすると、8つのCPUコア(CPU0〜CPU7)が表示されます。ほとんどの割り込みはCPU4で発生し、このコアのCPU使用率は他のコアよりもはるかに高くなります(他のコアのほぼ2倍)。IRQバインディング操作を設定しなかったと思うので、よくわかりません。
BIOSでハイパースレッドを無効にすると、すべて問題ありません。IRQはバランスが取れており、すべてのコア(CPU0〜CPU3)のCPU使用率もほぼバランスが取れています。
誰かがそれを説明できますか?BIOSに関連していますか?カーネルで特別な設定を行う必要がありますか?