第2章 並列コンピューティング概観

  • 並列システムのアーキテクチャについて述べ、これらの上でのプログラミングの技法を概観する。

2.2 ハードウェア

2.1.1 Flynnの分類
  • 命令ストリームの数とデータストリームの数で分類
2.1.2 古典的フォンノイマンマシン
2.1.3 パイプラインとベクトルアーキテクチャ
  • 最近、最も広く使われたフォンノイマンモデルの拡張はパイプライン処理である
  • ベクトル処理(ベクトル計算機)の利点:命令のフェッチ、デコードが一回ですむ
  • また、複数のメモリバンクを使うことで、メインメモリへのアクセスを高速に行える
  • 欠点としては、不規則な構造を持ったり沢山の分岐があるプログラムには不向き
  • また、いかにしてスケールさせるか、という問題。

2.2 ソフトウェアの問題

2.2.1 共有メモリシステムのプログラミング
  • 通常、共有メモリシステム=複数のCPUが全てのメモリロケーションにアクセス可能
  • 物理的に分散メモリであっても、仮想的な全体メモリ空間を(何らかの手法で)作ることが出来ればそれは共有メモリシステムと言える
  • 共有メモリプログラムでは、(メモリを共有するので)プロセス間の協調が必要である。それは、3つの基本事項がある。
    • 全てのプロセスからアクセス可能な変数を指定する
    • 共有リソースへのプロセスからの不適切なアクセスを防ぐ
    • プロセス間の同期を取る方法
2.2.2 メッセージパッシング
2.2.5 データマッピング