200 likes | 297 Views
情報処理系論. 第 3 回 並列計算機のアーキテクチャと 並列処理の実際. 今日の内容. 「並列処理してみなぁい?いいねぇ!」 並列計算機のアーキテクチャ 目的、分類 UMA 、 NUMA 、 NORMA 並列処理してみなぁい?いいねぇ! どんなときに? マルチプロセッサの話 PVM(Parallel Virtual Machine) のこと. 並列計算機. プロセッサ がいくつもあるコンピュータ それらを同時に使って処理するのが並列処理. (準備)プロセッサの話. コンピュータの頭脳、計算するところ
E N D
情報処理系論 第3回 並列計算機のアーキテクチャと並列処理の実際
今日の内容 「並列処理してみなぁい?いいねぇ!」 • 並列計算機のアーキテクチャ • 目的、分類 • UMA、NUMA、NORMA • 並列処理してみなぁい?いいねぇ! • どんなときに? • マルチプロセッサの話 • PVM(ParallelVirtualMachine)のこと
並列計算機 • プロセッサがいくつもあるコンピュータ • それらを同時に使って処理するのが並列処理
(準備)プロセッサの話 • コンピュータの頭脳、計算するところ • Intel Pentium, Sun ○○SPARC, DEC Alpha • クロックと呼ばれる周期で仕事をする • 構成要素 • 命令デコーダ、算術演算ユニット、バスインタフェースユニット、レジスタ、分岐予測テーブルなどなど
(準備)クロックの話 • コンピュータの中で過ぎていく時間の単位 • 人間:○○秒 ⇔ コンピュータ:○○クロック • ○.○○クロック(小数点)っていうのはなし。 • クロックは同期信号。 一定間隔 一定間隔 一定間隔 一定間隔 一定間隔 一定間隔 一定間隔 一定間隔 仕事 仕事 4クロックかかる仕事 クロックに同期してない
(準備)スケジューリング • OSは1つのCPUを使いまわしする。 • プロセスA, B, Cがあるとき • 時分割処理 • 同時に処理できるプロセスの数はCPUの数と同じ! 55クロック OSの仕事 OSの仕事 OSの仕事 プロセスAのための仕事 プロセスBのための仕事 プロセスCのための仕事 プロセスAのための仕事
並列処理って何ですか。 • 複数のプロセッサを使って、複数の処理を同時に行なうこと。 • 複数のプロセッサを持つコンピュータを並列コンピュータと呼ぶ。(マルチプロセッサコンピュータはメモリ共有型の並列コンピュータを指す) 27クロック OSの仕事 OSの仕事 プロセスAのための仕事 プロセスCのための仕事 他のプロセスのための仕事 プロセスAのための仕事 プロセスBのための仕事 他のプロセスのための仕事 OSの仕事 OSの仕事
並列コンピュータの分類 • プロセッサの数による分類 • 8個以下 :最近のPCでも実現できる • 64個以下 :一般的なサーバマシン • 128個以上 :超並列(Massively Parallel) • メモリ共有形式による分類(詳しくは後で) • UMA :Uniform Memory Access • NUMA :Non-Uniform Memory Access • Hybrid NUMA
並列コンピュータとプロセッサ数 Cray SV1 Origin2000
プロセッサを増やす目的 • 高速化 • 複数のプロセッサを同時に使うことにより、ジョブを高速に処理できる。 • 高信頼性 • 複数のプロセッサを持つことによって、幾つかが逝っちゃってもシステムは継続動作できる。 • 高効率化 • 複数のプロセッサが入出力デバイスを共有することにより、各デバイスの遊休時間を減らす。
メモリの共有形式 • UMA • 全CPUが一つのメモリを共有している。 • NUMA • クロスバーやスイッチで接続された各CPUが、お互いのもつ独自メモリを共有 • Hybrid UMA • 上二つの混合型 • NORMA • メッセージングにより各CPUがお互いのメモリを共有(物理的な共有メモリは存在しない。) 次のページに図があるなり。
CPU CPU CPU CPU CPU CPU CPU CPU CPU CPU UMA NUMA メモリ CPU バス クロスバー/スイッチ メモリ CPU CPU Hybrid NORMA CPU CPU CPU CPU メモリ メモリ CPU CPU CPU CPU LAN CPU CPU CPU 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、客⇒処理と考えてみよう。 SMP(対称) ASMP(非対称) なんでも窓口 なんでも窓口 預貯金窓口 公共料金窓口 列 列 列 窓口は1種類 客はどちらか空いた方の窓口へ。 窓口が目的別にわかれている 客の目的別に列を作る
複数台のコンピュータを使った並列処理 • NORMA • ccz01 ~ ccz04とか、zz000 ~ zz149(150台!) • ミドルウエアを使って複数のノードを管理 • PVM(Parallel Virtual Machine) • 何を並列にする? • 制御並列 :異なる処理を各プロセッサで行なう 例: なんだろう? • データ並列 :異なるデータで同じ処理を行なう]例: 並列データ検索、レイトレーシング
並列化と性能向上のカンケイ • プロセッサを増やしても性能は比例しない • 並列化できない部分がある • データ転送やノード間の同期が必要 • 共有している入出力デバイスの限界(UMAの時) 並列化効率 オーバーヘッド ノード数
並列処理してみなぁい?いいねぇ~! • まずは実際にやってみよー! • PVMを使う • 目標 「SFC中の端末を使って並列処理してみる。」 • 把握済み端末 • zz??? 150台 • ccz?? 4台 • otwo?? 50台 • ccsp-h?? 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とどんどん増やして、所要時間をグラフにしてみよう! • これでいい?おさむさん。