問題タブ [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.

0 投票する
3 に答える
1389 参照

erlang - Erlangは単一のマルチコアマシンで実行するためだけに設計されていますか、それともプロセスを分散できますか?

私のアプリはクアッドコアマシンでうまく動作します。これは「驚異的並列」であり、約100Kのプロセスを備えているため、マシンのクラスターでの実行に最適です。ただし、クラスター内の使用可能なすべてのノードにこれらすべてのプロセスを分散させる方法に関するドキュメントを見つけるのに苦労しています。

分散Erlangのドキュメントは、各ノードが単一のアプリを実行するクライアントであり、どのノードがどのプロセスを実行するかを手動で指定するサーバークライアントアプリに焦点を当てているようです。

0 投票する
1 に答える
368 参照

thread-safety - 非整列データの連動操作

win32 の連動関数は、データに対するアトミック操作のメカニズムを提供します。それらは、スレッドセーフでマルチプロセッサセーフであると想定されています。

データが整列されていない場合はどうなりますか? 連動操作はまだアトミックですか?例: アラインされていない整数のインクリメント。

タイ

0 投票する
7 に答える
16492 参照

multithreading - 並列コーディングとマルチスレッド (単一 CPU)

単一のCPUで「並列コーディング」と「マルチスレッドコーディング」を同じ意味で使用できますか?

私は両方の経験があまりありませんが、コーディング スタイルを上記のいずれかにシフトしたいと考えています。

現在、多くのシングルスレッドアプリケーションが時代遅れになっていることがわかったので、キャリアの見通しとして将来のソフトウェア業界にとってどちらが良いでしょうか?

0 投票する
4 に答える
1339 参照

multithreading - スレッド化されたシステムは、異なる CPU によってキャッシュされている共有データにどのように対処しますか?

私は主に C++ のバックグラウンドから来ていますが、この質問はどの言語のスレッドにも当てはまると思います。シナリオは次のとおりです。

  1. 2 つのスレッド (ThreadA と ThreadB) があり、共有メモリに値 x があります。

  2. x へのアクセスがミューテックス (または他の適切な同期制御) によって適切に制御されていると仮定します。

  3. スレッドが異なるプロセッサで実行された場合、ThreadA が書き込み操作を実行し、そのプロセッサが結果をメイン メモリではなく L2 キャッシュに配置するとどうなるでしょうか? 次に、ThreadB が値を読み取ろうとすると、独自の L1/L2 キャッシュ/メイン メモリを調べて、そこにあった古い値を操作するだけではないでしょうか?

そうでない場合、この問題はどのように管理されていますか?

もしそうなら、それについて何ができるでしょうか?

0 投票する
1 に答える
253 参照

crash - マルチスレッドおよびマルチプロセッサ環境での文字列関連の操作中にアプリケーションがクラッシュする

アプリケーションはVC++6.0で開発されています。これをマルチスレッドおよびマルチプロセッサ環境でその依存サービスとともに実行すると、文字列形式や文字列コピーなどの文字列操作を試行すると、依存サービスの1つがクラッシュします。ただし、これはシングルプロセッサ環境では観察されず、ほとんどの場合、コールスタックは次のようになります。

mfc42u!CFixedAlloc :: Alloc + 82 005b5b64 00000038 005b5b64

mfc42u!CString :: AllocBuffer + 3f 00000038 00000038 005b5b64

mfc42u!CString :: AllocBeforeWrite + 31 00000038 0a5bfdbc 005b5b64

mfc42u!CString :: AssignCopy + 13 00000038 057cb83f 0a5bfe90

mfc42u!CString :: operator = + 4b

誰もがそのような問題に直面しました。

0 投票する
2 に答える
3590 参照

c# - マルチプロセッサマシンでのストップウォッチのベストプラクティス?

関数のパフォーマンスを測定するための良い質問を見つけました。回答では、次のようにストップウォッチを使用することをお勧めします

しかし、マルチ プロセッサ マシンで実行している場合、これは有効ですか? スレッドを別のプロセッサに切り替えることができますか? また、同じことが Enviroment.TickCount にもあるはずです。答えが「はい」の場合、次のようにコードを BeginThreadAffinity 内にラップする必要があります

PS

切り替えは、プロセッサ レベルだけでなくスレッド レベルでも発生する可能性があります。たとえば、関数が別のスレッドで実行されているため、システムが別のプロセッサに切り替えることができる場合、この切り替え後にストップウォッチは有効になりますか?

私はストップウォッチをパフォーマンス測定だけに使用しているのではなく、Thread.Sleep を使用してタイマー機能をシミュレートするためにも使用しています (呼び出しの重複を防ぐため)。

0 投票する
3 に答える
8128 参照

java - マルチプロセッサ マシンで WebLogic にすべてのプロセッサを使用させる方法

昨日、当社のマルチプロセッサ サーバーの 1 つで Java/Web Logic の奇妙な動作に気付いたので、それについてご意見をお聞かせください。

何らかの理由で、Web Logic/Java は使用可能な 2 つのプロセッサのうち 1 つのプロセッサのみを使用します。重い負荷をかけたとき、一方の CPU がほぼ 100% に達し、もう一方のプロセッサが完全にアイドル状態になっていることがわかりました。これが仮想マシンであるかどうかは重要ですか (..しかし、これは仮想マシンではありません)

興味深いことに、他の OS アクティビティは、両方のプロセッサ アクティビティを示しています。

よろしく、_UB

0 投票する
3 に答える
3389 参照

java - LinuxでJavaプロセスがフリーズ(?)

これは私の最初の質問
なので、非常に奇妙な問題があります。
以下は私の問題です...

テキストをファイルに書き込む非常に単純なメソッドを作成します。
もちろん、私のマシン (XP、4CPU、jdk1.5.0_17[SUN])では問題なく動作しますが、稼働中のサーバー (Linux Accounting240 2.4.20-8smp、4CPU 、 jdk1.5.0_22
[SUN]) でフリーズすることがあります。

kill -3 は機能しません。
ctrl + \ は機能しません。

そのため、スレッド ダンプを表示することはできません。

それはよくフリーズします.. このメソッドで Thread.sleep(XX) を書くだけで、問題は解決しました(?)...
sleep(XX) ブレーク... 今日も Thread.sleep(XX) で発生...

この問題を知っていますか?それについて何か解決策はありますか?ありがとう。:-)

