問題タブ [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.
parallel-processing - MCS アルゴリズムのロック
アプリケーションの 1 つに C++ でキュー ロックを実装したいと考えています。次の論文のアルゴリズムを調べていました: http://www.google.co.in/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&cad=rja&ved=0CCUQFjAA&url=http%3A%2F%2Fwww .cs.rice.edu%2F~johnmc%2Fpapers%2Ftocs91.pdf&ei=HpRfUKCZFsfWrQfpgIGACQ&usg=AFQjCNF_QamPWhJrq5dSjJjFjO7W3WzJ5Q&sig2=3TU1vo_aAYbM2fmLxeiZ0A
A & B は同じ変数 ( predecessor->next & I->next ) と C & D ( locked variable ) にアクセスしていますが、アクセスする前にロックされていません。ここで何か不足していますか?
linux - SMP Linux のミューテックス所有者
ミューテックスのカーネル実装では、スレッド所有者フィールドは、SMP ビルドの場合にのみ存在します。適切でクリーンなコードの下では、取得が成功した場合にのみスレッドがリリースを呼び出すため、スレッドを追跡しないことでキャッシュと CPU サイクルを節約できることが理解できます。しかし、なぜ SMP はそれを必要とするのでしょうか? SMP では、スレッド所有者が別の CPU を使用しているときにミューテックスがハイブリッドでスピンし、参照用にこのフィールドが必要なためですか、それともその背後にさらに理由がありますか?
affinity - irq smp_affinity は rps (受信パッケージ ステアリング) を置き換えることができますか?
私はネットカード eth0 を持っています。これには単一のキューがあり、その IRQ 番号は 63 です。</p>
私の質問は:</p>
/proc/irq/63/smp_affinity を fffff に設定した場合
Linux カーネルが eth0 の IRQ をシステム内の各 CPU に配布するということですか?
その機能はrps(受信パッケージステアリング)と同じですか?</p>
c - Linux カーネル: Spinlock SMP: spin_lock_irq SMP バージョンに preempt_disable() があるのはなぜですか?
Linux カーネルの元のコードは次のとおりです。
ローカルIRQが無効になった後、現在のパスをプリエンプトできる実行パスはないと思います。
すべての一般的なハード IRQ が無効になっているため、softirq は発生せず、スケジュール ホイールをキックするティックもありません。現在の道は安全だと思います。では、なぜあるのpreempt_disable()
ですか?
multithreading - Erlang VM(BEAM)が使用するコアの数を制限するにはどうすればよいですか?
2xクアッドコアXeonE55202.2GHz、24.0GB RAM、およびErlang R15B02(SMPが有効)を備えたノードで実験を実行しています。Erlang VMで使用されるコアの数を制限して、一部のコアを一時的に無効にし、スケーラビリティをテストするために段階的に数を増やすことができるかどうか疑問に思います。
root
このノードにアクセスできません。だから私はパラメータをErlangコードに指定するerl
かErlangコードで指定する方法を期待しています。
python - 並列python、またはMPI?
重いシンボリック計算 (多くの複数のシンボリック積分) を含むコードがあります。また、8 コア CPU コンピューター (18 GB RAM) と小さな 32 CPU クラスターの両方にアクセスできます。限られた時間内にクラスターを使用して別の教授の研究室に行くよりも、教授の 8 コア PC にとどまることを好みますが、SMP システムで動作するかどうかわからないため、並行するものを探していますSMPとクラスターの両方で使用できるPythonのツールであり、もちろん、あるシステムのコードを他のシステムで使用するために簡単かつ最小限の労力で変更できることを好みます。
これまでのところ、Parallel Python (PP) が私のニーズに有望であることがわかりましたが、最近、MPI も同じことを行うと言いました (pyMPI または MPI4py)。Web 上ではこれについてほとんど議論されていないように見えるため、これを承認できませんでした。ここでのみ、MPI (pyMPI または MPI4py の両方) がクラスターでのみ使用可能であると述べられています。
「Parallel Python」が私の唯一の選択肢ですか、それとも MPI ベースのソリューションを喜んで使用できますか? 私のニーズにとってどちらがより有望ですか?
PS。それらのどれも非常に包括的なドキュメントを持っていないようですので、並列計算の初心者を助けることができる公式Webサイト以外へのリンクを知っていれば、回答でそれらについても言及していただければ幸いです:)
編集します。
私のコードには 2 つのループがあり、外側のループは、前のステップで計算された値に応じて各ステップが反復メソッド (再帰的なソリューション)であるため、並列化できません。外側のループには内側のループと、内側のループの結果全体に依存する3 つの追加の方程式が含まれています。ただし、内側のループ(各ステップで計算可能な 12 個の方程式のうち 9 個を含む) は安全に並列化できます。すべての 3*3 方程式は互いに独立しており、前のステップにのみ依存します。私の方程式はすべて、それぞれが多くの複数のシンボリック積分を含んでいるため、計算量が非常に多くなります。一見、内側のループの 9 つの方程式を両方とも並列化できます。これらの 9 つの方程式のそれぞれの積分計算を個別に行い、内側のループと一緒に他の 3 つの方程式のすべての積分を並列化します。私の必要性をよりよく理解するのに役立つ場合は、ここで私のコードを見つけることができます。それはSageMath内に書かれています。
linux - ISRの最後にARMがIPIを処理する理由
LinuxでのIRQ処理を勉強しています。各ISR[forSMP]の最後でIPIを処理する必要がある理由について質問があります。IPIに何か特別なものはありますか?do_asm_IRQで他の割り込みを処理してみませんか。
任意の提案をいただければ幸いです。
http://lxr.oss.org.cn/source/arch/arm/include/asm/entry-macro-multi.S?v=3.5.2;a=arm
operating-system - CPU ごとに個別のカーネル スタックが必要な理由
実際には、多くのオペレーティング システムは、各スレッドに 1 つのカーネル スタック、または少なくとも各 CPU に 1 つのカーネル スタックを持つように設計されています。しかし、プロセスがトラップするたびにカーネルがロックされるオペレーティング システムの場合、CPU ごとにカーネル スタックを分離する必要はないようです。カーネル (独自のスタックを持つ) は単一の CPU アクセスのみを許可するため、CPU が同時にカーネル モードになることはありません。ネストされたトラップの場合でも、前の CPU がカーネル スタックを離れてクリーンアップするまで、CPU は常にブロックされます。では、そのような OS で複数のカーネル スタックが必要になるのはどのような場合ですか? ありがとう。
concurrency - 一貫した順序で見られる同時ストア
インテル アーキテクチャ ソフトウェア開発者マニュアル、 2012年 8 月、vol. 3A、セクション。8.2.2:
2 つのストアは、ストアを実行するプロセッサ以外のプロセッサによって一貫した順序で表示されます。
しかし、これはそうでしょうか?
私が尋ねる理由は次のとおりです。HyperThreading を備えたデュアルコア Intel i7 プロセッサを検討してください。マニュアルのvol 。図 1、図 2-8 では、i7 の論理プロセッサ 0 と 1 は L1/L2 キャッシュを共有していますが、その論理プロセッサ 2 と 3 は別の L1/L2 キャッシュを共有しています。一方、すべての論理プロセッサは単一の L3 キャッシュを共有しています。論理プロセッサ 0 と 2 (L1/L2 キャッシュを共有していない) がほぼ同時に同じメモリ位置に書き込み、書き込みが現時点では L2 よりも深くないと仮定します。論理プロセッサ 1 と 3 (「ストアを実行するプロセッサ以外のプロセッサ」) は、「矛盾した順序で 2 つのストア」を認識できませんでしたか?
一貫性を保つために、論理プロセッサ 0 と 2 は SFENCE 命令を発行し、論理プロセッサ 1 と 3 は LFENCE 命令を発行してはいけませんか? それにもかかわらず、マニュアルはそうではないと考えているようであり、この問題に関するその意見は単なる誤植のようには見えません. わざとらしい。よくわかりません。
アップデート
@Benoit の回答に照らして、次の質問: したがって、L1 と L2 の唯一の目的は、負荷を高速化することです。ストアを高速化するのは L3 です。そうですか?
linux-kernel - Linuxカーネルにアイドルスレッドが必要なのはなぜですか?
何もすることがない場合 (SMP を含む)、「何もしない」のではなく、Linux カーネルがアイドル スレッドを実行するのはなぜですか?