問題タブ [cilk]
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.
cilk - cilk の for ループから抜け出す方法は?
for ループは次のようになります。
次に、コンパイル時に次のエラーが発生しました。
c - 一見恣意的に変化する配列要素 [並列クイックソート/プレフィックスサム]
だから私は、Cilk を使用して C で並列クイックソートの実装に取り組んでおり、奇妙な問題に遭遇しています。参考までに、私のコードの関連部分(長さについては事前にお詫びします):
ここで、これを 50 要素のテスト ケースで実行すると (デバッグを容易にするために順次)、1 つのレイヤーを再帰の奥深くまで進めてから、範囲外のインデックスが原因であると思われるセグメンテーション エラーに遭遇します。ラインequalList[equalIndex[i]] = array[i];
。
さらに調べてみると、 equalIndex を割り当てた直後、その中の値は完全に任意です。これは当然のことです。まだ何も割り当てていません。prefixSum は、1 である最後から 2 番目の要素を除いてすべてゼロである要素のリストで呼び出されます。(これは、ピボットと等しい要素をマークするビットマップです。) これは、プレフィックス合計操作の結果を equalIndex に入れます。これを配列へのポインターとして渡し、結果が呼び出しの外でも持続するようにします。
これを行った後、debug printf コマンドは、equalIndex が最後の 2 つの要素 (両方とも 1) を除いてすべてゼロになっていることを示します。これは予想されるプレフィックス合計の結果です。ここまでは順調ですね。prefixScan は、ゼロからインデックス作成に取り組むのに役立つ単純なヘルパー関数です。指定された配列内のすべての要素を 1 スペース右に移動し、最初の要素をゼロで埋めます。これに equalIndex を渡した後、デバッグ ステートメントは、1 である最後の要素を除いて equalIndex がすべてゼロであることを示します。
問題が発生するのは、各要素を適切な配列にコピーする cilk_for ループの直後です。このループの本体で、printf ステートメントは、以前の値とは少しでも一致しない値を表示するようになりました。一部は適切にゼロであり、その他は、この配列を prefixSum で初期化する前に見たような非常に大きな正または負の整数です。 . これらの極端な値の 1 つに到達し、それを配列インデックスとして使用しようとすると、プログラムは正しくクラッシュします。
私の最善の推測は、どういうわけか equalIndex の値が適切に割り当てられていないことです (したがって、配列を初期化していないかのような奇妙な動作です)。
c - GCC5.2.0 で Cilk plus をコンパイルする
gcc5.2.0 で Cilk plus を使用して次のコードを正しくコンパイルする方法を知っている人はいますか? gcc -fcilkplus * または g++ を使用すると、常にエラーが発生します。
結果:
これに関するオンラインのトピックはほとんどありません。ありがとう
c++ - Mac OS X (El Capitan) に Cilk Plus をインストール中にエラーが発生しました
Mac OS X に CilkPlus をインストールしているときに問題が発生しました。インストール ページに従って、次のコマンドを次の順序で実行しました。
それで、
しかし、それはエラーで終了しました。エラーログ エラーログ 3 . 誰かが私が間違っている場所を教えてくれれば素晴らしいことです。CilkPlus コードをコンパイルして実行しようとしています。
visual-studio-2015 - Visual Studio 2015 に Cilk を含める
Visual Studio 2015 に並列プログラミング用の Cilk を含めるにはどうすればよいですか? Visual Studio 2010 のみの既定のインストールがあるためです。
scheduling - シルクワークス盗み性能
Cilk のワーク スティール スケジューリング パフォーマンスについて説明している論文を読んでいます。
1) 私の理解では、スケジューラはクリティカル パスのタスクを認識していませんが、タスク グラフの「深く」ないタスクを盗むことによって、いずれにしてもその実行を維持しようとします。あれは正しいですか?
2) また、Cilk のワーク スチール スケジューラは、すべてのタスクが同様の複雑さであると想定していますか? タスクの複雑さが一様でない場合、スケジューラは最高のパフォーマンス、つまり最高の負荷分散を実現する上で柔軟性が低下するのではないでしょうか?