平成8年度 委託研究ソフトウェアの提案

(20) パターンに基づくビジュアル並列プログラミング環境

研究代表者:柴山悦哉 助教授
      東京工業大学大学院情報理工学研究科




[目次]

  1. 研究の背景
  2. 研究の目的
  3. 研究内容
  4. 研究体制/研究方法
  5. 想定されるソフトウェア成果

[研究の背景]

現在、並列プログラミングをとりまく状況は急激に変化しつつある。並列プログラミングに関する研究は長年にわたり行われてきたが、実際に並列プログラミングにたずさわるプログラマの数は、つい最近までごくわずかであった。しかし、近い将来、その数は急速に増加することが予想される。この予想は、以下のような要因に基づく。

・並列型コンピュータシステムの低価格化
マルチプロセッサのパソコンが、個人でも容易に購入可能な価格で販売されるようになった。また、大学、研究所などでは、ワークステーションクラスタによる安価な並列コンピュータの構築が広く行われるようになってきた。

・低価格コンピュータ用OSの進歩
ワークステーション用OSはもちろんのこと、一部のパソコン用OSでも、SMPのサポートがあたりまえとなった。

・言語処理系やライブラリなどの進歩
マルチスレッドプログラミングやネットワークプログラミング用の言語/ライブラリが普及してきた。

昨年からの Java ブームなどにより、マルチスレッドプログラミングに挑むプログラマの数も確実に増加している。しかし、単純な構造の並行性を実現するアプレットの構築などを別にすると、現時点では、並行/並列プログラミングには、特別な才能を必要とするのが実情であろう。

以上のような状況から、並列/分散/ネットワーク型のアプリケーションを手軽に開発できる環境が、今後ますます重要となることが予想される。このような環境の核となる言語として KL1 を利用するのは妥当な選択であろう。さらに、ビジュアルな並列プログラミング環境を提供することにより、初心者プログラマの心理的な抵抗を抑え込むことができるのではないかと期待している。


[研究の目的]

本研究の究極の目標は、初心者にとって修得が容易な並列プログラミング環境および熟練者にとって有益な並列プログラミング環境を設計/構築することにある。この目標を達成するために、本研究では、並列プログラムの「設計図」を、そのままの形で図式として入力しプログラミングを行う方式を採用する。ここで「設計図」と呼んでいるのは、プロセスとその間の通信に関する図のことであり、並列プログラムのコーディングを始める前には、たいていの場合このような図が描かれる。「設計図」を図式として直接入力する方式を採用するのは以下のような理由による。

・初心者にとって、テクスト言語を用いた並列プログラミング方式より、プロセスとその間の通信を図式で表現するプログラミング方式の方が、認知的な障壁が低いものと予想される。既存のプロセスを2つ結合して動かすくらいのことなら初心者にも容易にできる作業である。また、ビジュアルなトレーサを用いれば、既存の部品の内部の動きを視覚的に理解することができる。プログラミングの学習を始める時には、大きな助けとなるであろう。

・熟練者にとって、「設計図」を明示的に描画してプログラミングを行う方式は認知的に楽である。「設計図」を思い浮かべながら(あるいは眺めながら)、それを画面上でテクストのコードに翻訳する作業より、設計図の描画に専念する作業の方が、短期記憶への負担が減るように感じられる。このような環境により、単位時間当たりにコーディング可能なプログラムの量が多くなるとは限らないが、プログラマの疲労が少なくなることはほぼ確実であろう。

本研究のより具体的な目標は、昨年度の IFS 委託研究などで我々が開発したビジュアルな並列プログラミング環境 KLIEG のユーザインタフェース部分を改良し、さらに使いやすくすることである。KLIEG は、図式の組合せによりビジュアルな並列プログラミングを可能とする環境であり、図式エディタ、KLICへの翻訳系、図式トレーサを主な構成要素とする。今回新たに導入する機能の中で最も重要なのは、ビジュアルなパターンに関連するものである。

