情報処理系論 第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とどんど ん増やして、所要時間をグラフにしてみよう! – これでいい?おさむさん。
© Copyright 2024 ExpyDoc