並列コンピューティング:概念、形態、プログラミング上の課題と用途
並列コンピューティングの定義、主要な種類とハードウェアの階層、歴史的背景、プログラミング上の課題、代表的な用途、性能とスケーラビリティに関する重要な区別を解説する。
並列コンピューティングとは、多数の演算を同時に実行する計算モデルである。最も単純には、大きな問題を、並行して解決できる小さな副問題へ分割することを意味する。個々の機械演算または命令を重複して実行し、プロセッサが厳密な逐次処理ではなく並列に動作するようにできる。並列化によって問題の完了がどれほど速くなるかという高速化の理論的・実用的限界は、逐次のまま残さなければならない処理の割合と、調整に伴うオーバーヘッドに依存する。
画像ギャラリー
10 画像並列性の形態と階層
並列性は複数の粒度で現れる。一般的な分類には、次のものがある。
- ビットレベル並列性 — より幅の広いデータワードに対する演算を組み合わせ、1サイクル当たりにより多くのビットを処理する。
- 命令レベル並列性 — ハードウェアまたはコンパイラが、CPUパイプライン内で複数の命令を同時にスケジュールする。
- データ並列性 — ベクトル処理や配列処理のように、同じ演算を多数のデータ要素に独立して適用する。
- タスク並列性 — 異なるスレッドまたはプロセスが別個の計算を実行し、それらが並行して動作しうる。
ハードウェアも複数の規模で並列性を支える。単一システムには、マルチコアプロセッサなどの多数の処理ユニットや、複数の処理要素を備えるマルチソケット機が含まれうる。さらに大規模な設備では、独立したマシンをクラスター、ブレード、MPP、グリッドとして接続する。これらの選択は、システム全体の設計および対象ワークロードと相互に関係し、ソフトウェアの記述方法を左右する。
歴史と推進要因
並列技法は、科学技術分野の高性能計算で数十年にわたり利用されてきた。時代とともに、物理的・製造上の制約により、単一コアのクロック周波数を引き続き高めることが難しくなった。これはしばしば周波数スケーリングの限界と説明される。そのため、アーキテクトは実行ユニットを増やす方向へ移行した。この変化は現代のコンピュータアーキテクチャの中心的要素となっている。同時に、消費電力と熱的限界への懸念が、チップ設計および有効に利用できるコア数に影響を及ぼしている。
プログラミング、正しさ、性能
並列プログラムを書くには、並行性、通信、同期について考慮する必要がある。逐次コードと比べ、並列ソフトウェアは微妙な実行時エラーを起こしうるため、しばしば開発がより困難である。欠陥の類型には並行性に関連するバグがあり、特に二つのタスクが共有状態へ競合する形でアクセスする競合状態、およびタスクが資源を無期限に待ち続けるデッドロックが含まれる。効率的な並列コードでは、計算量と、データ移動およびタスク調整のコストとの均衡を取らなければならない。相互接続のレイテンシと帯域幅はいずれも重要である。
一般的なモデルと代表的な応用
プログラミングモデルは、共有メモリのスレッドやロックに基づく同期から、メッセージパッシング・インターフェース、データ並列APIまで幅広い。開発者は、並行性を構造化するために、パイプライン、マップリデュース、ワークスティーリングなどのパターンを用いる。同期とデータ交換は中心的な課題であり、多くのプログラムでは正しさとスケーラビリティを確保するため、慎重な通信と同期が必要となる。並列システムは、数値シミュレーション、気象・気候モデル、計算化学、ビッグデータ分析、機械学習の訓練で広く使われる。これらの分野では、大規模データセットや計算カーネルが同時処理の恩恵を受ける。
区別、制約、実践上の留意点
重要な区別として、共有メモリアーキテクチャと分散メモリアーキテクチャ、密結合システムと緩やかに接続されたクラスター、細粒度並列性と粗粒度並列性がある。スケーラビリティは、アルゴリズム上の依存関係に加え、同期、通信、共有資源をめぐる競合といったオーバーヘッドによって制約される。デバッグ、プロファイリング、決定論的リプレイのツールは複雑さの管理に役立ち、高水準の言語やライブラリは低水準の詳細を隠すことを目指す。並列方式を選択する際には、生の高速化、エネルギー使用量、コスト、プログラム容易性の間のトレードオフも考慮しなければならない。
関連資料:命令レベルの技法、データおよびタスクのモデル、ハードウェア構成、プログラミングの実践に関する入門資料は、並列システムを構築または利用する研究者と実務者の双方に実用的な指針を与える。命令レベルの技法、データ並列フレームワーク、タスク並列ランタイム、ならびにマルチコアとクラスターの導入に関する設計上の議論を参照。
関連項目
著者
AlegsaOnline.com 並列コンピューティング:概念、形態、プログラミング上の課題と用途 Leandro Alegsa
URL: https://ja.alegsaonline.com/art/74532
出典
- portal.acm.org : Highly Parallel Computing
- eecs.berkeley.edu : "The Landscape of Parallel Computing Research: A View from Berkeley"