問題タブ [parallel-processing]

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 投票する
4 に答える
6413 参照

multithreading - Erlang プロセスはカーネル スレッドにどのようにマッピングされますか?

Erlang は多くの軽量プロセスをサポートできることで知られています。これが可能なのは、これらが従来の意味でのプロセスではなく、P スレッドのようなスレッドでもなく、完全にユーザー空間内のスレッドであるためです。

これはまあまあです(実際には素晴らしいです)。しかし、Erlang スレッドはマルチコア/マルチプロセッサ環境でどのように並列実行されるのでしょうか? 別々のコアで実行するには、どうにかしてカーネル スレッドにマップする必要がありますか?

それが事実であると仮定すると、これはどのように行われますか?多くの軽量プロセスが 1 つのカーネル スレッドにマップされていますか?

または、この問題を回避する別の方法はありますか?

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

c# - 原子または巨大

C# で非常に並列なアプリケーションを作成する場合、次のように非常に小さいものを作成する方がよいでしょうか?

20 の小さなクラス、40 の大きなクラス、合計で 60 のクラス、合計 120 のクラス

または巨大なのような:

これらの 60 個のクラスを個別に作成します (まだ再利用性を念頭に置いています)。

したがって、#2 では、これらの 60 個のクラスに、他のクラスの代わりに何かを行うためのメソッドを含めることができます。

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

multithreading - より多くのスレッドを使用すると、プログラムの実行が遅くなる原因は何ですか?

この質問は、私が以前に尋ねたのと同じプログラムに関するものです。要約すると、次のようなループ構造を持つプログラムがあります。

bin_indexこの質問の目的のために、共有状態を使用または変更しない、その引数の完全に決定論的な関数です。つまり、明らかに再入可能です。

私は最初、単一のスレッドを使用するためにこのプログラムを書きました。n次に、スレッドが外側のループのすべての反復を実行するように、複数のスレッドを使用するように変換しましたi1 % nthreads == n。したがって、各スレッドで実行される関数は次のようになります

すべてのthread_local_histograms は、最後にメインスレッドで合計されます。

奇妙なことに、ある特定のサイズの計算に対して 1 つのスレッドだけでプログラムを実行すると、約 6 秒かかります。2 つまたは 3 つのスレッドで実行し、まったく同じ計算を行うと、約 9 秒かかります。何故ですか?デュアルコア CPU を使用しているため、2 つのスレッドを使用する方が 1 つのスレッドよりも高速であると予想されます。プログラムはミューテックスやその他の同期プリミティブを使用しないため、2 つのスレッドを並行して実行できるはずです。

time参考までに: 1 つのスレッドの典型的な出力(これは Linux 上にあります):

および 2 つのスレッド:

コードはhttp://static.ellipsix.net/ext-tmp/distintegral.ccsにあります。

PS まさにこの種のもののために設計されたライブラリがあり、おそらくパフォーマンスが向上する可能性があることは知っていますが、それが私の最後の質問でしたので、それらの提案をもう一度聞く必要はありません。(さらに、pthreads を学習体験として使用したかったのです。)

0 投票する
13 に答える
21161 参照

c++ - プログラムの CPU 使用率を下げるには?

私は、多くの浮動小数点演算で CPU を大量に使用する計算を行うマルチスレッド プログラムを作成しました。より具体的には、アニメーションシーケンスをフレームごとに比較するプログラムです。つまり、アニメーション A のすべてのフレームについて、アニメーション A のフレーム データをアニメーション B のすべてのフレームと比較します。異なるアニメーションに対してこの集中的な操作を並行して実行するため、プログラムは AB ペア、BC ペア、および CA ペアで作業できます。並行して。このプログラムは、QtConcurrent と、動きのあるコンテナーを関数にマップする「マップ」関数を使用しています。QtConcurrent はスレッド プールを管理します。Intel クアッド コア プロセッサで作業しているため、4 つのスレッドが生成されます。

ここでの問題は、プロセスが CPU を破壊することです。使用率は 100% 一定であり、プログラムを十分なモーション セットで実行すると、実際にブルー スクリーン オブ デスが発生します (非ページ領域でのページ フォールト)。これは、コンピューターがオーバークロックされているためだと思われます。しかし、これは私のプログラムのコーディング方法によるものでしょうか? マシンの安定性をテストするために使用したいくつかの非常に集中的なベンチマーク ツールでは、PC がクラッシュすることはありませんでした。プログラムが CPU を使用して負荷を軽減する方法を制御する方法はありますか? それとも、私は自分の問題を誤解していますか?

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

c++ - unix-fork-monitor-child-progress

少しの並列処理が役立つアプリケーションがあります。説明のために、10 個のテキスト ファイルを含むディレクトリがあり、10 個のプロセスをフォークして、それぞれがファイルの 1 つを取得し、ファイルの内容を大文字にするプログラムを開始したいとします。親プログラムは、待機関数の 1 つまたは選択関数を使用して、子プロセスが完了するのを待機できることを認めます。

私がやりたいことは、親プロセスが分岐した各プロセスの進行状況を監視し、プロセスの実行中に進行状況バーのようなものを表示することです。

私の質問。

フォークされたプロセスがこの情報を親プロセスに伝えるために、合理的な代替手段は何ですか? どのような IPC 手法を使用するのが合理的ですか?

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

c# - ラムダ式はマルチスレッドですか?

ラムダ式はマルチスレッドですか?

たとえば、数式をラムダ メソッドとして記述し、それを別のメソッドに渡すと、マルチスレッドになるでしょうか。

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

delphi - D2010ベータ版:マルチコアをサポートするための完璧な方法

新しいD2010で期待される機能についての私の以前の質問では、最も評価の高い回答の1つは「マルチコアサポート」でした。

さて、私たち全員が知っているように、DelphiはD2(IIRC)以降のスレッドプログラミングをサポートしており、一部の領域で頻繁に使用されています。より具体的には、あなたの意見では、Delphiで並列プログラミングをサポートするのに最適な方法はどれですか?(しかし、それだけではありません-質問を完全にDelphiに結び付けないようにしましょう)。

個人的には、状況に応じて、スレッド(とにかくそれらがあります)、アクターモデル、およびタスクベースのアプローチ(実際にはアクターモデルに近い)を組み合わせたアプローチでうまくいくことがわかります。

また、私見では、俳優間の相互作用を説明するためのビジュアルモデリングツールを調査することは非常に興味深いでしょう。

また、ビジュアルデバッガー(おそらく上記のものと同じツール)も大歓迎です。

いくつかの参考文献:

あなたの意見はどれでしょう?