問題タブ [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.
cpu - 方法: クアッド コアおよびデュアル クアッド コア仮想化?
デュアル クアッド コアの物理ホスト上で、科学計算の目的で、8 つの仮想 CPU (可能であれば) または少なくとも 4 つの仮想 CPU を備えた単一の VM を実行したいと考えています。
この時点で市場が提供しなければならないものを調査したところ、
- VMWare Server 2.0 は 2 つの仮想 CPU に制限されています。
- Microsoft Virtual Server 2005 RC2 は単一の CPU に制限されています。
- Microsoft Hyper-V 2008 は、仮想 CPU が 4 つに制限されています (ゲスト OS に制限があります)。
8 つの仮想 CPU を取得するソリューションはありますか?
c - Linux で C または C++ からプロセスの CPU アフィニティを設定する方法は?
Linux オペレーティング システムの c/c++ でプロセスの CPU アフィニティを設定するプログラムによる方法はありますか?
linux - ユーザー空間アプリ (Linux、C) 内から CPU コア番号を取得するにはどうすればよいですか?
おそらく、実行中の現在の CPU の数を取得できるライブラリまたは単純な asm blob が存在します。
multicore - マルチ CPU、マルチコア、ハイパースレッドの違いは何ですか?
マルチ CPU、マルチコア、ハイパースレッドの違いを説明してくれる人はいますか? 私はいつも、これらの違いと、さまざまなシナリオにおける各アーキテクチャの長所と短所について混乱しています。
オンラインで学び、他の人のコメントから学んだ後の私の現在の理解は次のとおりです。
- ハイパースレッドはその中で最も劣る技術だと思いますが、安価です。その主なアイデアは、コンテキスト切り替え時間を節約するためにレジスタを複製することです。
- マルチプロセッサはハイパースレッドよりも優れていますが、異なる CPU が異なるチップ上にあるため、異なる CPU 間の通信はマルチコアよりも遅延が長く、複数のチップを使用すると、マルチコアよりも費用と消費電力が大きくなります。 ;
- マルチコアはすべての CPU を 1 つのチップに統合するため、異なる CPU 間の通信の遅延はマルチプロセッサと比較して大幅に短縮されます。単一のチップを使用してすべての CPU を搭載しているため、消費電力が少なく、マルチ プロセッサ システムよりも安価です。
これは正しいです?
assembly - マルチコアアセンブリ言語はどのように見えますか?
たとえば、昔々、x86 アセンブラーを作成するには、「EDX レジスターに値 5 をロードする」、「EDX レジスターをインクリメントする」などの命令が必要でした。
4 つのコア (またはそれ以上) を持つ最新の CPU では、マシン コード レベルで 4 つの個別の CPU があるように見えます (つまり、4 つの異なる「EDX」レジスタがあるだけですか) ? もしそうなら、「EDXレジスタをインクリメントする」と言うとき、どのCPUのEDXレジスタがインクリメントされるかを決定するものは何ですか? 現在、x86 アセンブラーに「CPU コンテキスト」または「スレッド」の概念はありますか?
コア間の通信/同期はどのように機能しますか?
オペレーティング システムを作成している場合、さまざまなコアでの実行をスケジュールできるようにするために、ハードウェアを介してどのようなメカニズムが公開されていますか? 特別な特権命令ですか?
マルチコア CPU 用の最適化コンパイラ/バイトコード VM を作成している場合、たとえば x86 について、すべてのコアで効率的に実行されるコードを生成するために、具体的に何を知る必要がありますか?
マルチコア機能をサポートするために、x86 マシン コードにはどのような変更が加えられましたか?
build - 並列製造に最適なハードウェア/ソフトウェア ソリューションは?
Linux ベースのビルド システムがあり、ビルドはさまざまな組み込みターゲット (対応するさまざまなドライバーと機能セットが有効になっている) で構成され、それぞれが別の単一のメイン ソース ツリーでビルドされます。
make ベースのシステムをよりマルチプロセスに適したものに変換しようとするのではなく、これらすべてのターゲットのビルドを同時に起動する最善の方法を見つけたいだけです。よくわからないのは、最高のパフォーマンスを得る方法です。
次の可能な解決策を検討しました。
- 多数の個別のビルド マシン。欠点: 共有コードのコピーがたくさんある、または (遅い) 共有ドライブから作業している。維持するシステムが増えます。
- 高速ストライプ RAID ローカル ストレージを備えた少数のマルチプロセッサ マシン (おそらくデュアル クアッドコア)。欠点: どのようにスケーリングするかはわかりません。ボリュームがボトルネックになりそうですが、最近の Linux が SMP をどれだけうまく処理できるかはわかりません。
- 類似の SMP マシンですが、VMware を実行するハイパーバイザーまたは Solaris 10 を備えています。これはばかげているでしょうか、それともスケジューリングの利点を提供しますか? 欠点: ストレージのボトルネックの問題に対処していません。
座ってこれらの可能性を試すつもりですが、見落としがないかどうかを確認したかったのです。ありがとう!
assembly - マルチコア x86 プロセッサでのアフィニティの設定
(私が OS を勉強したのは本格的な SMP とマルチコアの前だったので、質問します。コードがどのように実行されているかについてのビジョンを持つのが好きです。)
プログラムに直接起動するマルチコア x86 CPU がある場合。アフィニティを制御するために必要なアセンブラ コマンドについて説明している Web サイトを誰かが推奨できますか?
multithreading - ホットスポットJVMにシングルプロセッサまたはマルチプロセッサのスレッド同期を使用するかどうかを指示するにはどうすればよいですか?
マシンはデュアルコアであり、OSはマルチプロセッサカーネルを使用します。いくつかのパフォーマンス評価を実行するために、JVMのスレッドアフィニティをシングルコアに設定したいと思います。ただし、JVMがシングルコアに制約されていることに気付かない可能性があるため、パフォーマンス測定値が歪んでしまうのではないかと心配していますが、スレッド同期とガベージコレクションにはマルチプロセッサプリミティブを使用しています。ガベージコレクターはコマンドラインから調整できますが、スレッドの同期はできません。
現在、JVMはスレッドに主に(*)OSスレッドを使用しています。したがって、おそらく問題は、「OS(Windows / Linux)は、対応するプロセスのスレッドアフィニティを設定することによってシングルコアの使用に制約があるマルチスレッドアプリケーションで正しい同期プリミティブを使用するか」ということです。
(*)これはWindowsでは正確には当てはまりません。Windowsでは、OSを呼び出す前にJVMが自動的に回転します。この動作は、-XX:+ UseSpinningおよび-XX:PreBlockSpin設定を介して制御できます。
linux - Linux でプロセッサ間通信を行う最良の方法は何ですか?
チップには 2 つの CPU があり、共有メモリがあります。これは SMP アーキテクチャではありません。共有メモリを備えたチップ上の 2 つの CPU のみ。
最初の CPU には Unix 系のオペレーティング システムがあり、2 番目の CPU には Linux オペレーティング システムがあります。
最初の CPU が何らかのジョブを実行し、このジョブの結果が何らかのデータになります。最初の CPU がジョブを終了した後、ジョブが終了したことを別の CPU に伝える必要があり、2 番目の CPU がこのデータを処理する必要があります。
プロセッサ間通信を処理する方法は何ですか? そのためにはどのアルゴリズムを使用すればよいですか?
それに関する記事への参照は大歓迎です。
assembly - 異なるプロセッサでコードを実行する (x86 アセンブリ)
x86 のリアル モードで、マルチプロセッサ システムの別のプロセッサでコードを実行するには、どの命令を使用する必要がありますか?
(実際のオペレーティング システムが起動する前に、特定の CPU レジスタを設定し、システム内のすべての CPU でこれを行う必要がある、アセンブラーで起動前のコードをいくつか書いています。)