並列プログラミングのパターンを、ビジュアルな部品として定義する機能と、パターンをドラッグ&ドロップにより利用する機能については、既に試作を行っている。この機能をさらに洗練するとともに、図式トレーサにも表示のパターンなどを導入する予定である。


[研究内容]

本研究では、昨年度開発した KLIEG システムを改良し、さまざまな形態のビジュアルなパターンの機構を設計および実装する。そのために、まず、並列プログラミングのさまざまな局面でどのようなパターンが存在するか検討し、その定義および利用が容易なユーザインタフェースを設計する。

現時点で、予備的に検討を進めているパターンに関する研究には以下のようなものがある。ただし、最終的なパターンの設計は、今後の研究の進展により変化する可能性がある。

<1. ビジュアルなプログラムデザインのパターン>
最近、デザインパターンという考え方が注目を集めている。このデザインパターンの考え方のエッセンスをビジュアルな並列プログラミング環境に取り入れたいと考えている。

このような意味でのパターンの中で、もっとも単純かつ原始的なものとして、静的なプロセスネットワークの形状を表現するパターンが考えられる。このような静的パターンを再利用する機構の設計は既に完了しており、α版の実装がほぼ完了している。また、一列に並べられた均質なプロセスよりなる動的なプロセスネットワークのパターンに関しても、設計と予備的な実装がほぼ完了している。

このようなプロセスネットワークの形状を再利用する機能をさらに強化し、記号処理問題を解決する場合によく現われる木構造などの形状を持ったプロセスネットワークの再利用機構の設計と実装を本研究では行う予定である。また、ネットワークの形状だけではなく、ネットワークを流れるメッセージプロトコルの再利用のための機構についても、現在検討中である。このような機構の設計と実装も行う予定である。

<2. 表示のパターン>
プログラム自体が図式情報を含むビジュアルプログラミング環境では、通常のテクスト言語のプログラミング環境に比べ、ユーザからより多くの図形的情報が与えられている。そのため、プログラムの実行の状況を表示する場合にも、ユーザの意図にあった表示が比較的容易に行える可能性が高い。

ただし、プログラムとして与えられた情報だけでは、不十分な場合も多い。たとえば、1次的に並べられた均質なプロセスの列に、プログラマがどのような意味を込めるか、自動的に把握するのは必ずしも容易ではない。この問題を解決するために、どのような表示をプログラマが欲しているかという情報をパターン化し、適切なパターンを選択することにより適切な表示を可能とする機構の設計と実現を行う予定である。また、このようなパターンをユーザが定義する方法についても検討を行い、可能なら設計と実装を行う予定である。

表示に関しては、現在までのところ、図式エディタで入力された図形情報に基づき図式トレーサが表示を行う方式を基本としている。一方、図式トレーサによる表示の形式を、実行時にユーザが変更した場合には、プログラム自体の図形的形状や以降の表示の形式を変えてしまうことも考えられる。図式トレーサに対するデモンストレーションから適切な図形情報を取得する可能性とそのパターン化についても検討を行う予定である。

<3. プロセッサへのプロセス割り当てのためのパターン>
実行時に起動されるプロセスやプロセスが利用するデータを、並列コンピュータのプロセッサやメモリに割り当てる方式の選択は、並列処理の効率化のために非常に重要である。この作業は、実は、図式トレーサの作業−実行時に起動されるプロセスを、画面という2次元メッシュ状の空間に割り当てる作業−と抽象的なレベルでは相似なものである。異なるのは、人間にとっての視認性を重視するか、並列コンピュータの実行効率を重視するかという目的関数の違いだけである。したがって、この2つの問題を解決するためにビジュアルなパターンを導入する場合、パターンの機構自体は類似のものを利用できるが、具体的なパターンとしては異なったものが必要になると予想される。プロセス割り当てなどの指定に関しても、図式トレーサの表示方式の指定と同様のビジュアルなパターン機構を利用する方式を検討する。

