問題タブ [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.
matlab - Matlab は TBB を制限しますが、OpenMP は制限しません
私がこれを求めているのは、私が 24 時間かけて修正しようとしたことを理解しようとするためだけです。
私のシステム: Ubuntu 12.04.2、Matlab R2011a、両方とも 64 ビット、Nehalem ベースの Intel Xeon プロセッサ。
問題は単純に、Matlab では OpenMP ベースのプログラムがハイパースレッディングを有効にしたすべての CPU コアを利用できるが、TBB では同じことができないということです。
TBB を実行している場合、maxNumCompThreads を 8 に変更しても、起動できるスレッドは 4 つだけです。一方、OpenMP では必要なすべてのスレッドを使用できます。ハイパースレッディングがなければ、TBB と OpenMP の両方がもちろん 4 つのコアすべてを利用します。
ハイパースレッディングとその仮想を理解していますが、matlab の制限により、実際にはパフォーマンスにペナルティが発生します (追加の参照)。
この問題を 2 つのプログラムを使用してテストしました。単純な for ループです。
そして、tbb サンプル コードに基づく別の非常に単純なループです。
それらの両方をmatlab mexFunctionでラップしました。
これについての説明はありますか?matlab が TBB を調整できるようにするが、OpenMP のこの調整を許可しない、スレッド作成方法または構造に固有の違いはありますか?
参照用のコード:
OpenMP:
未定:
c++ - Mac でのハイパースレッディング -- 速度があまり向上しない
openMP を使用して C++ で凸包アルゴリズムを実装しました。
コードはここにあります: http://codepad.org/VVQdSdfM
プロセッサがコードを実行するのにかかる時間:
CPU のアクティビティ モニターに 4 つのスロットがあり、このバージョンの Intel プロセッサがハイパースレッディングをサポートしていることを知りました。
だとしたら、4 スレッド使用時に 4 倍高速化するべきではないでしょうか。
Intel プロセッサでハイパースレッディング機能を使用するのに役立つポインタを教えてください。
ありがとう、ビジェイ
opencv - 2スレッドのプロセッサーに関連するtbbでopencvをコンパイルしています
次のプロセッサで OpenCv を使用しています: Intel(R) Atom(TM) CPU N455 @ 1.66GHz Intel は、このプロセッサには 1 つのコアと 2 つのスレッドがあることを示しています。では、TBB オプションを指定して OpenCv を使用し、より高速な実行を期待することは適切でしょうか?
ありがとうございました
c - Intel プロセッサと C のハイパースレッディング
コードを設計するときにマルチスレッド パラダイムを使用しない場合、ハイパースレッディングは自動的に負荷を論理コアに分割しますか、それとも物理コアの場合と同様に、他のコアを利用するように特別に作成する必要がありますか?
c - ハイパースレッディングのコード例
Intel のハイパースレッディング パフォーマンスを示すサンプル コードはありますか? ユーザー空間からアクセスできますか、それともその CPU はプログラマーに対して透過的にすべての作業を行いますか? これは C、Linux 用です。
multithreading - 2 つのスレッドを同じコアで強制的に実行する方法はありますか?
大量のデータを処理するアプリケーションがあります。
ワーキング セットが L2(L3) キャッシュを超えると、パフォーマンスが劇的に低下します。
データのプリフェッチを使用してその一部を修正したいと考えています。
ハイパースレッド CPU で実行されるマルチスレッド コードがコアとキャッシュを共有するという事実を利用したいと考えています。
最初のスレッド (A) はワーカー スレッドです。
2 番目のスレッド (B) は、データをプリフェッチします。
両方のスレッドを同じコアで強制的に実行できる場合は、スレッド (B) を先に実行してデータを取得できます。
これが疑似コードでどのように見えるかです。
両方のスレッドはロックステップで実行され、ワーカー スレッドはフル スピードで実行され、フェッチ スレッドはシグナルを待機します。
HyperThreaded CPU の同じコアで 2 つのスレッドを強制的に実行する方法はありますか?
Delphi XE2 を使用しています。
PS CPUID命令を使用して、CPUがハイパースレッディングをサポートしているかどうかを検出する方法を知っています。
c# - ハイパースレッディングがアルゴリズムにメリットをもたらすのはなぜですか?
ハイパースレッディングのおかげで、4 つの論理プロセッサを備えたデュアル コア マシンを使用しています。C# で SHA1 プレイメージ ブルート フォース テストを実行しています。各スレッドでは、基本的に for ループを使用して SHA1 ハッシュを計算し、そのハッシュを探しているものと比較します。すべてのスレッドが完全に分離して実行されるようにしました。それらの間でメモリは共有されません。(1 つの変数: long カウントを除いて、次を使用して各スレッドでインクリメントします。
System.Threading.Interlocked.Increment(ref count);
2 スレッドで約 100 万 sha1/s、4 スレッドで 1.300 万 sha1/s が得られます。この場合、HT から 30% のボーナスを得る理由がわかりません。両方のコアがそれぞれの処理でビジーになるはずなので、スレッド数を 2 を超えて増やしても何のメリットもありません。誰でも理由を説明できますか?