並列分散コンピューティング:プログラミングモデルとハードウェアモデル(2)
セクション2プログラミングモデルとハードウェアモデル
2.1並列モデルと構造
2.1.1システム層(重要ではない)
- 並列プログラム
- コンパイラ、動作環境
- オペレーティング・システム
- 微細構造(ハードウェア機器)
2.1.2 3つの並列プログラミングモデル(重要)
3つのモデルは、プログラマーに示されるプログラム通信の抽象的な構造が異なります
プログラミングモデルが異なると、プログラミング時のプログラマの考え方に影響します
共有アドレス空間(SASモデル)
- 各スレッドが通過シェア変数の読み取りと書き込みコミュニケーションをとること
- シェア変数は大きな掲示板のようなものです
- いくつかの例(SASの主な考え方を理解し、以下のコンピューターアーキテクチャを理解することをお勧めします)
- 不均一なメモリアクセス
メッセージパッシング
- 各スレッドは独自のプライベートアドレス空間で動作します
- スレッドはメッセージを送受信することで相互作用します
一般的に使用されるライブラリ:MPI
ハードウェアは、システム全体でクロスプログラム情報をロードして保存する必要はなく、情報を交換できる必要があるだけです。
- メッセージパッシングの抽象化は、ハードウェアが共有アドレススペースを実行するマシンに実装でき、SASは共有アドレススペースをサポートしていないマシンで実行できることに注意してください。
- プログラムモデルとマシンカテゴリの相関関係は曖昧ですが、プログラミングモデルとは何か、ハードウェア実装とは何かを覚えておいてください。
データ並列
- 歴史的なDPは、アレイ上で同じ操作を実行します(たとえば、クレイスーパーコンピューターはベクトルプロセッサです)。
- たとえば、MATLAB演算C = A + Bで、A、B、Cはすべてベクトルです。
- 現在、SPMDのプログラミング形式を採用しています(具体的には次のとおり)。
- map(function、collection)
- 関数は各要素を個別に処理し、関数は複雑な論理シーケンスである可能性があります(それにより、統合された関数を使用して異なる要素を区別および処理します)
- マップの最後で、同期は暗黙的です
- 関数がコレクションのすべての要素に作用すると、マップは
- map(function、collection)
プログラミングモデルがプログラムに課す構造
SAS:構造の必須要件はほとんどありません
MP:高度に構造化されたコミュニケーション
DP:非常に厳格なコンピューティング構造
- DPプログラムは、同じセットの異なるデータ要素に対して同じ機能を実行します
現代の実践(混合プログラミングモデル)
- より一般的な例
- 同じノードの複数の内部コア間で共有アドレススペースを使用する
- ノードレベルでマッサージパッシングを使用する
2.1.3 3つの機械構造(重要ではない)
マシン構造は通常、ハードウェアデバイスの機能を反映しています
機械構造は
、ハードウェアからソフトウェアに提示される抽象的な形式です(よくわかりません。元の文は「ハードウェアから低レベルのソフトウェアに提示される抽象化」です)。
次のものはもっとICSですが、とにかくわかりません
フリン分類
- XIYDはX命令Yデータを意味し、XとYは単一または複数です。
- SISD MISD SIMD MIMDには4つのタイプがあります。
SISD
例:シングルコアコンピューター1つのデータプール、1つの命令プール、線形処理タスク
SIMD
MISD
MIMD
-
MIMDのさらなる内訳
- 共有メモリ構造
- 分散メモリ構造
- ハイブリッド構造
- グリッド構造
- ローカルエリアネットワークやワイドエリアネットワークで接続された分散異種リソース