Skip to main content
QUICK REVIEW

[論文レビュー] Symmetry-Aware Predicate Abstraction for Shared-Variable Concurrent Programs (Extended Technical Report)

Alastair F. Donaldson, Alexander Kaiser|arXiv (Cornell University)|Feb 11, 2011
Formal Methods in Verification参考文献 22被引用数 4
ひとこと要約

本稿では、共有変数を共有する並列Cプログラムに対して対称性に配慮した述語抽象化技術を提案し、スレッドの対称性を活用することでスケーラブルなモデルチェックを実現する。本手法は、新たなブールプログラムテンプレートの構築により、ローカル変数と共有変数を含む混合述語を安全に扱う手法を導入し、並列ベンチマークにおいて、不正確または単純なアプローチよりも顕著に性能と正確性を向上させる。

ABSTRACT

Predicate abstraction is a key enabling technology for applying finite-state model checkers to programs written in mainstream languages. It has been used very successfully for debugging sequential system-level C code. Although model checking was originally designed for analyzing concurrent systems, there is little evidence of fruitful applications of predicate abstraction to shared-variable concurrent software. The goal of this paper is to close this gap. We have developed a symmetry-aware predicate abstraction strategy: it takes into account the replicated structure of C programs that consist of many threads executing the same procedure, and generates a Boolean program template whose multi-threaded execution soundly overapproximates the concurrent C program. State explosion during model checking parallel instantiations of this template can now be absorbed by exploiting symmetry. We have implemented our method in the SATABS predicate abstraction framework, and demonstrate its superior performance over alternative approaches on a large range of synchronization programs.

研究の動機と目的

  • スレッドのインタリーブに起因する状態空間の爆発が原因で、共有変数を共有する並列プログラムの検証にスケーラビリティのボトルネックが生じる問題に対処すること。
  • ローカル変数と共有変数の両方を含む混合述語を正しく処理できる、安全な述語抽象化戦略を開発すること。
  • 複製されたスレッド構造における対称性を活用して、モデルチェック中に発生する状態空間の爆発を低減すること。
  • 実際の並列ベンチマークにおいて、不正確または単純な抽象化手法と比較して、優れた性能と正確性を示すことを実証すること。

提案手法

  • 共有変数とローカル変数を含むCプログラムを、述語抽象化を用いてブールプログラムテンプレートに変換する。
  • 変数のスコープに基づいて述語をローカル、共有、または混合に分類し、それに応じてブール変数を割り当てることで、整合性を保つ。
  • 共有述語には共有ブール変数、ローカル述語にはローカルブール変数を用いるが、混合述語に対しては、不正確さを回避するための新しい処理を導入する。
  • 実行が元のCプログラムの振る舞いを過剰近似する多スレッドブールプログラムテンプレートを構築する。
  • スレッドの複製における対称性を活用して、モデルチェック中に状態空間を縮小し、スケーラビリティを実現する。
  • スプライアスな反例を処理できるCEGARベースの精錬を組み合わせたSATABSフレームワークに本手法を統合する。

実験結果

リサーチクエスチョン

  • RQ1共有変数とローカル変数を含む混合述語を含む並列Cプログラムに適用する際、どのようにして述語抽象化を安全に保てるか?
  • RQ2すべての混合述語をローカルまたは共有とみなす単純なアプローチ(例:すべてをローカルとみなす)は、モデルチェックの整合性とスケーラビリティにどのような影響を与えるか?
  • RQ3複製されたスレッド構造における対称性は、並列プログラム検証における状態空間の爆発を効果的に低減するために活用可能か?
  • RQ4実際の並列ベンチマークにおいて、提案手法の対称性に配慮した抽象化は、既存の述語抽象化手法と比較して性能と正確性の点で優れているか?

主な発見

  • 本手法は、混合述語を正しく処理することで、共有変数を共有する並列プログラムに対する安全な抽象化を達成し、不正確なアプローチで一般的に見られるスプライアスな反例を回避する。
  • 対称性に配慮したアプローチにより、従来では不可能だったより多くのスレッド数を有する並列プログラムのモデルチェックが可能になる。
  • 安全なベンチマークでは、不正確な代替手法が失敗または誤った結果を出すのに対し、本手法はより大きなスレッド数で正しさを正当化するのに成功している。
  • 不安全なベンチマークでは、不正確な手法がスプライアスな反例により精錬に失敗するのに対し、本手法はより少ないスレッド数でバグを検出できる。
  • 不正確なアプローチ(混合をローカル/共有とみなす)は頻繁に偽陰性や精錬失敗を引き起こし、検証の信頼性を損なう。
  • SATABSにおける実装は、幅広い同期ベンチマークにおいて実用的なスケーラビリティと正確性を示している。

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

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

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

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