• 検索結果がありません。

セルオートマトン・モデル記述言語DORA及び並列化コンパイラ: 沖縄地域学リポジトリ

N/A
N/A
Protected

Academic year: 2021

シェア "セルオートマトン・モデル記述言語DORA及び並列化コンパイラ: 沖縄地域学リポジトリ"

Copied!
14
0
0

読み込み中.... (全文を見る)

全文

(1)

Title セルオートマトン・モデル記述言語DORA及び並列化コンパイラ

Author(s) 赤嶺, 有平; 遠藤, 聡志; 山田, 孝治

Citation 沖縄大学マルチメディア教育研究センター紀要 = TheBulletin of Multimedia Education and Research Center, University of Okinawa(5): 1-13

Issue Date 2005-03-31

URL http://hdl.handle.net/20.500.12001/6401

(2)

セルオートマトン・モデル記述言語DORA及び

並列化コンパイラ

赤嶺有平↑遠藤聡志↑山田孝治↑

↑琉球大学工学部

あらまし本論文では,筆者らが開発したセルオートマトン・シミュレータ用並列化コンパイラの仕様及びその性 能評価について述べる.セルオートマトン(○A)法は,局所的な相互作用を定義することで複雑現象を不規則性も含 めて再現することができるため,流体の乱流,交通渋滞,自然災害など従来の微分方程式を基礎とするモデルでは解 析の難しかった現象も解明できるとされている.CA法は,本質的に高いデータ並列性をもっており,SIMD(Single lnstructionstream,MultipleDatastream)による並列処理に適している.一方,メディア系処理の高速化に対応す るため拡張SIMD命令を搭載したプロセッサが増加しているがj利用にはデータ並列型言語を利用するかアセンブリ 言語で直接記述することが多い.多くの現象に対しCA法を適用するためには,ユーザに並列化やプログラミングの 知識を要求しない環境が望まれる.本研究では,拡張SIMD命令を用いて高速なCAシミュレータを生成するコンパ イラの開発を行った.本コンパイラを用いることで,ユーザは並列化を意識することなく,高速なCAシミュレーショ ンシステムを利用することが可能となる.また,本コンパイラを用いてOAシミュレータを作成しC言語や他のCA シミュレータ生成システムを用いて作成したものと比較実験を行ったところ,本コンパイラの出力するシミュレータ が高速であることが示された

TheDORALanguagefbrModelingCellularAutolnataandthe

ParallelizingCompiler

YuheiAKAMINE↑,SatoshiENDOt,andKojiYAMADA↑ lFacultyofEngineering,UniversityoftheRyukyus AbstractThispaperdescribesthespecificationsoftheparallelizingcompilerwehavedevelopedfbrsimu-latingcellularautomataandtheperfbrmanceevaluationtest、Acellularautomaton(CA)ismethodtosimulate complexphenomenamcludingitsirregularitywithadefinitionofsimplelocalinteractions、CAisideallysuited fbrparallelprocessing,andhavebeencharacterizedaseasytoparallelizeusingextendedSIMDinstruction、 SIMDmeans“singleinstructionstream,multipleinstructionstream.,,Ononehand,extendedSIMDinstruc-tionscanbeusednowbymanyprocessors・However,weoftenuseadataparalleltypelanguagefbrusing SIMDinstructions,orprograminanassemblylanguagedirectlybThereisdemandfbrtheenvironmentwhere theknowledgeofparallelizingorprogrammingisnotrequiredofauser・Wehavedevelopedthecompilerthat generateshighspeedCAsimulatorusingextendedSIMDinstructionsinthisstudy・Usingthiscompiler,the usercanuseahigh-speedCAsimulationsystemwithoutconsiderationofparallelization.、Theresultofthe perfOrmanceevaluationtestshowsthattheCAsimulatorgeneratedbyourcompilerisfasterthanthesimulators madebytheothermethod. -1-

(3)

Lはじめに セルオートマトン(CA)法はプ局所的な相互作用(近傍則と呼ばれる)を定義する

ことで複雑現象を不規則性も含めて表現できるため,流体の乱流,交通渋滞,自然災

害など従来の微分方程式を基礎とするモデルでは解析の難しかった現象も解明できる

