modeling concurrent computing

26
Modeling Concurrent Computing 並行計算をモデル化する 松下祐介

Upload: yusuke-matsushita

Post on 27-May-2015

358 views

Category:

Technology


1 download

DESCRIPTION

並行計算のモデルのうち、アクターモデルとプロセス計算について説明している。

TRANSCRIPT

Page 1: Modeling Concurrent Computing

Modeling

Concurrent Computing 並行計算をモデル化する

松下祐介

Page 2: Modeling Concurrent Computing

数理モデル

• 複雑なことを扱うと頭がこんがらがる

• そこで数学の登場

• 数学によってモデルにしよう

(例)

自然法則 ⇒ ニュートン力学、相対性理論、...

計算機 ⇒ チューリングマシン、ラムダ計算、...

経済 ⇒ ゲーム理論のゲーム、...

•優秀なモデルは単純で美しく、強力であり、そして本質を明らかにする

Page 3: Modeling Concurrent Computing

並行計算の数理モデル

• 並行計算はなんだかややこしい

• しかも大規模な並行計算が必要になってきた

• そこで数理モデルの登場

▫ アクターモデル

▫ プロセス計算

▫ ペトリネット

Page 4: Modeling Concurrent Computing

Actor Model アクターモデル

Page 5: Modeling Concurrent Computing

アクター

• アクターは

▫ 他のアクターにいくつかのメッセ-ジを送る

▫ いくつかの新たなアクターをつくる

▫ メッセージに応じて何かをする

• これらの振る舞いは並行的に実行される

Page 6: Modeling Concurrent Computing

データの取り扱い

• アクターはカプセル化されたオブジェクト

▫ 自分が持っているデータは自分のみが取り扱う

▫ 他のアクターはデータを参照・操作できない

▫ メッセージだけで情報交換を行う

オブジェクト指向においてメッセージは重要概念

Page 7: Modeling Concurrent Computing

アクターの通信 (1)

• 送信側アクターは

▫ アドレスによって送信先のアクターを指定する

▫ 受信されるのを待たずに次のことをする

• アクターのアドレスの取得方法

▫ 受信したメッセージから取得

▫ 自分が生成したアクターであるので知っている

▫ その他

• 局所性

▫ アドレスを知っている相手にしかメッセージを送れない

Page 8: Modeling Concurrent Computing

アクターの通信 (2)

• 受信側アクターは

▫ 自分のデータを操作する

▫ 新たなメッセージを送る

▫ 新たなアクターをつくる

• 通信のスケールはいろいろ

▫ プロセス間だったり、ネットワーク間だったり

• メッセージは入れ替わりうる

▫ 送信された順に受信されるとは限らない

Page 9: Modeling Concurrent Computing

短所

• 共有データの扱いが面倒

• 同期を扱えない

Page 10: Modeling Concurrent Computing

長所

• 並行計算を気楽に考えられる

▫ アクターはスレッドを直接扱わなくていい

▫ アクターは内部状態へのロックを考えなくていい

• スケーラビリティー

▫ 問題は小さなアクターに分割していけばよい

▫ プロセッサの数の増減にも対応できる

Page 12: Modeling Concurrent Computing

Process Calculus プロセス計算

Page 13: Modeling Concurrent Computing

はじめに

• プロセス計算には様々な種類がある

▫ 一気に全体を見渡すことは難しい

• プロセス代数とも呼ばれる

• プロセス計算を記述するための

CSP (Communicating Sequential Processes)

という言語に基づいて説明していく。

Page 14: Modeling Concurrent Computing

基本 (1)

• プロセスはオブジェクトである

▫ データを持つ

▫ イベントが来たらデータを操作する

• イベント/チャンネルは通信路である

▫ 他への操作 (スイッチオン/オフなど)

▫ 入力 (mouse?xyなど)

▫ 出力 (screen!bitmapなど)

Page 15: Modeling Concurrent Computing

基本 (2)

• プリミティブプロセス

▫ STOP (通信をしない)

▫ SKIP (必ず成功する)

▫ DIV (発散)

• 環境

▫ プロセスたちの外にある世界

• プロセスは再帰的定義が可能

Page 16: Modeling Concurrent Computing

演算 (1)

• プレフィックス a→P

▫ イベントaと通信したあとにプロセスPを行うプロセス

• 決定的選択/外部選択 (a→P)□(b→Q)

▫ 環境がaとbのどちらのイベントを起こすか決定

▫ aが起こったらP、bが起こったらQを行う

▫ 同時にaとbを受け取ったらどうなるかは不定

• 非決定的選択/内部選択 (a→P)∏(b→Q)

▫ プロセスがaとbどちらのイベントを起こすか決定

Page 17: Modeling Concurrent Computing

演算 (2)

• インターリーブ/並行合成 P|||Q

▫ PとQが同時並行に動作

• インターフェース並行/共有 P|[{a}]| Q

▫ PとQが同時並行に動作

▫ イベントaを共有する

• 隠蔽 P\{a}

▫ イベントを観測不可能にする

プロセスの抽象化のため

Page 18: Modeling Concurrent Computing

演算 (3)

• 逐次合成 P; Q

▫ PをしたあとにQをする

• 条件選択 if p then P else Q

▫ pが真ならばPを、偽ならばQを実行する

• タイムアウト P ▷Q

▫ PがタイムアウトしたらQを行う

• 割り込み P△Q

Page 19: Modeling Concurrent Computing

演算 (4)

• 変更 P [[ a←b ]]

▫ プロセスの中のイベントaをイベントbに書き換えたプロセス

Page 20: Modeling Concurrent Computing

通信 (1)

channel juice

Coin = {10,50,100,500}

channel in:Coin -- コインを入れるところ

VM(n) = if n<120

then in?x → VM(n+x) -- ?で入力

else juice → VM(n-120) --ジュース1本120円

Page 21: Modeling Concurrent Computing

通信 (2)

PERSON = (juice -> SKIP) □

( in!10 -> PERSON -- ! で出力

∏ in!50 -> PERSON

∏ in!100 -> PERSON

∏ in!500 -> PERSON )

SYSTEM = PERSON [|{in,juice}|] VM(0)

Page 22: Modeling Concurrent Computing

さまざまなプロセス計算

• CSP (Communicating Sequential Process)

• CCS (Calculus of Commnicating Systems)

• ACP (Algebra of Communicating Process)

• π計算

• アンビエント計算

Page 23: Modeling Concurrent Computing

動作検証ツール

ツール 理論

FDR CSP

PAT CSP#

mCRL2 ACP

CWB CCS

MWB π計算

LTSA FSP

プロセス計算の形に直すことで機械的に動作を検証できる!

Page 24: Modeling Concurrent Computing

文献

• プロセス代数の基本と関連ツールの紹介

http://staff.aist.go.jp/y-isobe/topse/vic/slides/csp-

isobe-2010-07.pdf

• プロセス代数に基づくモデリング

http://lis2.huie.hokudai.ac.jp/~kurihara/classes/P

rogram/fsp.ppt

http://kussharo.complex.eng.hokudai.ac.jp/~kuri

hara/classes/Program/JTEXT/05JTEXT.pdf

• CSP (Communicating Sequential Processes)

http://d.hatena.ne.jp/ymkwt/

Page 25: Modeling Concurrent Computing

Finale フィナーレ

Page 26: Modeling Concurrent Computing

フィナーレ

• 先人たちの知恵に学ぼう

▫ モデルの再開発はしたくない

• 確立された数理モデルに基づけば

▫ いろいろなツールを使いやすい

▫ 第三者との共通理解もしやすい

▫ いろいろと便利

• 抽象の世界を楽しもう!