情報処理系論

情報処理系論
第3回
並列計算機のアーキテクチャと
並列処理の実際
今日の内容
「並列処理してみなぁい?いいねぇ!」
• 並列計算機のアーキテクチャ
– 目的、分類
– UMA、NUMA、NORMA
• 並列処理してみなぁい?いいねぇ!
– どんなときに?
– マルチプロセッサの話
• PVM(Parallel Virtual Machine)のこと
並列計算機
• プロセッサがいくつもあるコンピュータ
• それらを同時に使って処理するのが並列
処理
Sun Workstation
PC-AT互換機
IBM SP2
スーパーコンピュータ
みんなのラップトップ
工業用コンピュータ
Windows CE機
Zaurus
Dreamcast
Nintendo64
(準備)プロセッサの話
• コンピュータの頭脳、計算するところ
– Intel Pentium, Sun ○○SPARC, DEC Alpha
• クロックと呼ばれる周期で仕事をする
• 構成要素
– 命令デコーダ、算術演算ユニット、バスインタ
フェースユニット、レジスタ、分岐予測テーブル
などなど
(準備)クロックの話
•
•
•
•
コンピュータの中で過ぎていく時間の単位
人間:○○秒 ⇔ コンピュータ:○○クロック
○.○○クロック(小数点)っていうのはなし。
クロックは同期信号。
一定間隔一定間隔 一定間隔 一定間隔一定間隔 一定間隔一定間隔 一定間隔
仕事
4クロックかかる仕事
仕事
クロックに同期してない
(準備)スケジューリング
• OSは1つのCPUを使いまわしする。
– プロセスA, B, Cがあるとき
– 時分割処理
• 同時に処理できるプロセスの数はCPUの
数と同じ!
55クロック
OSの仕事
プロセスA
のための仕事
OSの仕事
プロセスB
のための仕事
OSの仕事
プロセスC
のための仕事
プロセスA
のための仕事
並列処理って何ですか。
• 複数のプロセッサを使って、複数の処理を同時
に行なうこと。
• 複数のプロセッサを持つコンピュータを並列コン
ピュータと呼ぶ。(マルチプロセッサコンピュータ
はメモリ共有型の並列コンピュータを指す)
27クロック
OSの仕事
プロセスA
のための仕事
OSの仕事
プロセスC
のための仕事
プロセスB
のための仕事
OSの仕事
プロセスA
のための仕事
他のプロセス
のための仕事
他のプロセス
のための仕事
OSの仕事
並列コンピュータの分類
• プロセッサの数による分類
– 8個以下
:最近のPCでも実現できる
– 64個以下 :一般的なサーバマシン
– 128個以上 :超並列(Massively Parallel)
• メモリ共有形式による分類(詳しくは後で)
– UMA
:Uniform Memory Access
– NUMA
:Non-Uniform Memory Access
– Hybrid NUMA
並列コンピュータとプロセッサ数
形式
CPU数 ノード数 ピーク性能
Cray SV1-1
UMA
8
1 32GFLOPS
Cray SV1-32
Hybrid UMA
192
32 1TFLOPS
Origin2000
NUMA
1-128
1-64 25GFLOPS
Pentium III のPC UMA
2
1 8GFLOPS
Origin2000
Cray SV1
プロセッサを増やす目的
• 高速化
– 複数のプロセッサを同時に使うことにより、ジョブ
を高速に処理できる。
• 高信頼性
– 複数のプロセッサを持つことによって、幾つかが
逝っちゃってもシステムは継続動作できる。
• 高効率化
– 複数のプロセッサが入出力デバイスを共有するこ
とにより、各デバイスの遊休時間を減らす。
メモリの共有形式
• UMA
– 全CPUが一つのメモリを共有している。
• NUMA
– クロスバーやスイッチで接続された各CPUが、お互い
のもつ独自メモリを共有
• Hybrid UMA
– 上二つの混合型
• NORMA
– メッセージングにより各CPUがお互いのメモリを共有
(物理的な共有メモリは存在しない。)
次のページに図があるなり。
UMA
NUMA
メモリ
CPU
CPU
CPU
バス
CPU
CPU
メモリ
クロスバー/
スイッチ
CPU
CPU
CPU
Hybrid
CPU
NORMA
CPU
CPU
メモリ
CPU
CPU
メモリ
CPU
CPU
CPU
CPU
CPU
CPU
CPU
CPU
メモリ
CPU
CPU
CPU
LAN
CPU
メモリ
CPU
CPU
CPU
CPU
1台のコンピュータを使った
並列処理
• UMA
– 例えばデュアルPentiumIIIマシンとか
• OSが一つのバスと複数のプロセッサを管理
– Windows NT, FreeBSD, Linuix, etc.
• プロセッサの使い方による分類
– SMP :Symmetric Multi Processor
– ASMP :Asymmetric Multi Processor
SMPとASMP
• SMPとASMPの違い(銀行窓口の例)
• 窓口⇒CPU、客⇒処理と考えてみよう。
ASMP(非対称)
預貯金窓口 公共料金窓口
列
列
窓口が目的別にわかれている
客の目的別に列を作る
SMP(対称)
なんでも窓口 なんでも窓口
列
窓口は1種類
客はどちらか空いた方の窓口へ。
複数台のコンピュータを使った
並列処理
• NORMA
– ccz01 ~ ccz04とか、zz000 ~ zz149(150台!)
• ミドルウエアを使って複数のノードを管理
– PVM(Parallel Virtual Machine)
• 何を並列にする?
– 制御並列
例:
– データ並列
例:
:異なる処理を各プロセッサで行なう
なんだろう?
:異なるデータで同じ処理を行なう]
並列データ検索、レイトレーシング
並列化と性能向上のカンケイ
• プロセッサを増やしても性能は比例しない
– 並列化できない部分がある
– データ転送やノード間の同期が必要
– 共有している入出力デバイスの限界(UMAの時)
並列化効率
オーバーヘッド
ノード数
並列処理してみなぁい?
いいねぇ~!
• まずは実際にやってみよー!
– PVMを使う
– 目標
「SFC中の端末を使って並列処理してみる。」
• 把握済み端末
–
–
–
–
zz???
ccz??
otwo??
ccsp-h??
150台
4台
50台
32ノード
PVMの使い方(超概要)
• ccz00~ccz03を使って並列処理するとき
– ログインしているホストで、対象ホストリストを記
述したファイルを与えてPVMデーモンを起動
– 処理したいプログラムを直接起動するか、PVM
コンソールを起動
– xpvmなどで各ノードの状態を管理
ccz00
ccz01
ログイン中
ccz02
ccz03
PVM上でプログラムを動かす
• 環境変数の設定
詳細は配布資料でね!
– PVM_ROOT ⇒ PVMパッケージのパス
– PVM_ARCH ⇒ ホストのアーキテクチャ
(SUN4SOL2とか)
• PVMデーモンの起動
– $PVM_ROOT/bin/pvmd [hosts_file]
– hosts_fileには、ログインホスト以外でデーモン
を起動したいホスト名を並べておく。
• プログラムの起動
– PVMライブラリを使って記述されたプログラム
を直接実行する。
課題
• 並列処理させると効果的なプログラムを考
えてみよう!
• 円周率を計算するプログラムを実行して所
要時間を計測してみよう!
– pai_master 4 100000 ← 4:プロセス数
– プロセス数を10、20、30、40、50~100とどんど
ん増やして、所要時間をグラフにしてみよう!
– これでいい?おさむさん。