問題タブ [parallel-for]

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 に答える
1147 参照

c# - Parallel BeginInvoke を使用しているときに Invoke が機能していない場合 - c# 4.0

以下に示すように AddListBoxItem 関数内で呼び出しを使用すると、ソフトウェアが応答しなくなり、フリーズしますが、BeginInvokeを使用すると機能します。なぜそれが起こっているのですか?

ビジュアル スタジオ 2010、C# 4.0

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

openmp - 単純なOpenMP並列forループの速度を取得できません

これはOpenMPでの私の最初の試みですが、スピードアップすることはできません。マシンはLinuxamd_64です。次のコードをコーディングしました。

何か案は?

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

c# - 並列無限ループを実現するための最良の方法は何ですか?

.Netの並列拡張機能でParallel.For()を使用することに慣れました。これは、スレッドを手動で開始して維持する必要がなく、コードを並列化する簡単な方法であるためです(面倒な場合があります)。私は今、並列化したい無限ループ(停止するように信号を送るまで何かをする)を見ています、これを行うための引数のないParallel.For()オーバーロードはないので、ここでの最良のアプローチは何でしょうか?なれ。原則として、私は次のようなことを行うことができます。

しかし、それは作業分割ロジックが処理するための期待される/効率的なパターンではないかもしれないと私は思っています(?)

別のオプションは次のようなものです。

しかし、それはエレガントではないように思われ、非効率的な作業分割につながる可能性もあります。

今のところ、私の本能は、自分のスレッドを作成して維持することによってこれを手動で行うことですが、これに関するフィードバック/意見を得ることに興味があります。ありがとう。

===更新===

受け入れられた回答の記事のコードの簡略化されたバージョンを使用しています(ParallelOptionsパラメーターを削除しました)。これがコードです...

使用例は次のとおりです。

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

c++ - parallel_for ループでスレッドごとにメモリを割り当てる

私は元々、画像のすべてのピクセルを反復処理し、データに対してさまざまな操作を行うシングルスレッドループを持っています。

私が使用しているライブラリでは、画像からピクセルを取得するには、一度に 1 行ずつ行う必要があります。この目的mallocのために、1 行のピクセルをホストできるメモリ ブロック ( BMM_Color_fl1 ピクセルの RGBA データを 4 つの float 値として含む構造体でありGetLinearPixels()、ビットマップから 1 行のピクセルをBMM_Color_fl配列にコピーします)。

ここまでは順調ですね!

このループの実行時間を短縮するために、 を使用して並行バージョンを作成しましたparallel_for。これは次のようになります。

マルチスレッド ループは既に元のループよりも高速ですが、すべてのスレッドが同じメモリ ブロックを使用することは不可能であることに気付きました。そのため、現在、ループの反復ごとにメモリを割り当てて解放しています。ループの繰り返しよりもスレッド。

私の質問は、各スレッドmallocに正確に 1 行のバッファーを持たせ、それを繰り返し使用する (そして理想的には、最後に解放する)ことができるかどうか、またどのようにすればよいかということです。

  • 免責事項として、私は初心者の C++ ユーザーであると述べなければなりません。

提案されたソリューションの実装:

提案されたように、缶詰にして+mallocに置き換えました。vectorreserve

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

c# - While の代わりに TPL で Parallel For を使用する方法

while ステートメントの代わりにステートメントで parallel for を使用したい。サンプルを見ると、Parallel For は既知の (または変数の) カウントのみで実行されます。

しかし、ループが何回実行されるかはわかりません。実行時にループを変数にリンクすることはできません。

TPL と従来のコードを使用して、簡単なパフォーマンス テストを試みます。だから私はデクリメント操作でモジュラスを計算するモジュラスクラスを書いています。私の機能は

私の目標は、このループを Parallel For ループに置き換えることです

また、if ステートメントと break ステートメントで Parallel For を使用できるかどうかも知りたいです。

すべてのスレッドで n の値が変更されるため、ロックが必要になると思います。コードサンプルをいただければ幸いです

前もって感謝します

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

c++ - C++ インテル TBB 内部ループの最適化

Intel TBB を使用して内側のループ (3 番目の 2 番目) を並列化しようとしていますが、内側の 2 つのループのサイズが大きい場合にのみ適切な成果が得られます。

TBB はメジャー ループの反復ごとに新しいスレッドを生成していますか? とにかくオーバーヘッドを減らす方法はありますか?

openMP (これを削除しようとしています!!!) にはこの問題がないことに注意してください。

私はコンパイルしています:

-03 -xHost -mavx のインテル ICC 12.1

Intel 2500k (4 コア)

編集: ループの結果に基づいて out ループ テストを述語に置き換える必要があるため、ループの順序を実際に変更できます。

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

c++ - 非同期アイランドGAアルゴリズムを編成するためにparallel_forとconcurrent_vectorを使用することは可能ですか?

リングトポロジーを備えた標準的な島の遺伝的アルゴリズムがあると仮定します。私はC++、PPL、MS VisualStudio2010を使用しています。

PPLライブラリのparallel_forを使用すると便利です。停滞フラグがオンになっているときに島が隣人から現在の最高の個人を取得する必要がある場合、どのプログラムプリミティブを使用する必要がありますか?parallel_forサイクルのファイナライズ後に停滞フラグの配列を確認したくないので、「空腹の」島にオンザフライでフィードしたいと思います。PPLにはこの目的のための手段がありますか?各島には、その隣の島へのポインターがあります。GetBestIndividual()メソッドをブロックするために、Evolve()メソッド内にある種のクリティカルセクションが必要です。Evolve()は並列で呼び出されます(島の場合はparallel_forサイクル)。

0 投票する
0 に答える
745 参照

multithreading - 二重にネストされた並列 for ループとそのスパン

私は、 parallel -for-loopsがどのように機能するかという考えに頭を悩ませようとしています.

私が疑問に思っているのは、次のように動作する場合、内部にパラレルフォーロップを含むパラレルフォーロップがあるかどうかです(便宜上、n=5 とし、「to」はアップを意味します)。まで (<=)):

ここに私が考えているコードがあります:

そして、これは私が傾いているスレッドの動作ですが、正しいかどうか誰かに確認してもらいたいです:

これで、外側の外観のすべてのスレッドが作成されました。そしていよいよインナー。ここで、subXY はスレッド x のスレッド番号 y を意味します。

これは私が考えていることの最良の説明ではないかもしれませんが、私が思いつくことができる最高のものです.

これは正しいです?それとも、外側のループ スレッドは、自分自身に接続されたスレッドを作成するだけでしょうか? たとえば、T1 は subT1XX スレッドのみを作成しますか?

また、時間 5 で何もしないスレッドは、その間にコマンドを実行しますか?

誰かが私を助けることができれば、それは私を非常に助けます.

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

c# - 多くの長時間実行タスクのTask.Factory.StartNewまたはParallel.ForEach?

重複の可能性:
Parallel.ForEachとTask.Factory.StartNew

毎晩約1,000のタスクを実行する必要がありThreadPoolます(将来的にはその数が増える可能性があります)。各タスクは長時間実行される操作(Webサービスからのデータの読み取り)を実行しており、CPUを集中的に使用しませんAsync I/Oこの特定のユースケースのオプションではありません。

IList<string>のパラメータが与えられた場合、私はする必要がありますDoSomething(string x)。私は次の2つのオプションから選択しようとしています:

また

どちらのオプションが優れているのか、そしてその理由は何ですか?

ノート :

答えには、との使用法の比較を含める必要がTaskCreationOptions.LongRunningありMaxDegreeOfParallelism = Environment.ProcessorCount * SomeConstantます。