<4. 図式エディタと図式トレーサの連携の強化>
現在の版の KLIEG では、基本的に、図式エディタが取得した情報を図式トレーサの表示に反映させるだけで、その逆向きの情報の流れはない。このような方式を採用する理由は、ユーザの意図を図形情報として取得するには、図形エディタの段階の方が容易だからである。一方、図式トレーサが表示のためのパターンをはじめとする何らかの情報をユーザから取得できるなら、逆向きの情報の流れにも意味が出てくるかもしれない。たとえば、図式トレーサがフォーカスを当てた部分は、現在デバッグ中の部分である可能性が高い。したがって、図式エディタを次にユーザが利用するときには、その同じ部分にフォーカスがあたっていると便利な可能性が高い。このような連携を可能とするためには、図形情報の収集機構および表示機構を、図式エディタと図式トレーサで共通化し、統一的なインタフェースを構築する必要がある。


[研究体制/研究方法]

(1) 研究体制
       氏名      所属
研究代表者 柴山 悦哉  東京工業大学大学院情報理工学研究科助教授
研究協力者 高橋 伸   東京工業大学大学院情報理工学研究科助手
研究協力者 豊田 正史  東京工業大学大学院情報理工学研究科博士課程1年
研究協力者 志築文太郎  東京工業大学大学院情報理工学研究科博士課程1年

(2) 研究の方法

 1. ビジュアルなパターンの可能性の検討と設計(全員)
プログラムデザインのパターン、表示のパターン、プロセッサへのプロセス割り当てのためのパターンなどの有効性と実現可能性について検討を行う。

 2. Solaris 2.X 上での図式エディタと翻訳系の設計と実装(豊田)
プログラムの図式表現やパターンの入力をワークステーション上で行うためのエディタを設計し実装する。実装には、Amulet と C++ を用いる。

 3. Solaris 2.X 上での図式トレーサの実装(志築)
プログラムの実行過程を図形的に表示するトレーサを設計し実装する。実装には、Amulet と C++を用いる。

 4. 評価(柴山、高橋)
ビジュアルなパターンを作成/利用し、その有効性と問題点を検討する。


[想定されるソフトウェア成果]

(1)作成されるソフトウェア名称

 KLIEG システム

(2)そのソフトウェアの機能/役割/特徴

本ソフトウェアは、プロセスとストリームを図式として入力し、並列プログラムの開発を可能とするビジュアルプログラミング環境である。また、開発された並列プログラムをKLIC 言語に翻訳し、実行することができる。さらに、KLIC 処理系が生成したトレース情報をもとに、実行の過程を視覚化する機能も持つ。

KLIEG システムは、プロセスやストリームを組み込みの抽象として持つ点が、KL1 などの並列論理型言語と大きく異なる。論理型言語の特徴も有するが、どちらかと言えば、並列オブジェクト指向言語の一種と考えた方が妥当であろう。なお、論理型言語に慣れたプログラマのために mode づけ可能な flat GHC の節に相当する図式を記述することも可能としている。このような図式をひとまず用意することにより、KLIC のプログラマは、比較的容易に KLIEG 環境に移行することが可能となる。初心者にとっては、このような機能を利用するより、KLIEG 独自の抽象を活用した方がプログラミングは容易である。

一般的なテクストベースの並列プログラミング言語と比較した場合、プロセスやストリームなどの抽象が、ビジュアルな表現を持つユーザインタフェースコンポーネントとして実現されている点が、根本的に異なる。この特徴から、「設計図」を直接描画することによるプログラミング方式が可能となる。また、プログラムとして与えられた図形情報を反映した、プログラム実行の可視化が可能となる。

既存のビジュアルプログラミング言語と比較した場合の最大の特徴は、並列プログラミング環境に必要なさまざまな側面をパターン化し、パターンの定義と利用を容易に行いうるユーザフレンドリなインターフェイスを持つ点にある。また、トレーサによる表示方式にも continuous zoom アルゴリズムの動的な適用などの特徴がある。

(3)ソフトウェアの構成/構造

KLIEG システムは、次のような構成要素からなる。

