並列分散コンピューティングの概要(2)プログラミングモデルとハードウェアモデル

セクション2プログラミングモデルとハードウェアモデル

2.1並列モデルと構造

2.1.1システム層(重要ではない)

  1. 並列プログラム
  2. コンパイラ、動作環境
  3. オペレーティング・システム
  4. 微細構造(ハードウェア機器)

2.1.2 3つの並列プログラミングモデル(重要)

3つのモデルは、プログラマーに示されるプログラム通信の抽象的な構造が異なります

プログラミングモデルが異なると、プログラミング時のプログラマの考え方に影響します

共有アドレス空間(SASモデル)

  • 各スレッドが通過シェア変数の読み取りと書き込みコミュニケーションをとること
  • シェア変数は大きな掲示板のようなものです

ここに画像の説明を挿入

  • いくつかの例(SASの主な考え方を理解し、以下のコンピューターアーキテクチャを理解することをお勧めします)

ここに画像の説明を挿入

  • 不均一なメモリアクセス

ここに画像の説明を挿入

メッセージパッシング

  • 各スレッドは独自のプライベートアドレス空間で動作します
  • スレッドはメッセージを送受信することで相互作用します

ここに画像の説明を挿入

一般的に使用されるライブラリ:MPI

ハードウェアは、システム全体でクロスプログラム情報をロードして保存する必要はなく、情報を交換できる必要があるだけです。

  • メッセージパッシングの抽象化は、ハードウェアが共有アドレススペースを実行するマシンに実装でき、SASは共有アドレススペースをサポートしていないマシンで実行できることに注意してください。
    • プログラムモデルとマシンカテゴリの相関関係は曖昧ですが、プログラミングモデルとは何か、ハードウェア実装とは何かを覚えておいてください。

データ並列

  • 歴史的なDPは、アレイ上で同じ操作を実行します(たとえば、クレイスーパーコンピューターはベクトルプロセッサです)。
    • たとえば、MATLAB演算C = A + Bで、A、B、Cはすべてベクトルです。
  • 現在、SPMDのプログラミング形式を採用しています(具体的には次のとおり)。
    • 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のさらなる内訳

    • 共有メモリ構造

ここに画像の説明を挿入

  • 分散メモリ構造

23

  • ハイブリッド構造

1

  • グリッド構造
    • ローカルエリアネットワークやワイドエリアネットワークで接続された分散異種リソース

おすすめ

転載: blog.csdn.net/Kaiser_syndrom/article/details/105185213