問題タブ [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.
python - Python用の単純なプロセスベースの並列マップはありますか?
Python用の単純なプロセスベースの並列マップ、つまり関数を探しています
これは、異なるプロセスの[data]の各要素で関数を実行し(まあ、異なるコアで、しかしAFAIK、Pythonで異なるコアで何かを実行する唯一の方法は、複数のインタープリターを起動することです)、結果のリストを返します。
このようなものはありますか?シンプルなものが欲しいので、シンプルなモジュールがいいでしょう。もちろん、そのようなものが存在しない場合、私は大きな図書館に落ち着きます:-/
erlang - Erlang Documentation/SMP: マシンごとまたはアプリケーションごとのシングルノードとマルチノード、およびそれに続く混乱
現在、Erlang のプロセス モデルを研究しています。Erlangに関するテクニカル レポート(セクション 3、パラグラフ 2) で問題が発生しました。
これは、いくつかのスケジューラーを持つ 1 つの SMP VM で実行する代わりに、それぞれ 1 つのスケジューラーを持つ複数の SMP VMを実行する方が効率的な場合がある理由を説明しています。もちろん、複数の VM を実行するには、相互に通信しない、またはほとんど通信しない多くの並列タスクでアプリケーションを実行できる必要があります。
さて、この段落は私を混乱させます。単一プロセスの複数スケジューラのシナリオは確認できますが、単一のスケジューラで複数のプロセスを確認できません。おそらく、各プロセスには異なるノード名が付けられます。これは、特定のアプリケーションを変更しないと、このモデルで使用できないことを意味します。レポートでは、変更を必要としないという利点がSMP の重要な機能として言及されています。複数のプロセスが同じノード名を持っている場合、Erlang プロセス間のメッセージング ストームにより、パフォーマンスが悲惨なものになります。これは、メモリ内 amnesia の使用を想定しています。この記事で紹介されていない、ここにないプロセス モデルはありますか?
作者はここで何を言おうとしているのか? 彼は、マルチプロセスの単一スケジューラのケースでは、(複数の一意のノード名を考慮に入れるために) アプリケーションを書き直す必要があることを示唆しようとしていますか?
-- 編集 1: 問題の原因の明確化 --
質問はディスカッションを通じて回答されました。以下は私が抱えていたトラブルの概要です。
この質問の問題点は、私が思い出したように、ドキュメントが物理マシンごとに複数の Erlang エミュレーターを実行するシナリオに触れていないことです。エミュレーターは (産業用の) 物理マシンを表すことが常に示されています。また、計算効率のためにプログラムを明示的に分割しなければならないというシナリオは考慮されていません。この突然の紹介が私の苦しみの元になっています。
この慣例は依然として大量のプロセスを作成する方向に偏っており、将来的には Erlang の SMP エミュレーターに多くの改善が予定されています。これは、マシンごとに単一のノードが、好ましいアプリケーション設計を前提とすれば、依然として非常に実行可能なオプションであることを意味します。
linux - 並行性の高いマルチスレッド アプリケーションにはハードウェアが必要
24 時間モードで約 256 の計算集約型リアルタイム同時タスクを実行する必要があるハードウェアを探しています (1 つのマルチスレッド C アプリケーション)。各タスクには約 40 ~ 50 MFLOP かかるため、すべてのタスクには約 10 GFLOP が必要です。CPU-RAM の速度は重要ではありません。すべてのタスクは Linux カーネル (32 ビット、SMP 付き) で管理する必要があります。
1 つのマルチコア CPU を備えた 1 つのメインボード ソリューションを探しています (そのような CPU が存在する場合)。そのような CPU が存在しない場合は、1 つのマルチソケット メインボード ソリューション (複数の CPU を使用) が必要です。
このような要件を満たすプロフェッショナル向けの CPU/メインボード ソリューションを教えてください。Linux カーネル (2.6.25) に問題がないことも非常に重要です。仮想化も、巨大な RAM や CPU キャッシュも必要ありません。また、Intel アーキテクチャと実績のある安定性も好みます。私はまだそれが実現可能かどうか疑問に思っています。
前もって感謝します。
linux-kernel - CPUを通過するときにブロックI/Oの完了に時間がかかるのはなぜですか?
ハイエンドストレージデバイス用のLinuxブロックドライバーから最大限のパフォーマンスを引き出しようとしています。現時点で少し困惑している問題の1つは、ユーザータスクが1つのCPUでI / O操作(読み取りまたは書き込み)を開始し、デバイスの割り込みが別のCPUで発生した場合、その前に約80マイクロ秒の遅延が発生することです。タスクは実行を再開します。
これは、rawブロックデバイスに対してO_DIRECTを使用して確認できるため、ページキャッシュやファイルシステムに関連していません。ドライバーはmake_request
操作の受信に使用するため、要求キューがなく、カーネルI / Oスケジューラーを使用しません(私を信頼する必要があります。この方法の方がはるかに高速です)。
bio_endio
あるCPUでの呼び出しと、別のCPUでのタスクの再スケジュールの間に問題が発生することを自分自身に示すことができます。タスクが同じCPU上にある場合、タスクは非常に迅速に開始され、タスクが別の物理CPU上にある場合は、はるかに長い時間がかかります。通常、現在のテストシステム(Intel 5520 [NUMA]チップセットのx86_64)では約80マイクロ秒長くなります。 )。
プロセスとIRQcpuアフィニティを同じ物理CPUに設定することで、パフォーマンスを即座に2倍にすることができますが、これは長期的な解決策としては適切ではありません。I/ Oの発生元に関係なく、優れたパフォーマンスを得ることができます。また、IRQは1つしかないため、一度に1つのCPUにしか操作できません。多くのスレッドが多くのCPUで実行されている場合は、適切ではありません。
この問題は、Centos5.4の2.6.18からメインライン2.6.32までのカーネルで見られます。
bio_endio
したがって、問題は、別のCPUから呼び出した場合、ユーザープロセスの再開に時間がかかるのはなぜですか?これはスケジューラの問題ですか?そして、遅延をなくす、または下げる方法はありますか?
compiler-construction - この pthread は実際にどのように機能しますか?
私は実際に SMP を使用したコンパイラーのプロジェクトに参加しており、pthreads を使用してコーディングしたいと考えており、mpi を開くなどの多くの並列処理について聞いたので、pthread の呼び出し中にこのスレッドがコアに割り当てられる方法から始めるには、与える方法はありますか? pthreads による異なるコアへのスレッド?
linux-kernel - Linuxカーネルモジュールのプロセッサアフィニティ設定?
Windowsでは、KeSetSystemAffinityThreadを使用してドライバーコードのプロセッサー親和性を設定し、KeGetCurrentProcessorNumberを使用してコードが実行されているプロセッサーを確認できます。
Linuxカーネルモジュールで同様のことをしようとしていますが、表示されるアフィニティ呼び出しはユーザーランドプロセスのみです。特定のプロセッサでアセンブリコードを実行できるように、これを行う方法はありますか?(つまりsgdt)
編集:
現在のプロセッサを入手する方法を理解したと思います。smp_processor_id()は機能するはずです。
embedded - 関数が実行されているコア
タスクレット関数をスケジュールして実行するカーネル タスクレットを検討してください。
タスクレットが実行されているコアを知る方法はありますか? つまり、タスクレットが実行されているコアを知るための関数/変数があります。建築は腕。
ありがとう!
linux - SMPシステムのLinuxカーネルは、ネットワークから順番に到着するUDPパケットがソケットから順番に読み取られることを保証しますか?
私が取り組んでいるプロジェクトでは、ネットワークからUDPストリームを読み取っているときに、SMPシステムの特定の状況で異常な問題が発生しています。送信者と受信者の間に接続されたハブをスニッフィングすることで、ネットワークから順番に到着していることがわかります。ただし、ソケットから読み取ったときに、順序が狂って到着しているように見える場合があります。この場合、UDPパケットの保証はありますか、それともアプリケーションはリオーダーバッファを実装する必要がありますか?ここではCPUアフィニティを設定していません。これが役立つと思いますが、理想的には、すべてのCPU/hwスレッドでネットワークトラフィックを処理する必要があります。
java - smp を使用した Java ミューテックス
マルチスレッドプログラミングを学んでいます。ミューテックスを練習しているときに、デュアルコアのラップトップでは正しく動作しないように見えることに気付きました。
ミューテックス コードはhttp://pastebin.com/axGY5y3cにあります。
結果は以下のとおりです。
結果は、スレッドが最初に同じ init 値を取得するように見えることを示しています。それは正しくないようです。
私のコードに何か問題がありますか? または、smp/dule-core/複数の CPU で Java ミューテックスを実行する例を提供するリソースはありますか?
手伝ってくれてありがとう。
linux - マルチスレッドおよびSMPLinux
LinuxカーネルはSMPと言われています。プロセスとカーネルスレッドはプロセッサ間で分散されると言われています。
fedora13、ubuntu 10.04 LucidなどのすべてのLinuxディストリビューションは、デフォルトでSMP Linuxを有効にしますか?
SMP Linuxの場合、次の方が適しています-a)マルチプロセスアプローチよりもb)マルチスレッドアプローチ
pthreadはデフォルトでカーネルレベルのスレッドを作成するので、どのアプリケーションでもSMPだけでなくLWPも利用できますか?
そうでない場合は、Pthreadを使用してカーネルレベルのスレッドを作成するにはどうすればよいですか。任意の参照をいただければ幸いです。