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上での 実行時間を計測できる
© Copyright 2024 ExpyDoc