問題タブ [multiprocessor]
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.
multithreading - Mac と BSD の場合、現在のスレッドが実行されている CPU を見つけるにはどうすればよいですか?
CPU ローカル ストレージ用のライブラリを実装するために、Mac OS および BSD で Linuxsched_getcpu()
および Windows と同等の機能を探しています。GetCurrentProcessorNumberEx()
cpuid または rdtscp 命令を使用してこれをエミュレートすることは明らかに可能ですが、カーネルの協力により、よりうまく行うことが可能です: https://lkml.org/lkml/2007/1/6/190。
この情報を使用するまでに、スレッドの現在の CPU が変更される可能性があることは既にわかっています。
linux-kernel - 変更されたページテーブルが実行中のプロセスに固有のものである場合、カーネルが他のすべてのプロセッサにtlb無効化割り込みを送信するのはなぜですか
1 つのプロセスのページ テーブル エントリの場合、カーネル スレッドは他のすべてのプロセッサに tlb シュートダウン割り込みを発行して、他のプロセッサの tlb を無効にしますか? しかし、ページ テーブルはこのプロセスに固有のものであるということではありません。
x86-64 - AMD の MP 仕様、コードを使用して AMD に関してマルチプロセッサを起動する方法
マルチプロセッサをサポートする OS を作成しようとしていますが、AMD のマルチプロセッサをブートストラップする方法がわかりません。AMD のホームページを検索して MP 仕様を見つけましたが、見つかりませんでした。リンクを教えてもらえますか?住所?
cuda - Nvidia の Fermi GPU がストリーミング マルチプロセッサにスレッドブロックを発行する方法
8 つのスレッドブロックがあり、GPU に 8 つの SM があるとします。では、GPU はどのようにしてこのスレッドブロックを SM に発行するのでしょうか?
いくつかのプログラムまたは記事で、幅優先の方法、つまり、この例では各 SM がスレッドブロックを実行することを示唆していることがわかりました。ただし、いくつかのドキュメントによると、GPU カーネルのレイテンシーが制限されている場合は、占有率を増やすことをお勧めします。可能であれば、8 つのスレッドブロックが 4 つ以下の SM で実行されると推測される場合があります。
どれが現実なのか気になります。前もって感謝します。
caching - キャッシュの一貫性: スヌーピング v ディレクトリ ベース
私が理解していることから、ディレクトリベースのシステムはよりサーバー中心の設計であり、スヌーピングはよりピアツーピア中心です。
ディレクトリをチェックした後に有効なデータを持っているプロセッサに到達できるため、ディレクトリベースでは読み取りミスのメッセージが少なくて済みます。
スヌーピングは、n-1 メッセージである他のすべてのプロセッサに問い合わせるだけです。
そのため、ディレクトリ ベースのシステムはより拡張性があります。
ここで私の質問は次のとおりです。中央ディレクトリが1つしかない場合、読み取りミスの後にあまりにも多くのプロセッサが要求しているときにボトルネックに直面しませんか?
file - 他のプロセッサが使用できるようにファイルを閉じる方法は?
コマンド os.remove('text.pckl') でファイル text.pckl を削除しようとしています。他のプロセッサでファイルを作成しましたが、エラーが発生しました:
WindowsError: [エラー 32] 別のプロセスで使用されているため、プロセスはファイルにアクセスできません: 'text.pckl'
プロセッサによって使用されないようにファイルを閉じるにはどうすればよいですか? これまでのところ、file.close() コマンドを使用しています。
cuda - SM コアを使用した GPU カードのブロック処理パターン
計算機能 1.3 および 2.0 GPU カードのスケジューリング プロセスについて質問があります。ストリーミング マルチプロセッサで毎回スケジュールされる最大ブロックは、どちらの場合も 8 です。少なくとも、これは占有計算機から気づいたことです。
1.3 カードでは各 SM に 8 つのコアがあり、2.0 カードでは SM ごとに 32 コアがあります。ブロック プロセスのコアはどのように分散されますか?
1.3 の場合、各コアは 1 ブロックを処理しますか? もしそうなら、SM ごとに 8 個未満のブロックがある場合、ブロックを処理するために 1 つよりも多くのコアが割り当てられますか?
2.0 の場合、SM で 8 つのブロックがスケジュールされている場合、1 つのブロックを処理するために 4 つのコアが割り当てられますか? SM 内のブロックが少ない場合、ブロック計算用にスケジュールされるコアは多くなりますか?
ありがとうございました。
java - マルチコア環境でのデータの同期 (Java ベース)
これは私の最初の質問なので、私に優しくしてください。
別々の CPU コアで実行されている 2 つのスレッド (t1 と t2 など) が、共有オブジェクトの同期メソッドを同時に (つまり、同じナノ秒/プロセッサ サイクルで) 呼び出すとどうなるでしょうか? ロックは、アーキテクチャのどの要素によってどのように解決されますか?
当たり前の質問のように思えるかもしれませんが、インターネット上で何も見つかりませんでした。ありがとう!
multiprocessor - 階層 CLH ロックの動作
クラスター マスターがローカル キューをグローバル キューにマージした後、ローカル クラスターで作成された新しいノードを HCLH ロックがどのように処理するのか、誰か説明できますか?
multithreading - Perl ithreads :共有変数 - マルチプロセッサ カーネル スレッド - 可視性
perlthrtut の抜粋:
共有変数は、2 つ以上のスレッドが同時にそれを変更しようとしても、変数の内部状態が破損しないことを保証することに注意してください。ただし、次のセクションで説明するように、これを超える保証はありません。
マルチプロセッサ カーネル スレッドをサポートする Linux での作業。
すべてのスレッドが更新された共有変数の値を見るという保証はありますか? 上記のように perlthrtut のドキュメントを調べても、そのような保証はありません。
ここでの質問: それを保証するためにプログラムで何ができるでしょうか?