私は、データ配布モデルの並列アルゴリズムを設計する際に、ベストプラクティスが何かを理解しようとしています。ブロック分布に対する賛否両論とメモリ上のデータの循環分布との関係どんな助けもありがとう。並列アルゴリズム設計
3
A
答えて
1
Quinnの「MPIとOpenMPを使用したCでの並列プログラミング」では、パラレルプログラミングでデータを配布するさまざまな方法の例が多数提供されています。ニーズに応じて、どのアプローチが最も便利かを把握するのに役立つ意思決定ツリーもあります。
1
共有メモリのブロック分散は、アルゴリズムの実行中にほとんど(または、まったく)同期を必要としないチャンクに分割するアルゴリズムに最適です。
並列アルゴリズム設計では、プロセス間の同期のボトルネックを最小限に抑えることに焦点を合わせる必要があります。一例は、グリッドがストリップ(プロセッサごとに1つ)に分割され、同期が実行されない、2-Dグリッド上のGauss-Seidel緩和法である。各プロセッサは独立した収束値を計算し、その数値に達すると終了します。
また、参照のデータローカリティも考慮する必要があります。これは、並列および順次アルゴリズムに顕著な影響を与えることができます。
関連する問題
- 1. DDoS防止のための並列アルゴリズムの設計?
- 2. 並列圧縮アルゴリズム
- 3. 最大差を計算する並列アルゴリズム
- 4. アルゴリズムの並列検索
- 5. アルゴリズムの設計と解析?
- 6. 並列計算
- 7. 並列計算 - シャッフル
- 8. 組み合わせアルゴリズムの並列化
- 9. STL並列検索アルゴリズムの保証
- 10. 並列削減アルゴリズムの実装
- 11. 遺伝的アルゴリズムの並列実行
- 12. アルゴリズム/データ構造設計インタビューの質問
- 13. トリッキーな暗号化アルゴリズムの設計
- 14. 1-8へのアルゴリズム設計マニュアルソリューション
- 15. アルゴリズム設計、有向グラフのアルゴリズムを実装
- 16. 並列計算用CPUカード?
- 17. オクタブでの並列計算
- 18. Haskellでの並列計算
- 19. RxJavaの並列計算
- 20. Java並列計算/スレッド
- 21. 複数の並列DBアクセスを持つiOS-Appの設計
- 22. 制約付き並列タスク実行の設計パターン
- 23. 並列タスクのバッチ処理の設計手法
- 24. 配列計算のためのPythonicアルゴリズム
- 25. MSMQ並行処理設計の問題
- 26. パイ計算アルゴリズム
- 27. ページネーション計算アルゴリズム
- 28. O(dn)でn個の文字列をソートするアルゴリズムを設計する
- 29. Matlabを使用した並列計算
- 30. 並列プログラムの時間計算
"共有メモリのブロック分散は、アルゴリズムの実行中にほとんど(または、まったく)同期を必要としないチャンクに分割するアルゴリズムに最適です。 - このステートメントは必要ではありませんが、私は独立したタスクのセットを与える巡回分解を見つけることができますが、ブロックではそれを行うことができません。 –
@Artem Barger:あなたは正しいです。私は根底にあるトポロジー、すなわちグリッド、トーラスなどについて言及しておきました。 –
ガウス・ザイデルは病理学的に悪い並列アルゴリズムです。あなたが示唆しているのは、各ストリップ内のガウス・ザイデルを使ったライン・ヤコビです。これは非常にゆっくりと収束するアルゴリズムです(すでにガウス・ザイデルは恐ろしいですが)。 – Jed