問題タブ [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 投票する
1 に答える
2914 参照

c# - Parallel.For での StringBuilder のスレッド セーフ

私は構造体を作成し、そのメソッドAStructをオーバーライドしました。ToString()次に、いくつかを返し、AStructそれらをリストに入れるための並列を作成したので、 a を使用しStreamWriterてそれらを出力できます。

問題は、出力ファイルに AList の 7/8 行しか出力されないのに対し、AList は実際には 10 個の要素すべてを取得していることです。これは StringBuilder のスレッドセーフに関係しているのだろうか。すべての行が出力されない理由を誰かが説明できますか?

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

c++ - Intel TBB 並列ループ スレッド ID

TBB 並列ループ本体でスレッド ID を確認するにはどうすればよいですか?

基本的に必要なのは、オブジェクトのスレッドごとのコピーであるため、スレッド ID でインデックス付けされた配列にそれらを含めると考えました。

OSネイティブサービスではなく、これを行うポータブルTBBの方法を探しています。

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

matlab - parfor の Matlab sim コマンド

parforさまざまなデータを持つ多くのコアでSimulink モデルをループで実行したいと考えています。ただし、for ループのみを使用すると結果が得られるのに対し、sim使用すると結果が得られませんでした。parfor

それは単純に[t,u]からを取得しworkspace1、伝達関数n{1}/d{1}を考慮してから を計算EqFracIntworkspace2ます。

私のコードの問題のある部分は

値を取得できませんでしたPGRs。エラーの内容と解決方法を教えてください。

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

c++11 - forループの順次および並列で「続行」するための共通キーワード

シーケンシャルforループでは、 を呼び出すことで現在の反復を中断できますcontinue。同様に、Concurrency::parallel_forループでは、ラムダ関数を呼び出すスレッドである現在の反復を で中断できますreturn

ときどき、ループをデバッグし、parallel_forそれをシーケンシャルにし、 を に変更するのを忘れなければreturnならないことがあります。continueこれは、void関数内ではコンパイラが文句を言わないためです。これにより、追跡が非常に困難なエラーが発生することがあります。

Visual C++ 2013 では、両方のループに同じキーワード/マクロ/… を使用するメカニズムが提供されているのだろうか。これは可能ですか?

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

c# - Parallel.For Iterations の異なるスレッド アフィニティ

7 つのコアを使用する (または 1 つのコアから離れる) には並列 for ループの反復が必要ですが、8 つの (すべての) コアを使用するために別の反復が必要で、以下のコードを試しました:

これは、両方の反復で 255 を出力します。したがって、parallel.for ループが単一のスレッドを使用しているか、1 つの設定で他の反復アフィニティも設定されています。もう 1 つの問題は、これは遅延の影響を受けやすいアプリケーションによるものであり、このすべてのアフィニティ設定によって 1 ~ 15 ミリ秒の遅延が追加されることです。

スレッドを明示的に使用する必要がありますか? また、アフィニティは 1 回だけ設定する必要がありますか?

編集:スレッドバージョンを試しましたが、同じことが起こります。明示的な 2 つのスレッドでも、両方とも 255 をコンソールに書き込みます。現在、このコマンドはスレッドではなくプロセス用のようです。

OpenCL コンテキストは、1 回の反復で CPU でのカーネル実行に最大コア数を使用しています。1 ~ 2 個のコアを使用してバッファーをコピーし、コマンドをデバイスに送信するその他の反復。cpu が opencl によって使用される場合、すべてのコアが使用され、デバイスはバッファーをコピーするのに十分な時間を確保できません。デバイスの分裂は、この問題を解決するよりも難しいようです。

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

c++11 - rocksdb イテレータの並列化

私のイテレータコード:

反復の順序は重要ではありませんが、不要な要素を反復しないように、ループを壊すことが重要です。いつブレークするかを知るために、要素が意味のある順序でソートされているという事実を利用しています。callback長い時間がかかる可能性があります。

だから私がやりたいことの疑似コードは

concurrency::parallel_for_each を適用しようとしましたが、rocksdb api には適合しないようです。

同時反復を実装するにはどうすればよいでしょうか?

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

c++ - OpenMp for ループの並列化

次のコードを OpenMP で並列化してみます。

ただし、SpeedUp は常に約 1.0 (+- 0.05) です。可能なすべてのスケジューリング (auto、dynamic、static、guided )、さまざまなチャンク サイズ、collapse なし、collapse(2) を試しました。ランタイムはまったく変化しません...

私のせいがどこにあるのか、理由を説明できる人はいますか?
自動化された for ループ コンパイラの並列化が原因でしょうか?

アドバイス/ヒントをよろしくお願いします!

アップデート:

必要に応じて検証可能な例。

解決済み:

ばかげた間違い ... /openmp の代わりに /MP-Flag (Build with Multiple Processes) を設定していました。現在、SpeedUp は約 2.0 です :)

申し訳ありませんが、ご協力いただきありがとうございます。