Skip to main content
QUICK REVIEW

[論文レビュー] Towards deductive verification of MPI programs against session types

Eduardo R. B. Marques, Francisco Martins|Dec 10, 2013
Distributed systems and fault tolerance参考文献 15被引用数 9
ひとこと要約

本稿では、セッション型を用いたMPIプログラムの帰納的検証のためのフレームワークを提示する。プロトコル仕様をVCC検証可能なCの注釈に変換することで、通信の正しさ(特にデッドロックの不在)を形式的に検証可能にする。ソフトウェア検証ツールを介してセッション型契約をCコードに統合することで、非自明なMPI例において、手動による注釈のオーバーヘッドがコードサイズの5%未塔に抑えられる。

ABSTRACT

The Message Passing Interface (MPI) is the de facto standard message-passing infrastructure for developing parallel applications. Two decades after the first version of the library specification, MPI-based applications are nowadays routinely deployed on super and cluster computers. These applications, written in C or Fortran, exhibit intricate message passing behaviours, making it hard to statically verify important properties such as the absence of deadlocks. Our work builds on session types, a theory for describing protocols that provides for correct-by-construction guarantees in this regard. We annotate MPI primitives and C code with session type contracts, written in the language of a software verifier for C. Annotated code is then checked for correctness with the software verifier. We present preliminary results and discuss the challenges that lie ahead for verifying realistic MPI program compliance against session types.

研究の動機と目的

  • 複雑なMPIプログラムの通信正しさ、特にデッドロックの不在を検証する課題に対処すること。
  • MPIプログラムが事前に定義された通信プロトコルに従うことを保証する、構成的で形式的な手法を提供すること。
  • モデルチェックや動的解析に依存するのを減らし、静的検証ツールを用いた帰納的検証を可能にすること。
  • MPIの集約操作と非同期呼び出しを、検証済みCインタフェースを通じてセッション型と統合すること。
  • 特にループや選択に対して、注釈の自動生成を可能にすることで、手動による注釈作業を最小限に抑えること。

提案手法

  • MPI固有の振る舞いをモデル化するため、集約操作、選択肢、従属関数型を拡張した通信型言語を定義する。
  • グローバルなセッション型プロトコルをVCC互換の項に変換し、通信契約をデータ型と公理として表現する。
  • VCCのrequires/ensures述語と関数契約をMPI Cコードに注釈として付加し、プロトコル準拠を強制する。
  • VCC検証ツールを用いて、各関数の通信動作が指定されたセッション型に準拠していることを確認する。
  • 通信型の型チェックとVCC項の生成を自動化するためのEclipseプラグインを開発する。
  • 非同期MPI操作をサポートするようフレームワークを拡張し、一等級の従属型とfor-each構文を導入して型の表現力を向上させる。

実験結果

リサーチクエスチョン

  • RQ1MPIの集約操作と非同期通信パターンを効果的にモデル化できるように、セッション型を拡張できるか?
  • RQ2C+MPIプログラムにおいて、通信プロトコルの注釈をどの程度自動生成できるか?
  • RQ3この検証手法における手動注釈のオーバーヘッドは、既存のモデルチェックや動的解析手法と比べてどの程度か?
  • RQ4通信ステップ間の依存関係(以前のメッセージ値に基づくもの)を通信型システムが表現できるか?
  • RQ5複雑な制御フローと通信パターンを有する実用的なMPIアプリケーションに対して、検証プロセスのスケーラビリティはどの程度か?

主な発見

  • 本フレームワークは、非自明なMPIプログラム4件(260〜430行のコード)を、最小限の手動注釈で成功裏に検証した。コードサイズの5%未塔という一貫したオーバーヘッドを達成した。
  • 100行あたりの手動注釈の平均数は5未塔であり、関数レベルの事前・事後条件が主に手書き注釈を占めていた。
  • VCCはデュアルコアマシン上で合理的な時間で検証を完了した。1コアと2コアの仮想化環境間で顕著な性能差は認められなかった。
  • 著者らは、ループと選択の注釈を自動生成可能であると特定し、プログラマーの負担を軽減できると判明した。
  • 現在の通信型言語は表現力に制限がある。特に、従属関数型はトップレベルに限定されており、配置に制限がある。
  • Eclipseプラグインを用いて型形成のチェックとVCC項の生成を自動化する開発を進め、今後はfor-each構文と値依存通信のサポートを言語に拡張する計画である。

より良い研究を、今すぐ始めましょう

論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。

クレジットカード登録不要

このレビューはAIが作成し、人間の編集者が確認しました。