問題タブ [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.
parallel-processing - Cilk または Cilk++ または OpenMP
Linux でマルチスレッド アプリケーションを作成しています。シナリオは次のとおりです。
クラスの x インスタンスがあり、BloomFilter
y GB のデータ (使用可能なメモリよりも大きい) があるとします。各ブルーム フィルター インスタンスで、この y GB のデータのメンバーシップをテストする必要があります。さらに、すべてのプロセスまたはスレッド間でデータを共有できるようにデータを読み取るだけなので、並列プログラミングがタスクの高速化に役立つことは明らかです。
現在、Cilk、Cilk ++、または OpenMP のどれを使用するか (どちらが優れているか) について混乱しています。また、マルチスレッドとマルチプロセッシングのどちらを使用するかについて混乱しています
gcc - cilkのgccブランチをビルドできません
次のコマンドでsvnからダウンロードしたブランチからcilkブランチを構築しようとしています。
svn co http://gcc.gnu.org/svn/gcc/branches/cilkplus-4_7-branch/
インストールに使用しているチュートリアルは次のとおりです:これ
ステップ5の9行目で、次のエラーが発生します。
ar: elem-function-common.o: No such file or directory
エラー自体はかなり説明的ですが、make -j3のコマンドのログにそのようなファイル「elem-function-common.o」の作成を見つけることができませんでした(ステップ5の9行目)。誰かがこれで私を助けることができますか?
gcc - gcc-4.7でcilkplusをコンパイルする際のエラー
次のエラーが発生します
関連する行は次のとおりです。
Line 107
cilk_forループの閉じ中括弧に対応します。
どんな助けでも大歓迎です!
thrust - cilk::reducer_list_append と同等の推力
n 個の間隔またはドメインのリストがあります。各間隔を並行して k 個の部分に分割し、新しいリスト (順序なし) を作成したいと思います。ただし、ほとんどのサブディビジョンは特定の基準を満たしていないため、新しいリストに追加する必要はありません。
cilk::reducer_list_append は、push_back を使用してリストを形成する並列リダクションの考え方を拡張します。このようにして、有効なサブインターバルのみを並行して収集できます。
タスクを達成するための推進方法は何ですか? 1つの方法は、大きなnxkリストを作成してから、並列フィルターとストリーム圧縮を使用することだと思いますか? しかし、 nxk は実際には非常に大きくなる可能性があるため、リダクションリストの追加操作があることを本当に望んでいます。
c - 並列プログラミングの奇妙なケース
時々実行され、時にはセグメンテーション違反が発生する並列プログラムがあります。実行可能ファイルは、3 つのスレッドで強制的に実行すると正常に実行されます (基本的には、単一のシリアル スレッドでも実行されます) が、他のスレッド値で強制的に実行すると、セグメンテーション エラーが発生します。シナリオは次のとおりです。
main.c
メイン関数内から:
bf_dup_eleminate
bloom-filter.c
ファイルからの関数:
bf_dup_eleminate_read
bloom-filter.c
ファイルから:
このエラーはintel inspector
次の場所から報告されました。
コールスタックは次のとおりです。
同様gdb
に、同じ場所でエラーを報告します。それは次のとおりです。
gdb
次のエラーがあることがわかりました
0x0000000000406fc4 in bf_dup_eleminate_read (bf=<error reading variable: Cannot access memory at address 0x7ffff7edba58>,
fp=<error reading variable: Cannot access memory at address 0x7ffff7edba50>,
j=<error reading variable: Cannot access memory at address 0x7ffff7edba4c>) at bloom-filter.c:536
Line 536
はint bf_dup_eleminate_read ( const bloom_filter *bf, FILE *fp, int j )
追加の詳細:
今、私のブルームフィルターは次のように定義された構造です
そのためのメモリは次のように割り当てられます。
のコピーは 1 つだけありbloom_filter
、各スレッドは同じものにアクセスすることになっています (読み取りのみを変更していないため)。
過去4日間ここで立ち往生していて、抜け道が思いつかないので、誰か助けてください。最悪の部分は、3 つのスレッドで実行されていることです!!!
注: cilk_for は、cilk でスレッドを生成するための単なるキーワードです。
c++ - libstdc++.so.6: 共有オブジェクト ファイルを開けません: そのようなファイルまたはディレクトリはありません
cilk++ プログラムで Cilkscreen コマンドを実行したいのですが、このエラーが発生しました
/usr/local/cilk/bin/../lib32/pinbin: 共有ライブラリのロード中にエラーが発生しました: libstdc++.so.6: 共有オブジェクト ファイルを開けません: そのようなファイルまたはディレクトリはありません
助けてください
multithreading - LLVM でのマルチスレッド
多くのスレッド/タスク (数十万) を処理する LLVM コードを生成する必要があります。これらのスレッドは、Intel TBB のタスク、golang gorutines などのように軽量である必要があります。もちろん、前述の Intel TBB などの外部 C++ ライブラリを使用して実装することもできます (LLVM と互換性がある場合)。
LLVM でのスレッド化に関する情報を長い間探していましたが、あまり見つかりませんでした。LLVM のドキュメントにはいくつかの API 呼び出しが記載されていますが、私が探しているものではないと思います。
したがって、いくつか質問があります。
- Intel の TBB や Cilk などのテクノロジを LLVM と併用することはできますか?
- この状況では、どのスレッド ライブラリを使用すればよいですか?
c++ - このforeachマクロの実装に問題はありますか
Intel Cilk Plus拡張機能には、このキーワードcilk_for(または実際には_Cilk_for)があります。これはのキーワードに似ていますが、より制限があり、その反復は並行して実行されます。内部でcilk_forを使用するBOOST_FOREACHの精神で便利なマクロを作成しました。次の実装で問題が発生しますか?
あなたはそれを次のように使うでしょう:
編集
c++ - pthreadでのCilk++の採用
私はしばらくの間この質問をしました。Cilk++に関するMITオープンコースウェアの講義を見ました。
スレッドを使用するためのインターフェースは単純明快であり、ツールは便利であるように見えました。講師は、pthreadやOpenMPの代わりにCilk++を使用することの長所を説明しました。一般的な書店のブラウジングを通して、私は一度Cilk++に関する本に出くわしました。
しかし、現在Intelが所有しているCilk ++についてMITが言うすべての良いことにもかかわらず、それはほとんど採用されていないようです。
これの証拠は、それがどんなに小さくても歪んでいても、出版された本の欠如と、SOに関するフォロワーまたはタグ付きの質問の数です。(執筆時点)
Amazon検索では
1.Cilk++2の結果
2.pthreads166の結果3.OpenMP278の結果が得られ
ます
SOタグ
1.Cilk11フォロワー2.OpenMP242
フォロワー
3.pthreads258フォロワー
Cilk ++の採用が遅い/少ない理由として考えられるものは何ですか?
linux - Linux システム上の cilk++
Windows システムではうまく動作するが、Linux システムではうまく動作しない cilk++ プログラムに問題がありました。
Windows システムでは、スレッド数を増やすと実行時間が減少しますが、Linux システムでは、スレッド数を増やすと実行時間が増加します。
Linux ubuntu 2.6.35-22-generic x86_64 GNU/Linux を使用しました
問題の原因がわかりません。誰か助けてください。