問題タブ [smp]
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.
c - Linux で fork() によって作成された子プロセスを SMP 環境の別のコアで実行することは可能ですか?
fork() を呼び出すときに、子プロセスが別のコアで並行して実行できるようにするために、どのような方法がありますか?
linux-kernel - マルチチップ マルチコア SMP システムで、Linux カーネルによって軽量スレッドはどのようにスケジュールされますか?
軽量スレッドを使用して並列アルゴリズムを実行していますが、システムが複数のコアと複数のチップを提供している場合、これらがどのように異なるコアに割り当てられているのか疑問に思っています。チップ上のすべてのコアが使い果たされるまで、スレッドは単一のチップに割り当てられますか? チップ間で作業をより適切に分散するために、スレッドは異なるチップのコアに割り当てられていますか?
c - ユーザー空間コードはどのような順序で実行されますか?
こんにちは、特定のデバイスの読み取りと書き込みを行う char ドライバーを作成しています。私は初心者なので、これはオープン、読み取り、書き込み、解放などの最も単純なプロトコルのみを使用する、非常にシンプルで簡単な char ドライブです。ドライバーをテストするために、次のプログラムを使用しています... 以下は、ユーザー空間プログラムのソースです。
ここで、ドライバーがどのように機能するかは重要ではありませんが、読み取りメソッドと書き込みメソッドを呼び出す順序は重要です。理想的には、私がコードを書いた順序でドライバが書き込まれ、コードを書いた順序でドライバから読み取られるとよいでしょう。ただし、次のようにコードを記述した場合に気付きました...
fprintf() は、ファイル記述子を閉じたときにのみ書き込み、最悪の場合、デバイスから読み取った後に実行されることに気付きました。もちろん、私は自分のデバイスに書き込んでから読みたいと思っていますが、そのためには起こりません。これは、ユーザー空間の多くのことが同時に実行されているという印象を与え、私を困惑させます. ユーザー空間を処理するときにデバイス関数が呼び出される順序を知るにはどうすればよいですか? これが漠然としているように思われる場合は申し訳ありません。
返信ありがとうございます。
c - 値が同じである可能性がある場合、書き込みを回避する方が速いですか?
SMPマシンでは、#2と#1のパフォーマンスにメリットがあります。
1)x = 0;
また
2)if(x)x = 0;
CPU間のキャッシュコヒーレンシを管理するための舞台裏のオーバーヘッドにはいくらかのコストがかかるかもしれないと私は考えていました。私はナッツですか?
c++ - 「アグレッシブ」な揮発性セマンティクスを備えたCおよびC++コンパイラ
変数の「アグレッシブ」なメモリ整合性モデルを実装するCまたはC++コンパイラはありvolatile
ますか?「アグレッシブ」な整合性モデルとはvolatile
、生成されたコードのメモリバリアを伴う変数へのすべての書き込みを伴うことを意味します。
AFAIK、これはIA64(Itanium)プラットフォーム上のCまたはC++コンパイラの通常の動作です。x86はどうですか?volatile
x86プラットフォームで変数を処理するためのItaniumのようなアプローチを実装する(または実装するように構成できる)コンパイラはありますか?
編集:volatile
VS 2005が(コメントを読んだ後に)生成するコードを見ていますが、変数にアクセスするときに、あらゆる種類のメモリバリアに似たものは見当たりません。これは、MESIF(Intel)およびMOESI(AMD)キャッシュプロトコルにより、シングルCPUマルチコアx86プラットフォームでメモリの一貫性を確保するのにまったく問題ありません。
ただし、これはマルチCPUSMPx86プラットフォームでは不十分のようです。SMPプラットフォームでは、CPU間のメモリの一貫性を確保するために、生成されたコードにメモリバリアが必要になります。私は何が欠けていますか?変数に対して取得と解放のセマンティクスがすでにあるとMicrosoftが主張する場合、Microsoftは正確に何を意味しvolatile
ますか?
linux - SMP linuxで特定のCPUの現在のタスクを取得するにはどうすればよいですか?
たとえば、特定のCPUの現在のタスクを取得しようとするカーネルモジュールを作成しています。
カーネルモジュールでは、エクスポートされた関数シンボルのみを使用するか、モジュールのシステムマップからカーネル関数アドレスをハードコーディングして使用することができました。
IA64のcurr_task関数しか見つかりませんでしたが、X86_32の特定のCPUで現在のタスクを取得する方法は何ですか?ありがとうございました。
c++ - OpenMPとNUMAの関係?
NUMAをサポートするLinuxカーネル3.0でubuntuサーバーを実行しているデュアルソケットXeon E5522 2.26GHZマシン(ハイパースレッディングが無効)があります。アーキテクチャ レイアウトは、ソケットあたり 4 つの物理コアです。OpenMP アプリケーションがこのマシンで実行されており、次の質問があります。
OpenMP プログラムは、NUMA マシン + 認識カーネル上で実行する場合、自動的に利点を利用しますか (つまり、スレッドとそのプライベート データは、実行に沿って Numa ノードに保持されますか?)。そうでない場合、何ができるでしょうか?
NUMA とスレッドごとのプライベート C++ STL データ構造はどうですか?
caching - 階層メモリSMPは矛盾していますか?
対称型マルチプロセッシング システムは、メモリを共有する同種のプロセッサです。私はちょうどTim Mattson によるこの講演を見ました。彼はある時点で、階層メモリ (キャッシュ レベル) が SMP の原則を無効にすると言っていました。これは本当ですか?たとえば、階層メモリ SMP システムとは言えないのはなぜですか。ありがとう。
javascript - Javascript を使用して Strobe Media Playback から統計を取得する
Strobe Media Playback フラッシュ プレーヤーから統計データを取得しようとしています。
この 例を見てきましたが、swfobject.js と .embedSWF() を使用してプレーヤーを作成しています。HTML でプレーヤーを作成し、Javascript Bridge をアタッチします。
私が知る限り、この例では org.osmf.player.debug.track を使用して統計を取得しています。私のコードでこれを使用しようとしても、結果は得られません。おそらく、ビデオの作成に swfobject.js を使用していないためです。これに似たものも試しました(わかりやすくするために切り捨てられています):
問題は、これらの統計を取得できるかどうかです。
linux-kernel - SMPシステムでのカーネルの初期化
SMPシステムでカーネルを起動すると、CPU0はカーネルコードを起動します。メインメモリでは、CPUxがWFI状態のときに、CPU0に固有のキャッシュとMMUが初期化されます。cpu_up(x)がCPU0から送信されると、各CPUxが初期化され、secondary_startupが呼び出されます。ここで、CPUxに固有のメインメモリ、キャッシュ、およびMMUが再び初期化されます。
これで、コアごとに異なる可能性のあるアバットキャッシュがわかりましたが、コアごとにメインメモリとMMUもありますか?聞いたことがない。ここで正確に何が起こり、メインメモリとMMUの分割はCPU間でどのように行われますか?