並列計算をグラフィック表示するためにproof-based
visualizationという手法と
Swarmという言語
を使用している。
Pavaneは共有空間における通信/計算を統合した
並列計算モデル``
Swarm''
Roman_visualization
をベースに作成れている。
BALSAや
ZEUS
のようなアルゴリズムアニメーションシステムと異なり、
プログラム中に表示プリミティブを埋め込むのではなく
計算に使われている共有データへのアクセスにより可視化を行なう。
また可視化計算の実行は逐次的に行なわれるのではなく、
あらかじめ記述された規則を共有空間内データが満たすと
実行が発火されるようになっている。
(宣言的アプローチという)
Swarmは共有データ空間を使用した並列計算モデルで、
Linda(共有空間を使用する点)、
UNITY(型式的記述、証明に重点を置いている点)
などの影響をうけている。
Swarmは共有データ領域(dataspaceと呼ぶ)
を用いて通信/計算を行なう。
データ空間はタプル空間(tuple space)、
トランザクション空間(transaction space)、
同期関係}(synchrony relation)の
3部分から構成される。
データ空間の要素は名前と値の列の組で構成される。
(e.g. has_label(P,L), Label(P))
トランザクション空間の要素には規則と動作が記述されており、
タプル空間内のデータ(タプル)が規則にマッチすると
記述されている動作が発火される。トランザクションの動作としては
通常の計算の他、タプル空間のタプルの生成/削除を指定できる。
同期関係というのは複数のトランザクションの動作が同時に発火することを
保証するためのものである。
初期状態として適当なタプルとトラザクションを与えると、
規則にマッチするトランザクションが順次発火することにより
計算が遂行されていく。
★Pavaneにおけるプログラム視覚化★
データ空間内の要素の状態がプログラムの状態を示すと考えられるので、
これを表示する。
要素の集合を直接表示に写像するのは複雑なので、簡単な写像を
多段(3段)にして可視化を行なう。
タプルの集合を単に空間(space)と呼び、空間から空間への
写像をトランザクション規則で表現する。
論文では、ネットワーク接続されたノードが
メッセージによってアクティブ/インアクティブになるという計算を
Pavaneによる記述でアニメーション表示した例を示している。
Lindaを使用した場合と同様、共有空間を使用したモデル
では視覚化が簡単にできると思われる。割とよくできたシ
ステムのように思われた。
Swarmはそれ自体言語であり、
式の評価や関数呼び出しなどの汎用プログラミング
言語機能を持っている(はずである)。
例えばCで書いてあるプログラムをPavaneで可視化することはできない。
(計算モデルや証明可能性という前堤がくずれてしまう)
デモビデオのような画面を作るにはグラフィックライブラリを使っている
はずであるがそれとのリンクがどうなっているかを隠している。
Lindaや
Cellulaなどのようなモデルでは
通信プリミティブをCのような汎用手続き型言語から使用できるので
その方が可視化には便利だと思う。
3層に分離して抽象化したとはいってもやっぱりノウハウとかアドホック
のかたまりのようである。本当に意味があるのかどうか疑問。
(増井 1991/11/21)
G. C. RomanとK. C. Coxの開発したPavaneは
宣言的記述によるアルゴリズムアニメーションシステムで
ソフトウェアプローブ挿入の手間を必要としない.
(
小池氏の
bit別冊記事)