とされていろ['].例えば,水の流れは,ナピエ・ストークス方程式などの微分方程式

で表すことができるが,川の流れのように幅が変化したり様々な障害物によって複雑

に流れが変化するような現象を単純な数式で表すことは困難である.それに対してOA

法では,流体粒子間で質量と運動量を保存する衝突を繰り返させることにより,ナピ

エ・ストークス方程式を解いた場合と同等な結果を得ることができる[2L

CA法は,本質的に高いデータ並列性をもっており,単一の演算命令で複数のデー

タを並列処理するSIMD(SingleInstructionstream,MultipleDatastream)[3]による並列

化に適している.そのためSIMDアーキテクチャにより構成されたOA専用計算機[4]

やcellangと呼ばれる言語によって記述されたCA遷移規則をもとにソフトウエア的に

SIMD並列化したシミュレータを生成するツールが開発されている[51

-方,メディア系処理の高速化に対応するため拡張SIMD命令に対応したプロセッ

サが増加しており,多くの対応アプリケーションが開発されている.拡張SIMD命令

は,機械語命令であるため利用するには拡張SIMD命令を利用した最適化を行うコン

パイラを用いるかアセンブリ言語を直接記述することが多い.拡張SIMD命令は,命

令セットが非対称であるなどの制約が多く性能を引き出すには高度な知識が必要であ

る.特にCAシミュレーションを並列化する際には,データのアラインメントの問題や

データに依存する分岐の問題などがあり効率的なコードを記述することは容易ではな

い.SWARC[6]や1DC[7]と呼ばれるSIMD命令を生成する拡張Cコンパイラが開発さ

れているが,SIMDアーキテクチャを意識したコードを記述する必要があるためユー

ザに並列化の知識が要求されろ.多くの現象に対しCA法を適用するためには,ユー

ザに並列化やプログラミングの知識を要求しない環境が望まれる.

本研究の目的は,ユーザが並列化を意識することなく自動的に拡張SIMD命令を用

いて高速な○Aシミュレータを生成するシステムの構築である.筆者らはこれまでに,

CA近傍則の設計やシミュレーションを効率的に行うシステムの開発を行ってきた[8]・

開発システムは,対話‘性を重視したインタプリタ型シミュレータと高速'性を重視した

コンパイラ型シミュレータを状況に応じて選択可能とすることで,近傍則の設計効率 と○Aシミュレーションの実行効率を両立することを目標としている.今回開発した

コンパイラ(DORAC)は,同システムの一部として組み込むことを想定しているため,

近傍則記述言語として,同システムで採用しているDORA言語を用いる.また,これ

までに筆者らが提案した,OAシミュレーションをMMX命令セット(MMX)を用いて

高速化する手法を一般化し,より並列度の高いSSE2(StreamingSIMDExtension2)[9]

命令セットを用いたコードを生成するコンパイラを作成した本論文では,2章で対

象とするOA法とその近傍則を定義する記述言語の仕様について述べ,3章でDORAC

の構成および最適化について説明する.4章で性能評価実験の結果を示し,5章で他の

並列化システムとの関連について考察を行う〆 -2-

(4)

型 表1DORA言語のオブジェクトの種類と型

2.CA法と近傍則記述言語DORA

2.1対象とするCAモデル DORA言語が対象とするOAモデルは,以下のように定義されろ. .n次元空間に規則的に配置された格子を考える

、時刻t=0,1,2,…において定義される各格子点〆(セルと呼ばれる)の整数値

集合(状態と呼ばれる)を⑨(穴t)={の,(穴t),の2(穴t),…,①m(穴t)}とする

・時刻t+1の状態⑪(穴t+1)は,近傍則R={R1,R2,…,Rm}によって以下のよ

うに決定される ①jにt+1)=Ej(⑪(穴t),⑪(〆+5,,t),

⑪「+52,t),…,⑪(〆+Jq,t))(1)

〆+品は,セルデの近傍セルを表す.

22言語仕様

DORA言語は,○Aの近傍則を簡潔に記述することを目的として設計されている.言

語仕様については,c言語を参考に構文・演算子を設計し,理解しやすいよう考慮し

た.また,記述においてユーザはデータ並列性について考慮する必要はない.

DORA言語は,1つのソースファイルに1つの近傍則関数(前節,式l)を定義する.

シミュレータは,全てのセルについてソースコードに記述されたプログラムを実行す るように実装される.処理するセルの)|頂序は,実装により自由である.ソースコード

は,基本的に,時刻tにおける着目セル及びその近傍セルの状態を記'億すろ変数(状

態変数)の値を元に時刻t+1における対象セルの状態変数の値を決定するように記述

する.

DORA言語で利用できる演算子を図1に示す.優先度はC言語と同じである.角カッ

コ([])はセル指定子と呼び)近傍セルの状態や近傍セルそのものを参照するのに用

いる.参照する近傍セルの位置は,[M]のように指定する.ただし,座標Mは定数

でなければならない.

DORA言語では,英数字で表される識別子つきオブジェクトとして,5種類のオブ

ジェクトを扱う.オブジェクトの型は,宣言子を用いた宣言時および他のオブジェク

トの代入時に決定する.DORA言語のオブジェクトの種類を以下に示す.

未宣言の識別子つきオブジェクトに対する代入式において,右辺値が整数型の場合,

