PRAMシミュレータの構築
Download
Report
Transcript PRAMシミュレータの構築
PRAMシミュレータの構築
情報論理工学研究室
01-1-26-037 橋本 博之
あらまし
背景
PRAM(Parallel
Random Access Machine)
PRAMシミュレータ
PRAMシミュレータの実行例
結論
背景
問題を高速に解く
複雑な問題を解きたい
高性能コンピュータを手軽に使いたい
並列アルゴリズムが必要
並列計算モデル上で設計・解析が行われる
PRAM
parallel random access machine
共有メモリ
P1
P2
P3
・・・・
Pp
共有メモリとそれに接続されたp個のプロセッサから成る
PRAMアルゴリズムの実行
0
1
2
3
4
P1
P2
P3
5
演算命令
メモリアクセス命令
入出力命令
同期
P4
メモリセルに対して
1単位時間でデータの読み書きができる
演算は1単位時間で行なうことができる
PRAMの特徴
単純
同期や通信のコスト、データの局所性を無視
汎用
アーキテクチャに依存しない
アルゴリズムの設計・解析がし易い
しかし、PRAM自体の実現は困難である
目的
PRAMアルゴリズムの評価を容易にする
PRAMシミュレータの作成
PRAMアルゴリズムを記述できる言語を作成する
PRAM用並列言語を作成
PRAMシミュレータとは
PRAM用並列言語
並列アセンブラ
PRAMコンパイラ
VPSM(Virtual
Parallel Stack Machine)インタプリタ
以上の4要素から成る
PRAMシミュレータによる実行の流れ
PRAM用
並列言語プログラム
VPSMインタプリタ
PRAMコンパイラ
並列アセンブラ
PRAM用並列言語
C風手続き
型言語
+
Parallel命令
=
PRAM用
並列言語
PRAMコンパイラの構造
原始プログラム
目的プログラム
字句解析
コード生成
構文解析
制約検査
PRAM用並列言語の文法
parallel文
parallel( i, j, k ) 命令文
命令文
命令文
命令文
実行
実行
実行
実行
プロセッサ
プロセッサ
プロセッサ
プロセッサ
i
i+k
i+2k
・・・・・・・
・・・・・・・
命令文
j
parallel文の例
PRAM用並列言語の例
main{
parallel(0,10,1)
writeint($p);
}
並列アセンブラで表す
PUSHI
0
PUSHI 10
PUSHI
1
PARA
PUSHP
OUTPUT
SYNC
HALT
PRAMシミュレータの実行例
例: 2+3+5+7+1+8+5+4 プロセッサ4台
時間
35
時刻3
17
プロセッサ1
時刻2
18
プロセッサ2
プロセッサ3
5
12
9
時刻1
9
プロセッサ4
2
3
5
7
1
8
5
4
時刻0
理論値 O(n/p+logp)
和計算プログラムの実行時間
実行時間 t
100000
実行時間
理論値
10000
1000
100
1
10
100
プロセッサ数 p (個)
1000
結果
和計算プログラムについて正しい
解が出力された
実行時間は理論値とほぼ一致した
正しい動作をしている
結論
PRAM用並列言語の作成
PRAMシミュレータ(PRAMコンパイラ)の構築
機能1 PRAM用並列言語を並列アセンブラ
に変換できる
機能2 PRAM用並列言語のPRAM上での
実行時間を計測できる