問題タブ [cilk-plus]
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.
c++ - Cilk Plus プログラムのコンパイルに関する問題
Cilk Plus プログラムをコンパイルしようとしているときに問題が発生しました。基本的に、実行すると: g++ -o reducer reducer.cpp
、次のエラーが表示されます。
cilk/cilk.h
&を含めましcilk/reducer.h
たが、この問題の原因が正確にはわかりません。このコードは単純なカスタム レデューサーを表しており、特別なことは何もありません。エラーが発生したループは次のようになります。
注: を使用してみ_Cilk_for
ましたが、それでも同じエラーが発生します。
c++ - この単純な C++ コードに Cilk Plus 拡張機能を適用するにはどうすればよいでしょうか?
そこで、以下の単純な C++ の問題を並列化する方法を見つけることを任されました。私はすでにOpenMPを(別の質問で)1つの可能な方法として説明してもらいましたが、それは非常に堅実でした。そうは言っても、Clik Plus拡張機能は既存の C++ コードへの侵襲性が最小限に抑えられているように思われます。Clik Plus をこのコードに関連付けて並列化する方法について、詳細な説明を誰かが示していただければ幸いです。既存のコードの手順を以下に示します。
1) 引数として正の整数 N を取る
2) サイズ N の整数配列を作成する
3) 範囲 [1,1000] から整数を入力します。
4) 最大の整数と配列の和を並列に求める
5) 最大の整数と配列の合計を出力します。
ステップ 4 は、Clik Plus を実装するために必要なステップです。
現状では、私のコードは正常に動作しますが、並列化されていません。Clik Plus が提供する 3 つのキーワードがあることを理解しています。
cilk_for - for ループの並列化
cilk_spawn - 関数が呼び出し元の関数の残りの部分と並行して実行できることを指定します
cilk_sync - 実行を続行する前に、関数内で生成されたすべての呼び出しが完了する必要があることを指定します
私の問題は、コードのどこに/どのように実装するかわからないことです。
最後に、コマンドg++ main.cpp -fclikplus を使用してこのコードをコンパイルし、上記の 5 つの手順で定義したとおりに実行できるはずです。
ありがとうございました!