左辺のオブジェクトは一時変数となる.右辺値がセル型の場合,すなわち右辺値がセ

-3- オブジェクトの種類 型 定数 〆 パラメトリック定数 一時変数 状態変数 セルエイリアス 整数型 整数型 整数型 整数型 セル型

(5)

ル指定子およびセルエイリアスの時は,左辺オブジェクトはセルエイリアスとなる. constキーワードを用いて宣言を行うと「定数」となり初期化以外の代入は禁止さ れる.para,、キーワードは,ユーザがシミュレーション時にGUI等によって動的に調 整可能なパラメトリック定数を宣言する.OAモデルのパラメータ調整に利用される. 一時変数は,値が代入されてからコードの終端までの期間,整数値が保持・変更でき る.一方,状態変数は,全てのセルに対して記`億域が割り当てられ,シミュレーショ ンの終了までの期間,整数値を保持・変更できる.これは,CAモデルにおける状態

を表現することを想定した設計である.状態変数に対して代入することで,対象セル

の時刻t+1における状態変数sの値が決定する. セルエイリアスは,セルを表現するオブジェクトである.セル指定子で指定された セルヘのエイワアスを保持する.例えば, eastceU=[1,0兆

では,eastcellは,2次元空間において着目セルを中心に座標(1,0)の位置にあるセ

ルヘのエイリアスとなる. 状態の参照は,セル型オブジェクト(セル指定子およびセルエイワアス)と状態変 数の組み合わせで記述する.例えば, states;//sを状態変数として宣言 easts=[1,0].s;

では,座標(1,0)のセルの時刻tにおける状態変数sの値が一時変数eastsに代入され

る.ここで,“state,,キーワードは,状態変数を宣言するキーワードである.状態変数 は,整数型なので,eastsは一時変数となる.同様にセルエイリアスを用いても記述

できる.例えば,以下の通り.states;eastcell=[1,0];easts=eastcelLsiセル型オブジェ

クトを整数型オブジェクトヘ代入すると,セル型オブジェクトが状態変数に暗黙に変

換される.変換される状態変数は,先頭に宣言されたものである.例えば,

statesl; states2; c=[0,1];//cは位置[0,1]のセルエイリアス v=O;//vは一時変数 v=c;//d=c・slと同じ s2=[1,0];//s2=[1,0Jslと同じ となる. 全セルにおいて有効なグローバル変数は,書き込みの競合が発生するため定義して いない.例外的に,シミュレーション開始時をOとする時刻tの値をtimeキーワード を用いて全セルから参照できる.

本システムのOAシミュレータは,可視化する手法の制約から,3次元以下のモデル

のみ対応しているが,DORA言語の言語仕様としては,任意の次元のモデルの記述を 許容していろ. DORA言語の予約語を図2に示す.dimensionは空間次元を指定し,when,otherwise

は条件付きの代入文を指定するためのキーワードである.他に組み込み変数として,

-4-

(6)

[]+ */%& &&|’ 図1DORA言語の演算子 ifelse for conststatewhen dimensionparam otherwise 図2DORA言語の予約語 ‐→whi1e(e”)stmt -→ir(ezpr)stmt -→if(empr)stmtelsestmt →Uarjable=ezpr; -→{stmtstmt…} ttttt mmmmm ttttt s8s8s J t n q t S

m〃〃〃〃

仁zZzz meeee m+|*ノ 8 ,〃〃〃〃 、Zzzz Ⅲeeee →→→→→ 777町〃 叩叩叩、m eeeee 図3DORA言語の文法規則の一部(演算子 の結合優先度はC言語に準ずる) 擬似乱数を発生するrand変数,シミュレーション開始時からの時間ステップを返す time変数がある.DORA言語の文法規則の一部を図3に示す. 時亥リオ+1における状態は,処理時点で未定であるので代入のみが許され,時刻tに おける状態は,処理時点においては過去の値であるので参照のみが許される.また, 時刻tおよびt+1における近傍の状態を変更するようなコードは記述できない.これ により,OA定義に違反しないことと,拡張SIMD命令で並列化可能であることが保障 される.DORA言語によるライフゲームのCA遷移規則の記述を図4に示す. 時刻t=oにおける各セルの状態は,初期状態ファイルに記述ざれシミュレーション 時に読み込まれる.

3.コンパイラの仕様

DORACは,DORA言語によるOAモデルの仕様記述を元に拡張SIMD命令を用いて 並列化したOAシミュレータを生成する.本章では,拡張SIMD命令の概要とDORAC の行う操作及び最適化について述べる.

DORACは,構文解析器,if変換器,最適化器,コード生成器で構成されている(図

5).構文解析器では,構文解析を行い構文木を生成する.本研究では,構文解析器の

生成にyacc[10]を用いた‘構文解析器は,インタプリタ版シミュレータと共通であり,

-5-

(7)

//sを状態変数として宣言 states; //近傍の8つの状態を合計する 、=[-1,-1]+[0,-1]+[1,-1]+[-1,0] +[1,0]+[-1,1]+[0,1]+[1,1]; //sum=3もしくはsum=2且つ着目セルの状態が1の時,次の状態は1,それ以外は0 s=1:when(n-3) [0,0]:when(n-2) 0:otherwise; } 図4DORA言語によるライフゲームのCA 遷移規則の記述 、 CA仕儀定3FのOノ卸

篭|腰

図6拡張SIMD命令のパツクド・データ演 算の例 コート生成■ 図5DORACのパス構成

インタプリタは,構文木を直接解釈し実行する[8]・

SIMD命令による並列化の際は,データに依存した分岐を直接コード化できないこ

とが問題となる.そのため,if変換器で条件分岐を比較演算と論理演算からなる式に

if変換[11]する.比較演算とは,比較結果に応じたビットマスクを生成する演算であ

る.最適化器は,変換によって生じた冗長部分を検出しより最適な式に変換する.変

換後の構文木は,すべてSIMD命令によりコード化可能である.コード生成器は,構

文木を基にマイクロソフト社製アセンブラ(MASM)互換のアセンブリコードを出力

する.最終的にユーザインターフェースを実装したライブラリとリンクざれexeファ イルが出力される. 31拡張SIMD命令

拡張SIMD命令は,マルチメディアの処理を高速化するために導入された技術で,1

つの命令が複数のデータを並列に処理する機構を用いることで演算を並列化する.拡

張SIMD命令は,並列度の小さいベクトル演算命令と考えることもでき,ベクトル演

算命令と比較すると実行コストが小さい[12]・拡張SIMD命令では,ピット幅の大きな

1つのレジスタ(以下パックF・データレジスタと記す)に複数のピット幅の小さい

データを並べてロードし,それぞれの小データ対して同じ演算を独立に実行すること

でSIMD演算を実現しており,そのような演算をパツクド・デーダ演算と呼ぶ(図6).

したがって,並列実行するデータ群は,パックド・データレジスタに並べて配置して

おく必要がある.本論文では,配置された小データをサブオペランドと呼ぶ.

-6-

(8)

(蕊Ni霧蕊蕊霧jl1露蕊馨鱸鮒鱸1

ijil1lillilliiilliilil霧illlilllll

鍼?/N1i1i鑿、! 鰯17鰯)1J/蝋([)鰯L■鰯、。②

「||Ⅲ|「llliW1

図770=8の抽象SIMDマシンとローカル メモリ 、口熱1コ蕊爪丁騨LL仔鰯、 図8CA空間の分割 領域) dSWI鰯鍬鍵 (グレー部はシャドウ 一般に,プロセッサはそのパックド・データレジスタのデータ幅がnバイトの時, パックド・データレジスタとメモリ間のnバイト境界をまたぐアクセスは,大きなペ ナルティ(プロセッサ・ストール)や例外の発生,期待しないメモリアクセスなどを

伴う[9]ため,メモリアクセスの際は整序(アラインメント)を行う.これらの仕様を

図7のような抽象SIMDマシンとして考えると,メモリ空間をn個(データ幅が8-bit

の時)に分割し,それぞれを各プロセッサエレメント(PE)のローカルメモリとみなす

ことが出来る.メモリアドレスは,全てのPEに同時に指定されアクセスも同時に起 こる.パックド・データ演算は,PEのローカル演算であり,パックF・データに対す るシフト演算は,PE間の通信である.PEのリモートメモリヘのアクセスには,余分 なコストがかかる.従って,演算に必要なデータをローカルメモリに配置することが 処理を効率化する. DORACは,OA空間を部分空間に分割し各PEのローカルメモリに配置する.OAに

おいては,近傍セルの状態を参照して次の状態を決定するが.サイクリック分割['3]

では,隣接するセルの状態が異なるPEのローカルメモワに配置されるためPE間通信 が多く必要となる.そのためDORACでは,図8のように○A空間をx軸方向にブロッ ク分割し各ローカルメモリに配置する.また,各部分空間のエッジにシャドウ領域を 用意し隣接エッジの状態をコピーする.DORA言語では,近傍の範囲は静的に決定で きるため必要なシャドウ幅もコンパイラが決定できる.本システムにおいてCA空間 はトーラス空間として扱われるため,CA空間全体のエッジの状態は,反対側のシャド ウ領域にコピーされる.分割した各部分空間のセル状態は,それぞれのPEのローカ ルメモリに分散して配置する.このとき,各ローカルメモリの状態の並びを同じにす る.各PEのメモリアクセス時のアドレスは(SIMDマシンなので)同一となるため, ある方向の隣接するセルの状態のアドレスは,全てのローカルメモリにおいて,同じ 方向の隣接するセルの状態を指し示すことになる.したがって,あるセルに着目して 近傍の状態の合計を算出する処理を行うと,ほかの部分空間上の状態の合計も同時に

算出される(図9).実際のメモリ上の配置は図10のようになる.

M演算のSIMD並列化 コード生成器は,各部分空間上のセルの状態遷移処理を,それぞれのPEに割り当て -7-

(9)

分■した拍子室、 釣助勘SbSb勘Sb・帥 〆---ノー ■■■■■■■■■■■■■■■■■■■■ ■■■■■■■■■■■=■■■■■■■■■■■■ ■■■■■■■■■■■■■■■■ [ⅡFFF][】nF][Irln】]】【H1uDfuI1L【】FIE] 、pE「 mJr]h」」、uJ□rI[,h」】」、】r]「渤【][〕b」【

〃-=胆■■■

■■ --ヨ■■■■ 111 ++++++++ E2EE向1百1可豆1三1苞1 1111:iii $882!;!; 図9近傍状態の合計算出の並列化 メモリに■■された状■伍 図10状態のメモリ上の配置

るようにパックド・データ演算命令を生成する.DORA言語においては,近傍セルの位

置はコンパイル時に静的に決定する.また,IA32プロセッサは,オペランドにメモリ

アドレスを指定できるためメモリからの値のロードと演算をl命令で行える.DORAC

は,着目するセルの状態を記'億したメモリアドレスをあるレジスタに記録しておき,

近傍セルヘのアクセスは,そのレジスタとオフセットを組み合わせたアドレッシング

で表現することで状態の参照と演算をl命令でコード化する.

SSE2のパツクド・データ演算命令には,ラップアラウンド型(オーバーフローは無

視される)と飽和型(オーバーフローの場合は最大値,アングーフローは最小値とな

る)があるが,DORACではデータ幅も含めてコンパイル時にユーザが指定する.し

たがって,ユーザは値の溢れが起きないようにデータ幅を検討する必要がある.必要

なデータ幅の特定が難しい場合は,インタプリタ版シミュレータの状態の最大,最小

値を記録する機能が利用できろ.

SIMD演算における問題の一つにデータに依存して分岐する処理(if文など)が難し

いことが挙げられる.一般に,SIMD演算ではif文は条件付き移動命令に変換するこ

とで処理する(if変換と呼ばれる[11]).SSE2では,条件付移動命令は用意されていな

いためサブオペランドの比較結果によってビットマスクを生成するSIMD比較命令と

マスク演算を利用して条件付き移動命令をエミュレートする[9]・

SIMD比較演算は,サブオペランド間で比較を行い条件を満たすサブオペランドの

ピットを全て1(8-bitなら255),他のサブオペランドをOとする演算である.条件に

は,「等しい」「より大きい」の何れかが指定できる.

3.3if変換

if変換は,if文内の代入文を条件付代入文に変換することで分岐命令を除去する.SSE2

を用いる場合は,比較演算と論理演算に置き換えて処理する.例えば,c言語で記述

された if(x==y) a=2; else a=3; は, m=mask(x-y); a=、&21~m&3;

と置き換えることができる[6].これを「変換1」とする.ここで,maslK(条件)は,

以下のように定義される. -8-  ̄左一二コ

鰯 |ロ 千FT 鰯

鰯 ----_ ̄ -~ ’-1 = 1 1 1 1 1 111 |ロ 千FT 鰯

鶴  ̄ 8 4 、L 、 」 × 二  ̄■〆  ̄ ,房▲Z 1111 1 1. 「 28一  ̄4 二 戸 U1 21しり‘21212▲ 1 - ノ 2  ̄ ̄3 4二〆 ' = = 1』〆 8’ 4一

(10)

typedefunsignedcharDATATYPE; DATATYPEmask(boolcond) { returncond?(DATATYPE)(-1):O; )

DATATYPEは,扱うデータの型である.上記の記述では符号なしバイトで宣言している

が,実際には,符号なしバイト,ワード,ダブルワードの何れかである.(DATATYPE)(-1)

は,全てのビットが1となる値である.if文がネストしている場合は,代入文に到達

するまでに評価される条件から生成される複数のビットマスクの論理積をマスクとし

て用いることで処理できろ. 以下のif文を例にDORACが行う変換に説明する. 1:if(b〈O){’ 2:a=a+1; 3: if(a〈O) 4: b=2; 5:else 6: b=1; 7:)elseif(a〉O){ 8:a=2; 9:)else( 10: b=3; 11:a=b; 12:) 4行目の代入は,1,3行目の条件を満たす時に行われるのでピツトマスクは, 、=mask(b〈0)&、ask(a〈O); となる.else部は,条件の否定から生成したピットマスクを用いろ.したがって,上 記のコードは以下のようにif変換できる. 、=、ask(b<O); -,11=、ask(b〉=O); a=a+1&mlla&-m; 、3=ml8tmask(a〈O); -,3=ml8Zmask(a〉=O); b=2&m31b&~、3; b=1&-,31b&~-,3; 、7=_ml8Zmask(a〉O); -,7=-ml8Zmask(a<=O); a=2&m71a8Z-m7; b=3&-,71b&~-,7; a=b&_m71a& ̄-,7;

ピットマスク、,-m〃は,上記コードのn行目のthen部,else部の条件に対応する.

m3,,7は,2行目の変数aの演算結果に依存するので,変換1のようにelse部の代入文

をまとめて処理することはできない. -9-

(11)

2mm,[e8i+(-304)]〃1oads上ate mnn2,[esi+(-288)】ノノloadstateandadd 】mm2,[esi+(-272)]〃1oadstateandadd 。、、2,[esi+(-16)]ノノユoads上ateandadd mn2,【esi+16]〃loadstateandadd 麺、2,【esi+272]〃loadBta上eandadd 極、2,にBi+2881ノノloadstateandadd 。mm2,【esi+304]〃loadstateandadd 】匝匡、4,,,2//aSBimBum 。□回2,.,,5//Bum=2 mm2,【esi+0】ノノ(sum-2)&[0,0】 。区、3,,,4〃sun 。画回3,2,,5〃Bum==3 ]画、3,2,,7〃(Sun==3)&1 mm,〕mm3ノノ(Sum-2)&【0'011(Sum-3)と1 【edi+0】,2,,2//assigns上a上e mvdqa paddb paddb paddb paddb paddb paddb paddb moVd回a pmpeqb Pand mcvdqa pc亜Peqb pand pOr movdqa CdeEineST(。x,oy)(((BYTE★)psrc)[。y*SエZEOFX+ox]) for(y=O;y<SエZEOFX)y++)( 2oz(x=O;x<SエZEOFX;x++)( intsum=STu,O)+ST(-1,0)+ST(0,11+ST(0,-1) +ST(1,1)+S⑩(1,-1)十sT(-1,1)+ST(-ユ,-ユル 正(sum-311(sum==2“ST(0,0)==1) *((BYTE★)pdst++)=1; e1se *((BYTE*)pdst++)=O; 図11ライフゲームに対するDORACの コード出力 図12ライフゲームのC言語の記述 3.4コード生成 コード生成器は,構文木からよりアセンブラ命令に近い中間コード(擬似レジスタ, メモリ間の演算)として生成し,その後対象とするSIMD命令群に変換する.中間コー

ド生成には,使用レジスタ数が少なくなるアルゴリズムを用いる[14]、現状では,DO-RACはMMX及びSSE2の命令セットを対象としたコンパイルが可能である.式の評 価で利用されなかったレジスタには,最も多く使われるものから順に定数,変数が割 り当てられる.“pandn,'命令(オペランドaを論理否定してオペランドbと論理積をと る)も可能場合は利用する.また,中間コードの変換ルーチンを変更することで他の SIMD命令セットにも対応可能である.図4の近傍則に対してDORACが出力する状態 更新処理のコードを図11に示す.

4.評価実験

DORACが生成するOAシミュレータの実用性を示すため,Cコンパイラが生成する シミュレータと処理時間の比較する実験1を行った.実験1に用いたCAモデルは,多 数決モデル,ライフゲーム,HPPモデル,道路交通モデル,砂モデルである.実験は,

900MHzのPentiumM(PM)と850MHzのPentiumllI(P3)の計算機で行ったPMに対し

てはSSE2のコード,P3についてはMMXのコードを実行した.状態は8ビットで表現 し,セル数256x256で全セルの状態を5000回更新するのに必要な処理時間を計測した. DORAC版は,x軸に対するループが展開ざれ1重ループのコードが出力されるように 設定した.c言語版は,状態の取得にマクロを用い,境界付近はシャドウ・エッジを 行うことで境界処理を最適化した.また,VisualC++バージョン60においてPentium Proプロセッサ向けの実行速度に対する最適化のオプションをつけてコンパイルした. 一般にこのオプションをつけてコンパイルした場合がもっとも実行速度が速くなる. 図12にC言語版ライフゲームシミュレータのプログラムの主要部を示す。 評価に用いたCAモデルは,よく知られた3つのモデル(多数決モデル,ライフゲー

ム,HPPモデル)[2],道路交通シミュレーションに用いられるモデル(道路交通モデ

ル),コンパイラの性能評価のために我々が設計したモデル(砂モデル)の5モデル である.また,if変換が性能に与える影響を調べるため全体の演算に対するif変換の 対象となる代入文の割合を算出した算出は,以下で行った if文ブロック内の代入文の数 演算子の数十代入文の数 -10-

(12)

多数決モデルは,対象セルの状態と対象セルに接する8つのセルの状態の合計が5 以上の時,次の状態は1,それ以外の時0とするモデルである.ランダムに生成され た初期状態に対して多数決モデルを適用すると,動物の模様に似た形状が現れる.こ れは,OAのもつ自己組織化の‘性質の一つとされている. ライフゲームは,対象セルに接する8つのセルの状態の合計(SUM)に以下の規則 を適用して,次の時間ステップの状態を決定する. ●SUMが2の時,状態は変化しない 。SUMが3の時,次の状態は1 。それ以外の時,次の状態はO HPPモデルは,流体解析に用いられる格子ガスオートマトン法で最初に提案された モデルである.このモデルでは単位質量の粒子が正方格子の格子点上に存在し,格子 状を単位速度で移動し別の粒子と散乱する.衝突後の粒子はそれぞれ,それまで粒子 のなかった方向へ跳ね返る.

道路交通モデルは,Nagelらが提案し,MicroSimやTRANSIMSに採用されている多

速度モデルを用いた[15]~[17]、このモデルは,多くの交通シミュレーションに適用さ

れており,再現性と実用性が確認されていろ['81

実験に用いたモデルは,Nagelらが提案した初期のモデルで,近傍則は以下のように

定義されろ. ・減速:前方の車が,近すぎると減速する ・加速:前方の車間距離が十分あり,最大速度に達していなければ加速する 最大速度は,4(1時間ステップで4セル移動する)とし,参照する近傍セルの範囲は 5セルである. 砂モデルは,if文を多重にネストした例として筆者らが作成したモデルである.コ ンパイラの性能試験用に設計したため,厳密に砂の振る舞いを再現するモデルではな い.条件文の割合は,45%である.このモデルは,以下の規則に従って状態が変化す る.参照する近傍の範囲は2セル分である. ・砂は,下に何もなければ落下する ・砂は,下に砂があればある確率で停止する ・停止しなかった砂は,等確率で左右どちらかにスライドする 実験1の結果を図13に示す.棒グラフは,各シミュレーションの実行時間を表して いる.MMXの結果グラフにおける下部の折れ線グラフは,if変換される代入文の割合 である.上部の折れ線グラフは,○版に対してDORA版のシミュレータが何倍に高速 化されるかを示している. DORA版のシミュレータは,C版と比較して多数決モデルで,MMXでは156倍,ラ イフゲームで15.4倍,HPPモデルで109倍,道路交通モデルで49倍,砂モデルで7.6 倍高速化されることが示された.MMXと比べてSSE2の速度向上比が小さいのは,実 験に用いたPMでは通常の整数演算性能が大幅に向上(スループットは2倍以上)と条 件分岐命令の分岐予測精度の向上が理由として考えられる.また,MMXはスーパース カラにより演算命令同士が並列実行されるのに対してSSE2の命令は並列実行されな

い[91したがって,64ビットレジスタに対するMMX命令に対して128ビットのSSE2

-11-

(13)

蛾蕊瀦観《堂切謬〕 騨鋒ガドq aGpI鶇 4.巳ひび :&(》。” Z⑥囮○百 ipD礎 。 # q 0 0 。 ⑥ Q 側 0 を6 ロ 伽 3 口 回 心。⑥ 晒 晶 姻鰄如緬坤心邸杁、、 111113旬42b 恵sB Fi⑪ 4蝉 争.C 患黛 *JU 酋且 I 鵡間l掛 …帝 毎F38

伽關。.樹,鐵臘綴

嶽轍艤織鐵謬

図13実験lの結果 命令が倍の性能を発揮するわけでない。また,if変換が多く行われるモデルほど速度 向上比が小さいことから,if変換による演算の増加が性能低下を招いていると考えら れる。 5.おわりに 本論文では,拡張SIMD命令を用いて高速なOAシミュレータを生成するDORAOの 仕様及び最適化とOA近傍則記述言語DORAの言語仕様について述べた。DORA言語 は,近傍則の記述に特化した言語であるためOAモデルの仕様を簡潔に記述できる。ま た,DORAOは,OAの持つ本質的なデータ並列性を利用して並列化したOAシミュレー タを生成するためユーザは並列化に関して意識することなく高速なOAシミュレーショ ン環境が利用できる。近傍則の複雑さが異なる5つのOAモデルに対してDORAOと Oコンパイラを用いて実験的に開発したOAシミュレータについて処理時間の比較を 行ったところ,MMXでは約5倍以上,SSE2では約2倍以上高速化されることが示さ れた。 拡張SIMD命令を用いた並列化は,PVMなどを利用した他の並列化手法と基本的に 併用可能であるため,これらを組み合わせた並列化を行うことでさらに高速なOAシ ミュレーション環境の構築が期待できる。 文献 [1]Wblfram,S:Computationtheoryofcellularautomata,OommwzZcqtZo〃sZnMqt/1cm(utjccILPhWcs、 VbL96,ppl5-57(1984) [2]加藤恭義,光成友孝,築山洋:セルオートマトン法,森北出版(1998) [3lPatterson,DAandHennessyうJL:OomputerAmc/ZitectureAQuqntitqtjueAZlpmoqc/j,MorganKauf mannPublishers,Inc.,secondedition(1996) [4]Margolus,N:CAM-8:acomputerarchitecturebasedoncelluarautomata(1993)Physiscsofcomputation seminar. [5]EckaIt,J、.:AOellularAutomataSimulationSystem,ACMSIGPLAjWVbtjce,VbL26,No8,pp80-85 (1991) [6]Fisher,R・andDietz,HQ:CompilingfbrSIMDWithinaRegister,LOPO'98(nVCFI650,pp290-304 (1998) [7]京昭倫,岡崎信一郎,黒田一郎:画像フィルタ処理の高速化に向けたメディア拡張プロセッサ用SIMDコンパイ ラ,情報処理学会研究報告計算機アーキテクチャ2003-ARC-154,pP85-90(2003)

[s]鳶瀧fFi穰瀞雛團鵜flIiijid)ブートマトンシミュレータ用インタプリタの開発人工知能学会論文

[9]Cor]p、,I:IA-32mtelArchZtectureOptimZzqtiomRG/brenceMqm‘αl(2003) [10]Johnson,so:Yacc:YetAnotherCompileHOompileⅢ,[WZXPro9mmmer'SML"uql,VbL2,Holt, Rinehart,andWinston,NewYbrk,NY,USA,pp353-387(1979) [11]A11en,JR.,KennedyうK,Porterfield,OandWar正en,ルConversionofcontroldependencetodata dependende,Proceedin9solfiihelO仇AOMSIGACZLⅥGPLAjVsZ/mposzT‘monPrjncjplesqfPro9rqmmm9 JqnDuQ9es,ACMPエess,ppl77-189(1983) [12l藤波順久,阿部正佳:SIMD型拡張命令をもっと使った最適化への道のり,第43回プログラミング・シンポジウ

(14)

-12-ム報告集. [13] [14] [15] [16] 天野英晴,高橋義造,富田眞治,渡辺勝正,渡辺琢美:並列処理機構,丸善株式会社(1989). 中田育男:コンパイラの構成と最適化,朝倉書店(1999). Schreckenberg,M、,Schadschneider,A、,Nagel,Kandlto,N:DiscretestochasticmodelsfbrtrafIicflow, P/23/sjcql比Weu)E,VOL51,N。、4,p2939(1995). Nage1,K.OStretz,P.,Pieck,M,LeckeyぅS、,DonnellyiR・andBarrett,CL.:TRANSIMStrafIicflowchar-acteristics,nchnicalReportLosAlamosUnclassifiedReport97-3531,LosAlamosNationalLaboratory (1997). Rickert,MandWagner,P.:Parallelreal-timeimplementationoflarge-scale,route-plan-driventraflic simulation,InMMD〃bZ/s、C,VbLVOL7,pp、133(1996) 加藤恭義:セルオートマトン法による道路交通シミュレーション,人工知能学会誌,VOL15,No.2,pp242-250 [17] [18] ● 、n日■8〃〃 (姻皿叩) (“叩叩) 〈叩叩) (叩。〈】 〃〃ⅡuⅡ、 -13-

参照

関連したドキュメント

「父なき世界」あるいは「父なき社会」という概念を最初に提唱したのはウィーン出身 の精神分析学者ポール・フェダーン( Paul Federn,

事 業 名 夜間・休日診療情報の多言語化 事業内容 夜間・休日診療の案内リーフレットを多言語化し周知を図る。.

しかし,物質報酬群と言語報酬群に分けてみると,言語報酬群については,言語報酬を与

Guasti, Maria Teresa, and Luigi Rizzi (1996) "Null aux and the acquisition of residual V2," In Proceedings of the 20th annual Boston University Conference on Language

②上記以外の言語からの翻訳 ⇒ 各言語 200 語当たり 3,500 円上限 (1 字当たり 17.5

儀礼の「型」については、古来から拠り所、手本とされてきた『儀礼」、『礼記』があり、さらに朱喜

地図 9 “ソラマメ”の語形 語形と分類 徽州で“ソラマメ”を表す語形は二つある。それぞれ「碧豆」[pɵ thiu], 「蚕豆」[tsh thiu]である。

いずれも深い考察に裏付けられた論考であり、裨益するところ大であるが、一方、広東語