問題タブ [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.
multithreading - TParallel.For の AStride の意味は何ですか?
TParallel.For()
と呼ばれる引数がありますAStride
。私の場合、AStride は 2 です。
ここで「AStride」の技術的な意味が理解できません。最初のスレッドが範囲内の2つの連続した数字を処理し、2番目のスレッドが次の連続した数字などを処理するAStride = 2
ことを意味しますか?[1..10]
** 英語は私の母国語ではなく、「Stride」を「長いステップ」または「ペース」に訳しています。
c++ - Openmp: 並列 for ループ内のジョブのステータスを正しく計算できません
並列 for ループ内にタスク ステータス レポート機能を実装しようとしています。この for ループの並列化は「OPENMP」を使って行われています。
ステータスレポートを次のように実行したい:
もちろん、「開始時刻」と「現在時刻」の差を計算することで、「推定残り時間」を計算できます。しかし、「静的」宣言を使用しても、forループ内で「作業完了」を正確に計算できないようです。
いくつかのガイダンスをいただければ幸いです。
私のコードの出力:
出力の最後の 2 行からわかるように、ジョブのステータスを正しく計算できません。
これが私のコードです:
注: 出力バッファを何らかの形でフラッシュすると、work% の計算が台無しになるため、"\n" ではなく "std::endl" を意図的に使用しました。並列内で実際の計算を実行すると、同様のシナリオが発生すると確信しています
更新: 「Avi Ginsburg」の回答に基づいて、次のようにしようとしています:
問題 (更新):問題は、同時実行に同じスレッドが使用されていることです。そのため、「完了した作業」レポートは大幅に制限されます。データに基づいて、さまざまなコアにジョブを割り当てるにはどうすればよいでしょうか。
私のコードの現在の出力は次のとおりです。
c - OMP 並列スレッド ID の場合 hello world
C で基本的な OpenMP 機能の使用を開始しようとしています。「omp parallel for」の基本的な理解から、次のループの反復をスレッド間で分散し、同時に実行する必要があると思います。私が得ている出力は次のとおりです。以下のコード。私のハローワールドの例に欠けている微妙なものはありますか?
omp スレッド 0 からの Hello World omp スレッド 0 からの Hello World omp スレッド 0 からの Hello World omp スレッド 0 からの Hello World omp スレッド 0 からの Hello World omp スレッド 0 からの Hello World など.
c++ - parallel_for 実装の最適化
Microsoft の PPL を使用して parallel_for ループを実行するコードがいくつかありましたが、それを Linux と Mac に移動して、独自のバージョンを作成する必要がありました。本来あるべきことを実行し、適切なパフォーマンスで実行しますが、それ以外の点では同一の PPL の parallel_for ループよりも 20% ほど遅くなります。
一般的に 1 万回から 10 万回の反復が実行されていることを言及しておく必要がありますが、各反復は平方根と乗算の 2 つのみです。ただし、これはインタラクティブなアプリケーション用であるため、非常に高速に実行する必要があります。
C++ 11 はまだ新しいので、経験豊富な人が私の実装を見て、なぜそれがうまくいかないのか、何を改善できるのかについてフィードバックをいただければ幸いです。
完全なテスト コードは以下のとおりです。