PS
Linux ディストリビューション: Red Hat Linux 3.2.2-5
コマンド: java -cp 。T

0 投票する
1 に答える
101 参照

bash - ClusterVisionOSで実行されているクラスターの経験がある人はいますか?

現在、ClusterVisionOS3.1を使用してクラスターに取り組んでいます。クラスターを扱うのはこれが初めてなので、おそらく「明らか」を試したことがないでしょう。

「qsub」コマンドを使用して、単一のジョブをクラスターに送信できます(これは正常に機能しました)

しかし、問題は一度に複数のジョブを送信するときに始まります。それらを一度に送信するスクリプトを作成することもできますが、そうすると、すべてのノードが私のジョブで占有され、ジョブを送信したい人が増えます。

だからここに取引があります:

32ノード(各4プロセッサ/スロット)

最善の方法は、クラスターに3つのノード(12プロセッサー)を使用し、可能であれば、これらのノード/プロセッサーですべてのジョブをキューに入れるように指示することです。ノードにジョブごとに1つのプロセッサを使用させることができれば、それは完璧です。

0 投票する
6 に答える
4723 参照

terminology - 「仕事盗み」vs.「仕事肩こり」?

動的な負荷分散戦略として、「ワーク スティーリング」に関する多くの情報が見つかり、「ワーク シュラギング」に関する情報が何もないのはなぜですか?

「仕事を肩代わりする」とは、アイドル状態のプロセッサが忙しい隣人から仕事を引き出すのではなく、余剰の仕事を忙しいプロセッサから負荷の低い隣人に押しやることを意味します (「仕事を奪う」)。

一般的なスケーラビリティは、両方の戦略で同じであるべきだと思います。ただし、待ち時間と消費電力の観点から、すべてのアイドル状態のプロセッサがすべてのネイバーに可能な作業を定期的にポーリングするよりも、実行すべき作業が確実にあるときにアイドル状態のプロセッサをウェイクアップする方がはるかに効率的であると私は信じています。

とにかく、簡単なグーグルは「肩をすくめる仕事」などの見出しの下に何も表示されなかったので、この戦略の先行技術と専門用語へのポインタは大歓迎です。

明確化

私は実際に、プロセッサ(ターゲット プロセッサである場合もそうでない場合もある) が、優先されるターゲット プロセッサのすぐ近くの場所を (データ/コードの場所に基づいて) 調べて、近くの隣人に新しい彼らはするべき仕事がそれほど多くないので、代わりに働きます。

ここで、決定ロジックが、直近の (通常は 2 から 4) 近隣の推定 q 長のアトミックな読み取り以上のものを必要とするとは思いません。これは、泥棒が隣人からポーリングして盗むことによって暗示される以上の結合ではないと思います. (両方の戦略で「ロックフリー、ウェイトフリー」キューを想定しています)。

解像度

「仕事を肩をすくめる」戦略として私が意味したこと (ただし、部分的にしか説明されていません!) は、たまたまプロセッサ、キャッシュとメモリの忠実性、およびスケーラビリティについてスマートな「通常の」事前スケジューリング戦略の領域にあるようです。

これらの用語で検索すると多くの参考文献が見つかり、そのうちのいくつかはかなりしっかりしているように見えます。「仕事を肩をすくめる」の定義で私が念頭に置いていたロジックに最も一致する (または取り壊す!) ものを特定したら、参考文献を投稿します。