インタフェースに基づく並行論理プログラム最適化コンパイラの構成法
学会発表用スライド集(2001.10.22)

Last modified on 2001.10.26.


表紙

並行論理プログラムの例

研究の背景

統一的な枠組みがあると…

並行言語の実行と逐次化

並行言語の処理系における最適化の2つの段階

本研究は、前者の段階を行う枠組みを提案する。

逐次化が定式化されると…

従来、逐次化が定式化されることはほとんど無かった。 そのため、個々の最適化技術の正当化は、 しばしばアドホックにしか行うことができなかった。 本研究は、それらの最適化技術の正当化を統一的に行うための 解析の枠組みを提案するものであり、 個々の解析を否定するものではないということは、 当然理解されなければならない。

本研究のアプローチ

インタフェースとは

振舞いを正確に定義するには、 対象とする言語の形式的な定義が必要となる。 振舞いの定義は後で行う。

本研究で提案する最適化コンパイラの枠組み

発表の内容

対象とする並行論理型言語

言語の定義

エージェントの構文

ストアの空間

ストアの空間(例)

計算の例

下のGHCプログラムに相当する計算は、 上のように表現される。

操作的意味論

定義した言語の特徴は以下の通り:

このような定式化をした目的

次のスライドのように、 プロセスの意味を述べるためにCCPの研究が使用できる。

観測物 (observable)

インタフェースを解析で使うための準備

動的な型情報

制約の上方閉包集合

i (X ) を、 青い四角で囲んだ制約から成る集合として定義する。

その他の準備

インタフェースの解析に主導された中間コードの生成

エージェントに対するインタフェースの解析

組み込みのインタフェース

組み込みの中間コード

呼び出しのインタフェースと中間コードの生成例

並列合成に対するインタフェースの解析例

並列合成に対する中間コードの生成例

再帰呼び出しと継続

述語に対するインタフェース

述語に対する中間コード

変数を除去する具体的な方法の説明は割愛する。

インタフェースの定式化

インタフェースの構文

局所的選択の結果(1)

直感的には、 左のエージェントは右のエージェントに コンパイルされても問題無いということを表す。

局所的選択の結果(2)

この例では X=1 という特定の入力を仮定した場合のプロセスの振舞いを扱っていることに注意する。

プロセスが持つインタフェース

(I4) は、以下の解析のための統一的な枠組みを与えている:

統一的に扱うことにより、モジュール性の高い、 効率のよい解析が可能になっている。

インタフェース上の推論

インタフェースを用いたボトムアップな解析

ボトムアップな解析の手順

呼び出しグラフ

呼び出しグラフ

呼び出しグラフ

ボトムアップな解析の手順

並列合成エージェントに対するインタフェースの求め方

圧縮はインタフェース上の推論によって実現される。 個々のインタフェース上の推論の正当化は、 インタフェースの定式化に基づき操作的意味論のレベルで、 あらかじめ証明しておくことができることに注意する。

圧縮することにより、仮定を集約できるようになる。 集約によって仮定が強すぎるようになった場合、 解析の結果が役に立たなくなるため、 生成した中間コードは利用できなくなる。 この場合は逐次化しない通常の実行を行うことになる。 つまり、この集約によってプログラムがデッドロックするようにはならない。 逐次化の説明は次のスライドで行う。

逐次化インタフェース

逐次化インタフェースの解析(例)

生産者と消費者のインタリーブ(例)

インタフェース上の解析によって、 インタリーブの可能性と手順を発見できる。

生産者と消費者のインタリーブ〜中間コード(例)

ボトムアップ解析のまとめ

参考:中間コードの最適化(例)

中間コードの最適化を正当化するには、 中間コードを形式的に定義する必要がある。 これは今後の課題である。

まとめ(1)

まとめ(2)

今後の課題

戻る