GXP・Phoenixによる
大規模並列情報処理
東京大学
田浦研究室 & 米澤研究室
(発表者:金田憲二)
発表の流れ
我々のプロジェクトの概要
GXP
Phoenix
我々のプロジェクトの概要
背景
PCの価格低下
ネットワーク技術の進歩
グリッド環境がより一般的に
高速ネットワークで結合された複数のクラスタ
学校や会社にある数百から数千台の遊休PC
…
プロジェクトの目標
グリッド上での効率的な並列処理の実現
プロジェクトの目標
グリッド上での効率的な並列処理の実現
複数のLANにまたがる
数百から数千の計算機
計算機が頻繁に故障
計算機が動的に増減
計算機間の通信が制限
ファイアウォール、NAT
プロジェクトの目標
グリッド上での効率的な並列処理の実現
高性能
簡便
プロジェクトの目標
グリッド上での効率的な並列処理の実現
科学技術計算
並列トランザクション処理
P2Pシステム
…
設計・実装したシステム
GXP:遠隔ジョブ投入ツール
並列処理を簡便に記述・実行できる
計算機の日常的な管理・運用にも利用できる
Phoenix:並列プログラミングライブラリ
動的に増減する計算機を効率的に扱える
GXP
GXPとは
遠隔ジョブ投入ツール
並列トランザクション処理なども簡便に実行可能
request0
request1
request2
request3
…
実行したい処理のリスト
データベース
利用実績
自然言語処理
1000CPU日程度のタスクを
350CPUを利用して処理
神経系のモデリング&シミュレーション
プログラミングコンテスト
9つのLANにまたがる1000CPUを利用
GXPの提供する機能
並列コマンド実行
ネットワークパイプ
半自動インストール
並列コマンド実行
複数の計算機上でコマンドを並列に実行
> hostname
host0
host1
host2
ローカルマシン
host0
host1
host2
並列コマンド実行
通信制限下でもジョブ投入可能
NAT
インターネット
ローカルマシン
NAT
ネットワークパイプ
cmd1 {{ cmd2 }} cmd3
ローカルマシン
cmd1
cmd3
cmd2
cmd2
cmd2
ネットワークパイプの使用例
典型的な並列処理
問題をばらまく {{ 計算 }} 答えを集計
ファイル転送
cat X {{ cat > Y }}
半自動インストール
最初にログインした計算機のみに
GXPをインストールすれば良い
残りの計算機には自動的にインストールされる
煩雑なインストール・設定作業から
ユーザを解放
まとめ
GXP
並列コマンド実行
ネットワークパイプ
半自動インストール
並列処理から計算機管理まで
様々な用途に応用可能
Phoenix
Phoenixとは
メッセージパッシングライブラリ
動的に増減する計算機を効率的に扱える
通信制限下でも動作できる
Phoenixの利用例
学校や会社の遊休PCを利用した並列処理
LU分解、流体シミュレーション、…
P2Pシステムの記述
分散ファイル共有システム、…
既存のメッセージパッシング
ライブラリ
例)MPI
各マシンにノードIDを付与
ノードIDでメッセージの送信先を指定
x
send x to 2
ノードID
0
1
recv
2
3
計算機の増減の扱い
問題
今現在どの計算機が計算に参加しているの
かを、ユーザが把握し続ける必要がある
例)不在マシン宛にメッセージを送信しないようにす
る必要がある
解決策
特殊なプログラミングモデルを提供することに
よって、計算機の増減をユーザから隠蔽
Phoenixの提供する
プログラミングモデル
動的にノードIDの割り当てを変更可能
ノードIDの集合を各計算機に割り当て可能
ノードID
ノードID数 > 実マシン数でも構わない
0
1
2
3
プログラミング例 (1/3)
行列の要素とノードIDとを対応付ける
行列データとノードIDとを分割して割り当てる
行列
0
256
512
ノードID空間
768
1024
プログラミング例 (2/3)
行列の600番目の要素に
x を代入したい
ノードID600番宛に x を送信
0
768
256
256
512
512
768
1024
プログラミング例 (3/3)
0
ノードIDの割り当てを計算機の増減に応じて
動的に変更
768
256
256
512
512
768
996
1024
まとめ
Phoenix
動的な計算機の増減を扱うのに適した
メッセージパッシングライブラリ
発表全体のまとめ
大規模並列処理の実現を目指して
GXP
Phoenix
という二つのシステムを開発した
終
もし実務に応用可能でしたら、
是非よろしくお願いいたします
補足情報
プロジェクトメンバー
田浦 健次朗(助教授)
遠藤 敏夫(助手)
横山 大介(助手)
金田 憲二(D3)
鴨志田 良和(D1)
堀田 勇樹(M2)
斉藤 秀雄(M2)
小林 弘勝(M1)
高橋 慧(M1)
プロジェクトのWebページ
http://www.logos.ic.i.u-tokyo.ac.jp/phoenix/
からソフトウェアや論文を取得可能
GXPの実装
Sshのセッションの「木」を構築する
直接ログインできないホストにも、複数段のロ
グインで到達
Phoenixが提供するAPI
メッセージの送信・受信
ph_send(id, msg)
ph_recv()
ノードIDの割り当て・解放
ph_assume(ids)
ph_release(ids)
Phoenixの実装
ノードIDと計算機の対応を動的に計算
中央集権的な管理を必要とせずに
C.f.) ルーティング
Phoenixの性能評価
計算機
追加中
計算機が増減する環境下での
並列レイトレーシング
相対性能
(基準:1CPU時のスループット)
計算機
削除中
80
70
60
50
A
40
30
20
実測値
10
理想値
0
0
50
100
150
経過時間(秒)
200
250
背景
クラスタの目覚ましい普及
並列計算を専門としない一般の人も利用
非専門家でもクラスタを簡便に利用でき
る ようにすることが重要
目標
Single System Image (SSI)の実現
大域プロセス空間・ファイル空間
並列プログラミング環境
…
SSIを実現するための既存の手
段
分散OS
例)Mosix [A. Barak et al. ’98]
クラスタミドルウェア
例)Score [Y. Ishikawa et al. ’99]
既存システムが抱える問題
利便性の悪さ
インターフェースに習熟するのに手間がかかる
インストールに管理者権限を必要とする
問題解決へのアプローチ
仮想マシンモニタに関する技術を応用する
仮想マシンモニタ = 実マシンと同等の処理が
可能な仮想マシンをソフトウェアでエミュレー
ション
提案システム
~Virtual Multiprocessor ~
複数の分散した計算機上に
SMPを仮想的に構築する仮想マシンモニタ
N台のシングルプロセッサマシン
仮想化
Nプロセッサからなる仮想SMP
利点 (1/2)
共有メモリを仮定した既存のプログラムが
そのまま分散環境上で動く
OS
(タスクが粗粒度な)並列プログラム
Linuxがあたかも分散OSかのように動作
…
スクリプト言語でバッチジョブ投入
makeコマンドでワークフローの記述・実行
利点 (2/2)
仮想マシンなので
チェックポイント・リカバリーが可能
各ユーザが自由に環境をカスタマイズ可能
…
残りの発表の流れ
設計
実装
予備実験
関連研究・まとめと今後の課題
設計
システムの構成
複数のモニタプロセスからなる
基本的には、実プロセッサ一つにつき
モニタプロセスが一つ
モニタプロセス
プロセッサ
メモリ
モニタプロセス
プロセッサ
ディスク
実マシン
メモリ
ディスク
実マシン
構築される仮想SMP
プロセッサ
プロセッサ
仮想SMP
メモリ
モニタプロセス
プロセッサ
メモリ
ディスク
モニタプロセス
プロセッサ
ディスク
実マシン
メモリ
ディスク
実マシン
構築される仮想SMP
プロセッサ
プロセッサ
仮想SMP
メモリ
モニタプロセス
プロセッサ
メモリ
ディスク
モニタプロセス
プロセッサ
ディスク
実マシン
メモリ
ディスク
実マシン
構築される仮想SMP
プロセッサ
プロセッサ
仮想SMP
メモリ
モニタプロセス
プロセッサ
メモリ
ディスク
モニタプロセス
プロセッサ
ディスク
実マシン
メモリ
ディスク
実マシン
構築される仮想SMP
プロセッサ
プロセッサ
仮想SMP
メモリ
モニタプロセス
プロセッサ
メモリ
ディスク
モニタプロセス
プロセッサ
ディスク
実マシン
メモリ
ディスク
実マシン
対象とするハードウェア・OS
仮想マシン・実マシン共に
プロセッサはIA-32を対象
OSはLinuxを対象
※仮想化を効率良く実現するために、ゲスト
OSの一部を改変する
C.f.) LilyVM [H. Eiraku et al. ’03]
実装
ハードウェアの仮想化の仕組み
基本的にはLilyVM [H. Eiraku et al. ’03]と同様
ゲストOSをNative実行
VMプロセス
実行を捕捉
実行を再開
モニタプロセス
命令などの実行を
エミュレーション
ハードウェアの仮想化の例
…
lgdtl 0xa01002c2
…
シグナル発生
特権命令の実行
(GDTRレジスタ
への書き込み)
シグナル
を捕捉
VMプロセス
仮想マシンの
実行を再開
モニタプロセス
メモリ上に格納している仮想マシンの
GDTRレジスタの値を更新
仮想化を必要とするハードウェ
ア
プロセッサ
メモリ
特権命令、…
ページング機構、メモリ一貫性制御、…
I/Oデバイス
ハードディスク、ネットワークデバイス、…
メモリの一貫性制御とは
あるプロセスが行った書き込み結果を
リモートプロセスに反映させること
IA-32メモリモデルを満たすように
IA-32のメモリモデル
以下の制約を満たすように書き込みを反
映
Processor consistency
Write atomicity
同期命令を提供
一時的にメモリ一貫性を強める命令
Processor Consistency (1/2)
あるプロセッサが行った書き込みは,
同一プロセッサには,すぐに反映される
異なるプロセッサには,遅れて反映されうる
PU1
PU2
write X to p
=
X
=
read from p
read from p
=
?
read from p
X
Processor Consistency (2/2)
あるプロセッサが行った書き込みは,
同じ順序でリモートプロセッサに反映され
る PU1
PU2
PU3
write X to p
write Y to q
write Z to r
Write Atomicity
書き込みはリモートプロセッサにatomicに
反映される
PU1
write X to p
(アドレスpに対する)
読み書きは,この間に
発生しない
PU2
PU3
同期命令
一時的にメモリ一貫性を強める
例) mfence命令
書き込みがリモートプロセッサに反映されたことを
保障
PU1
write X to p
write Y to q
mfence
PU2
PU3
Processor Consistencyを保障する
一貫性制御アルゴリズム
mfence命令実行時に,書き込み結果を
他の全てのマシンに反映させる
PU1
Write X to p
PU2
Write Y to q
Write Z to r
mfence
p, q, rへの書き込み
結果を送信
書き込み結果を
反映
一貫性制御アルゴリズムの概要
(1/3)
1. 全てのページを書き込み禁止にする
PC1
Memory
Write X to p
Write Y to q
Write Z to r
mfence
PC2
Memory
…
一貫性制御アルゴリズムの概要
(2/3)
2. ページに対して書き込みがあると
そのページのコピー(= twin)を作成する
そのページへの書き込みを許可する
PC1
PC2
Twins
Memory
Memory
Write X to p
Write Y to q
Write Z to r
mfence
p
X
q
Y
r
Z
一貫性制御アルゴリズムの概要
(3/3)
3. mfence命令を実行する時に,
twinと現在のメモリを比較してdiffを作成する
diffをリモートマシンに送信する
PC1
PC2
Twins
Memory
Memory
Write X to p
Write Y to q
Write Z to r
mfence
p
X
q
Y
r
Z
予備実験
予備実験
以下を測定
シングルプロセッサにおける仮想化のオーバヘッド
デュアルプロセッサにおける並列プログラムの性能
ただし
バグも多く動作が不安定
メモリ一貫性制御も一部Naïveに実装
シングルプロセッサにおける
仮想化のオーバヘッド
getpid() を1000回呼び出すプログラムを実行
実行時間(単位:
秒)
仮想マシン 0.54
0.00098
実マシン
既存の最適化手法の適応が必須
例)“Operating System Support for Virtual Machines”
Samuel T. King, George W. Dunlap, Peter M. Chen
USENIX’03
デュアルプロセッサにおける
並列プログラムの性能
フィボナッチ数を計算するプログラムを2つ
並列に実行
実行時間(単位:秒)
仮想マシン
0.63
実マシン
0.00027
関連研究・
まとめと今後の課題
関連研究
分散環境上にマルチプロセッサマシンを
仮想的に構築する仮想マシンモニタ
vNUMA [M. Chapman’05]
Virtual IronTM [http://www.virtualiron.com]
メモリ一貫性制御が
sequential consistency
詳細は未公開
まとめ
Virtual Multiprocessor
分散環境上にSMPを仮想的に構築する
仮想マシンモニタ
Single System Imageを実現
今後の課題
性能向上
耐故障性
より柔軟な資源の仮想化
資源割り当ての動的変更
終
© Copyright 2026 ExpyDoc