並行プログラミング concurrent programming

Slides:



Advertisements
Similar presentations
1 情報基礎 A 第 9 週 プログラミング入門 VBA の基本文法 1 準備・変数・データの入出力 徳山 豪・全 眞嬉 東北大学情報科学研究科 システム情報科学専攻 情報システム評価学分野.
Advertisements

プログラミング言語論 第10回(演習) 情報工学科 木村昌臣   篠埜 功.
シーケンス図の生成のための実行履歴圧縮手法
4 相互作用図 後半 FM13001 青野大樹.
Generic programming と STL
クラスタの構成技術と クラスタによる並列処理
Chapter11-4(前半) 加藤健.
プログラミング言語としてのR 情報知能学科 白井 英俊.
Chapter5 ステートチャート図 FM 于 聡.
プログラミングパラダイム さまざまな計算のモデルにもとづく、 プログラミングの方法論 手続き型 関数型 オブジェクト指向 代数 幾何.
数値計算及び実習 第3回 プログラミングの基礎(1).
DNASシステム上のアプリケーション起動シーケンスのための基盤であるdsh部分の性能評価
Step-by-Step Guide on How to Start ALICE Analysis
プログラミング言語論 プログラミング言語の 特徴と分類 水野嘉明
読んだもの1 P0145R1: Refining Expression Evaluation Order for Idiomatic C++
基礎プログラミング 第13回(2007年5月28日) 「関数」の補足説明 Report-Fの解説.
プログラミング言語論 第6回 型 情報工学科 篠埜 功.
応用情報処理V 第1回 プログラミングとは何か 2004年9月27日.
構造化オーバーレイネットワークに適した 分散双方向連結リストDDLL
多数の遊休PC上での 分散ゲーム木探索 導入 ゲーム木探索 ⇒遊休PCを利用して高速化 例)コンピュータ将棋における次手の計算
条件式 (Conditional Expressions)
並列分散プログラミング.
応用情報処理V 第1回 プログラミングとは何か 2003年9月29日.
UML入門 UML PRESS vol.1 より 時松誠治 2003年5月19日.
CONCURRENT PROGRAMMING
チューリング機械 状態の有限集合 ヘッドの方向を表す。 L:1コマ左へ R:1コマ右へ テープ記号の有限集合 入力記号の有限集合 動作関数
6. 順序回路の基礎 五島 正裕.
PROGRAMMING IN HASKELL
ベイジアンネット混合モデルによる 強化学習エージェントの方策改善
プログラミング言語論プログラミング言語論 プログラムの意味論 水野嘉明
PROGRAMMING IN HASKELL
プログラミング言語論 第9回 Hoare論理の練習問題 手続きの引数機構 変数の有効範囲
制作技術ー3 双方向通信 : CGIシステムと環境変数
導出原理とProlog -論理と形式化 授業資料-
 型推論1(単相型) 2007.
書き換え型プログラムの生成・検証 研究課題:適切な実行戦略を効率よく探索する、 より自動化された手続きの実現 書き換え型プログラム
論理プログラミング 導出の効率化 論理プログラム ホーン節 ホーン集合に対する導出戦略 論理式の手続き的解釈 Prolog
第5章 計算とプログラム 本章で説明すること ・計算の概観と記述法 ・代表的な計算モデル ・プログラムとプログラム言語.
コンパイラ 2011年10月20日
オブジェクト指向言語論 第六回 知能情報学部 新田直也.
プログラミング言語論 第六回 理工学部 情報システム工学科 新田直也.
 型推論3(MLの多相型).
統計ソフトウエアRの基礎.
アルゴリズムとプログラミング (Algorithms and Programming)
マイグレーションを支援する分散集合オブジェクト
Handel-Cを用いた パックマンの設計
プログラミング言語論 第十一回 理工学部 情報システム工学科 新田直也.
オブジェクト指向言語論 第三回 知能情報学部 新田直也.
KL1 による並列プログラミング 早稲田大学理工学部情報学科 上田研究室 4 年 高木祐介
「マイグレーションを支援する分散集合オブジェクト」
卒業研究 JCSPを用いたプログラム開発  池部理奈.
プログラム分散化のための アスペクト指向言語
4.プッシュダウンオートマトンと 文脈自由文法の等価性
情報処理Ⅱ 2005年10月28日(金).
第6回放送授業.
オブジェクト指向言語論 第九回 知能情報学部 新田直也.
オブジェクト指向言語論 第二回 知能情報学部 新田直也.
Cilk-NOW 米澤研究室 金田憲二 “Adaptive and Reliable Parallel Computing on Networks of Workstations” Robert D. Blumofe (Univ. of Texas) Philip A. Lisiecki (MIT)
ネットワーク・プログラミング 1対多のプロセス間通信.
プログラミング入門2 第6回 関数 情報工学科 篠埜 功.
オートマトンって? (Turing machine).
PROGRAMMING IN HASKELL
3 分散システムのフォールトトレランス 分散システム Distributed Systems
オブジェクト指向言語論 第六回 知能情報学部 新田直也.
オブジェクト指向言語における セキュリティ解析アルゴリズムの提案と実現
情報処理Ⅱ 小テスト 2005年2月1日(火).
オブジェクト指向言語論 第九回 知能情報学部 新田直也.
情報処理Ⅱ 2006年10月27日(金).
オブジェクト指向言語論 第六回 知能情報学部 新田直也.
情報処理3 第4回目講義         担当 鶴貝 達政 12/17/2019.
Presentation transcript:

並行プログラミング concurrent programming

分散,並列,並行 いずれも複数の処理を行う。おおよその違いは 分散(distributed): 複数の処理主体が空間的に分散している。厳密には同時性とは別。 並列(parallel): (物理的に)複数の処理主体が同時に処理を行う。 並行(concurrent): 処理主体の数は問わない。純粋に論理的。

並行プログラミングの要素 プロセス: 処理主体 通信と計算 オブジェクト指向との類似性に注意 プロセスは停まるとは限らない。 プロセス: 処理主体 プロセスは停まるとは限らない。 通信と計算 各プロセスが受け持つ処理の粒度によって通信と計算の比重が変わる。 オブジェクト指向との類似性に注意

並行プログラミングの例 Communicating Sequential Process(CSP) (Hoare, 1978) Concurrent Prolog (Shapiro, 1986) Guarded Horn Clauses(GHC) (Ueda, 1988) p-calculus (Milner, 1989) 近年はセキュリティ関連で。

GHC

GHCの構文 factorial(X,Y) :- X>0 | X1:=X1, factorial(X1,Y1),Y:=X*Y1. factorial(0,Y) :- true | Y=1. 構文 各行はガード付ホーン節(guarded Horn clause) factorial(X,Y) ゴール(プロセスを表す) 節の左辺はヘッド 右辺の縦棒|(コミット演算子)の左をガード、右をボディ

GHCの動作 ゴールの変数に節のヘッドとのパタンマッチが成功するような結合(binding)が生じ、ガードの条件を満たせば、(非同期、並行して)そのゴールを具体化された節のボディに書き換える(ゴール書き換え規則) :=は右辺を評価して代入。=は評価せず項として代入 後戻り(バックトラック)はしない!

GHCにおけるストリーム factorials([X|Xs1],Ys1) :- true | factorial(X,Y),Ys=[Y|Ys1],factorials(Xs1,Ys2). factorials([],Ys) :- true | Ys=[]. factorial(Xs,Ys) Xs←[5|Xs1] とすると Ys←[120|Ys1]となる。 Xs1←[7|Xs2] とすると Ys1←[5040|Ys2]となる。

並行計算 Xs←[150, 3 | Xs2]とすると、 Y1←150! より Y2←3!のほうが早く得られる可能性がある。

GHCの特徴 通信は(節で共有する)変数を通じて行う。 I/Oもプロセス 通信は非同期 結合(binding)の生成と観測 outstream([write(‘hello’),nl|X1]) 通信は非同期 p(X,Y) :- true | X=5,q(Y). q(Y) :- true | Y=6. プロセスX=5とY=6の実行順序は不定

GHCによる記述例1 双方向通信 ストリームXを未完成メッセージ [write(‘more?’), nl, read(T) | X1] 観測可能。 cf. Cにおけるポインタ渡し(代入通知なし)

記述例2 履歴のあるオブジェクト stack(Xs) :- true | stk(Xs, []). stk([push(T) | Xs1], Ls) :- true | stk(Xs1,[T|Ls]). stk([pop(T) |Xs1],[L|Ls1]) :- T=L, stk(Xs1,Ls1). stk([pop(T) |Xs1],[]) :- true | T=error, stk(Xs1,[]). stk([], Ls) :- true | ture.

πcalculus

π計算の要素 x,y,z, ‥‥  (チャネルの)名前 P,Q,R ‥‥ プロセス

π計算の構文と意味 (停止したプロセス) (出力ポートxから引数yを送信) (入力ポートxから値または通信ポート名をyで受信) (PまたはQとして振る舞う) (PとQが並行に動作できる) (通信ポートxをPのスコープ内に制限する) (xとyが一致したときのみPとして振る舞う) (A=Pとなるとき、AをPで置換)

動作 xˉy.0 | x(u).uˉv.0 | xˉz.0 略記: xˉy | x(u).uˉv | xˉz は次のようにリダクションされる 0 | yˉv | xˉz または xˉy | zˉv | 0

π計算の性質 λ計算を模倣できる 計算=通信 チャネルが動的に生成消滅

文献 The Polyadic -Calculus: A Tutorial, (by Robin Milner). http://lampwww.epfl.ch/mobility/papers/ECS-LFCS-91-180.ps.gz リンク http://move.to/mobility