・図式エディタ
ワークステーション上でマウスとキーボードを用いて、図形とテクストにより表現された並列プログラムを入力/編集するためのサブシステム。ユーザが作成したプログラムのブラウジングを行う機能や簡単な検索機能なども持つ。

・翻訳系
編集系で入力/編集された図形とテクストを、KLIC のプログラムに翻訳する サブシステム。翻訳された図形やテクストと KLIC プログラムの間の対応関 係に関する情報(通常のコンパイラのシンボルテーブルに相当する情報)も生 成する。

・図式トレーサ
KLIC 上で実行されるプログラムの実行過程と結果を視覚的に見せるための サブシステム。デバッガやパフォーマンスモニタとしての機能も一部実現す る予定。

・ライブラリ
KLIEG で利用可能な並列プログラムライブラリ。

今回作成するのは、このうち、ライブラリ以外の部分である。ライブラリについては、必要最小限にとどめる予定である。

(4)参考とされたICOTフリーソフトウェアとの関連

KLIEG により作成された並列プログラムは、KLIC のプログラムに変換され実行される。
KLIEG 自身も昨年度の IFS 委託研究の成果として公開されている。今年度および来年度は、これをもとに改良を行う。

(5)使用予定言語および動作環境/必要とされるソフトウェア・パッケージ/ポータビリティなど

KLIEG システムのユーザインタフェース部分は、Amulet(フリーな GUI ライブラリ)を用いてC++ で記述する。当面、SparcStation の Solaris 2.X 上で稼働するシステムを作成する予定である。移植に関しては、Amulet と C++ が稼働する環境であれば、比較的容易であると思われる。

KLIEG システムにより作成したプログラムを翻訳実行するためには、C/C++ とKLIC の稼働する環境が必要である。

(6)ソフトウェアの予想サイズ(新規作成分の行数)

 新規に作成するソフトウェアは、C++ で10,000行程度を予定している。

(7)ソフトウェアの利用形態

KLIC のプログラミングは、基本的にテクストエディタを用いて行われている。KLIEG を用いると、このような KLIC によるプログラミングをビジュアルな環境で行うことが可能となる。ただし、KLIEG は KLIC に比べ、データフローの向きに関する記述が厳密である。したがって、より正確に言うと、モードづけ可能な flat GHC 相当の記述力を KLIEG のベース言語は有する。

KLIC のビジュアルプログラミング環境として見たとき、KLIC に比べ、次のような点がよりユーザフレンドリになっている。

・プロセスとその間の通信の視覚化
多くの並列プログラムでは、プロセスとその間の通信を表現したプロセスネットワーク図の方が、そのテクスト言語による表現よりも根源的である。プログラムは、プロセスネットワーク図の可能な表現の一つに過ぎない。

・定型的な節の簡略表現
KLIEG では、モードづけ可能な flat GHC の節を単純に図式として表わしたものの他に、定型的な節をより簡便な図式として表現するようにしている。 たとえば、永続的なプロセスを表現するときによく現われる再帰呼び出しなどが、この場合に該当する。なお、KLIEG では、永続的なプロセスを基本的な抽象として認めているので、このような機能を提供するのは当然の帰結である。

・ユーザ定義可能なパターンの導入
SPMD 的な計算や単純な繰り返しのリスト処理などを表現するときには、KLIC の再帰呼び出しを用いるより、KLIEG のビジュアルなパターンを用いた方が、視覚的な了解性が高い。

・実行トレースの視覚化
プログラム実行中のプロセスの生成/消滅とそれにともなうトポロジーの変化は、ビジュアルなトレーサを用いた方がはるかにわかりやすい。KLIEG は、このような過程の表示を、もとのプログラムに現われるプロセス間の位置関係を極力保存するように配慮しながら表示する。

(8) 今年度末の仕上がり状況

木構造パターンと表示のパターンに関する改良を施した KLIEG の新版が今年度末に完成の予定。

(9)添付予定資料

ユーザマニュアルおよびプログラム例


www-admin@icot.or.jp