問題タブ [ppl]

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

c++ - ppl のタスク実行プロパティ

C++ ppl ライブラリから新しく作成されたタスクは自動的に実行されますか、または前述のタスクの実行を開始するために必要なメカニズムはありますか?

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

c++ - PPL を使用して配列内の最大要素を見つける

を使用して float の配列で最大の要素を見つける関数を実装する必要がありますppl.h

この回答に基づいて、このコードがあります:

ただし、このコードには問題があります。

  • 実行前に次の例外をスローします。

エラー C2780 'void Concurrency::_Parallel_for_each_impl(const _Random_iterator &,const _Random_iterator &,const _Function &,_Partitioner &&,std::random_access_iterator_tag)': 5 つの引数が必要です - 4 つの指定された parp D:\Microsoft Visual Studio 14.0\VC\include\ ppl.h 2987

エラー C2780 'void Concurrency::_Parallel_for_each_impl(_Forward_iterator,const _Forward_iterator &,const _Function &,const Concurrency::auto_partitioner &,std::forward_iterator_tag)': 5 つの引数が必要 - 4 つの指定された parp D:\Microsoft Visual Studio 14.0\VC\インクルード\ppl.h 2987

エラー C2893 関数テンプレートの特殊化に失敗しました 'iterator_traits<_Iter>::iterator_category std::_Iter_cat(const _Iter &)' parp D:\Microsoft Visual Studio 14.0\VC\include\ppl.h 2987


  1. その問題を解決するのを手伝ってくれませんか?

  2. を利用するためにコードを書き直すにはどうすればよいparallel_forですか? parallel_for(ブロック内の関数に渡された配列引数を参照できません)

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

c++ - 配列内の最大要素を見つける OpenMP および PPL バージョンは、シリアル コードよりもはるかに低速

float の配列で最大要素を見つける関数の 2 つのバージョンを実装しようとしています。ただし、私の並列関数は、シリアル コードよりもはるかに遅く実行されているように見えました。

4194304 (2048 * 2048) float の配列を使用すると、次の数値 (マイクロ秒単位) が得られます。

  • シリアルコード:9433

  • PPL コード: 24184 ( 2 倍以上遅い)

  • OpenMP コード: 862093 (ほぼ100倍遅い)

コードは次のとおりです。

PPL:

OpenMP:


  1. コードの実行速度が遅い原因は何ですか? 何か不足していますか?

  2. 私が間違っていることを見つけるのを手伝ってもらえますか?

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

c++ - この Concurrency::Task 呼び出しの "=" 記号パラメーターについて説明してください

このコードで「=」パラメータが何に使用されているか説明してもらえますか? の代わりに、他にどのパラメータを使用できます=か? それはどのような違いを生むでしょうか?MSDN は、この件に関してあまり明確ではありません。

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

ppl - PPL: エラー C3861: 'parallel_for': 識別子が見つかりません

win7 x86 と vs2012 を使用すると、次のようなコードがあります。

このようなエラー エラー C3861: 'parallel_for': identifier not found
が表示されますが、ビジュアル スタジオは "goto definition" を提供し、よくコンパイルされる非常によく似たプロジェクトがあります。そして vs can "-" my parallel_for abstract

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

c++ - ppl タスクと .then をループで使用するには?

私はpplを学ぼうとしています。スレッドを使用する代わりに。最初から持っていきましょう。私はこの単純な問題を抱えています:

v1:

これらの呼び出しは両方ともブロックされ、互いに待機することになるため、v1 は明らかに悪いです。

v2:

重要でないメッセージが重要なメッセージをブロックしないため、v2 の方が優れています。また、重要なメッセージは、受信後にインスタンスで処理されます。重要でないメッセージは、重要なメッセージを受信する前にチェックされません。したがって、重要でないメッセージは、私がそれに到達するまでに 20 代になる可能性があります。

v3:

v3 は、重要でないメッセージをより迅速に取得します。ただし、重要なメッセージの場合は遅くなります。重要なメッセージの処理は、受信後すぐには行われません。しかし、私がそれを確認するために周りにいるときだけです。ビジーな待機 (および CPU 時間を消費しすぎる) を避けるためにスリープを追加したため、重要なメッセージの受信と処理に v2 よりも時間がかかります。

v4:

V4 は v3 と同じです。代わりに ppl タスクを使用します。受信した重要なメッセージをすぐに処理しないという問題があります。

v5) スリープを解除し、important_msg_task ".then" を使用して受信したら処理を開始し、".then" は古いメッセージが処理されたら新しいメッセージをリッスンし、".then" はそのメッセージを処理します。新しいメッセージなど (unimportant_msg_task についても同じことを行います)。ループ内でこれを行う方法がわかりません。接続されたタスクのチェーンが次々と成長し、永遠に終わるだけのようです。

では、この問題を ppl を使用して (または少なくとも生のスレッドを使用せずに) どのように解決しますか?

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

c++ - ループ内の異なるタイプの 2 つのものを wait_any するにはどうすればよいですか?

同時に 2 つ以上の (種類の異なる) ものを待つにはどうすればよいですか? イベントループのように: