JP6205168B2 - 並列構造化重複検出を利用する並列モデル検査のためのシステムおよび方法 - Google Patents

並列構造化重複検出を利用する並列モデル検査のためのシステムおよび方法 Download PDF

Info

Publication number
JP6205168B2
JP6205168B2 JP2013093599A JP2013093599A JP6205168B2 JP 6205168 B2 JP6205168 B2 JP 6205168B2 JP 2013093599 A JP2013093599 A JP 2013093599A JP 2013093599 A JP2013093599 A JP 2013093599A JP 6205168 B2 JP6205168 B2 JP 6205168B2
Authority
JP
Japan
Prior art keywords
search
parallel
abstract
duplicate detection
nodes
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2013093599A
Other languages
English (en)
Other versions
JP2013239163A (ja
Inventor
ロン・チョウ
イーサン・バーンズ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Palo Alto Research Center Inc
Original Assignee
Palo Alto Research Center Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Palo Alto Research Center Inc filed Critical Palo Alto Research Center Inc
Publication of JP2013239163A publication Critical patent/JP2013239163A/ja
Application granted granted Critical
Publication of JP6205168B2 publication Critical patent/JP6205168B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3604Software analysis for verifying properties of programs
    • G06F11/3608Software analysis for verifying properties of programs using formal methods, e.g. model checking, abstract interpretation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/36Software reuse
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/442Shutdown

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Debugging And Monitoring (AREA)
  • Stored Programmes (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本発明は、並列構造化重複検出を利用する並列モデル検査に関する。
モデル検査は、非同期的および分散されたシステムの作製および検証において使用される基本ツールである。例えば、モデルチェッカは、様々な技術、分野および産業で使用される分散ソフトウェアシステムを検証するために使用されることがある。このようなシステムの各コンポーネントにより実行されるアクションは、様々にインタリーブされ得ることから、システムの構成は全体として多数になる可能性がある。
非同期システムの正当性の検証を補助するために、モデルチェッカに加えて、全ての到達可能なシステム構成を列挙することができる抽象モデルが作成されて使用される場合がある。その列挙の間、モデルチェッカは、システムが無効の挙動を呈示していない、または無効状態に達していないことを確実にすることができる。このようなエラーが発見されれば、このようなエラーを導いたアクションのトレースがユーザへ報告して返されることが可能である。新しいシステムを作成してデバッグする場合、このトレース情報は貴重である可能性がある。さらに、モデルチェッカが無効な挙動を発見できなければ、それはシステムが実際に正当なものであることの証拠である。非同期システムの状態としての全ての可能性を列挙するために、一般的なモデルチェッカの多くは、配位空間を、ノードがシステム状態に対応しかつ辺が各コンポーネントの遷移としての可能性である暗に画定されるグラフとして扱う。このグラフを介する軌跡は、システムが実行する場合のあるアクションをインタリーブする1つの可能性を示す。グラフが画定されると、全数探索アルゴリズムが、所定の性質を妨害する状態を探して、システムの到達可能な全ての状態を探索することができる。しかしながら、黙示的グラフでは典型的であるように、存在するノードの数は膨大である可能性があり、探索には桁外れな時間または費用がかかることになる。
さらに、非モデル検査環境において、発見的探索および自動企画コミュニティは、最新のマルチコアプロセッサを利用してそのアルゴリズムの性能を向上させる新しい探索フレームワークの開発においてかなり成功を収めている。さらに、これらのフレームワークは、大型グラフ探索のメモリ要件のかなりの部分をRAMからハードディスク等の外部記憶装置へオフロードすることにおいても功を奏することが示されている。
本明細書に記述している実施形態の一態様において、方法は、システムの状態空間の抽象的表現を作り出すことと、抽象的表現を基礎とする構造化重複検出技法を用いて並列到達可能性分析を実行することと、構造化重複検出技法を用いる並列到達可能性分析の実行を基礎としてシステムの無効な挙動または状態を決定することと、無効な挙動または状態が発見されなければ、システムの正当性を証明することを含む。
本明細書に記述している実施形態の別の態様において、本方法はさらに、無効な挙動または状態を導いたシステム遷移のシーケンスをユーザへ通知することを含む。
本明細書に記述している実施形態の別の態様において、本方法はさらに、共有または分散されたメモリおよび並列処理環境においてモデルチェッカを開始することを含む。
本明細書に記述している実施形態の別の態様では、半順序簡約が保全される。
本明細書に記述している実施形態の別の態様において、抽象的表現を作り出すことは、カレント状態および遷移セットを有する有限オートマトンによって表現される同時プロセスのサブセットを用いることを含む。
本明細書に記述している実施形態の別の態様において、遷移は先行者と後続者との関係性を決定するために使用され、かつ抽象的表現の計算に際してはサブセットのプロセスのオートマトンのみが使用される。
本明細書に記述している実施形態の別の態様において、抽象的表現を作り出すことは、抽象グラフを必要に応じて緩やかに発生することを含む。
本明細書に記述している実施形態の別の態様において、抽象グラフは、処理デバイスの複数のコアプロセッサにより、または1つのコンピュータの複数のプロセッサまたはクラスタ内の複数のコンピュータにより並行して発生される。
本明細書に記述している実施形態の別の態様において、抽象グラフを発生することは、遷移を通じて単一のオートマトンのみが変わることの保証を含む。
本明細書に記述している実施形態の別の態様において、計算システムは、検証されるべきシステムの状態空間の抽象的表現を作り出すための手段と、抽象的表現を基礎とする構造化重複検出技法を用いて並列到達可能性分析を実行するための手段と、構造化重複検出技法を用いる並列到達可能性分析の実行を基礎として検証されるべきシステムの無効な挙動または状態を決定するための手段とを備える。
本明細書に記述している実施形態の別の態様において、計算システムはさらに、無効な挙動または状態を導いたシステム遷移のシーケンスをユーザへ通知するための手段を含む。
本明細書に記述している実施形態の別の態様において、計算システムはさらに、モデルチェッカを開始するための手段を含む。
本明細書に記述している実施形態の別の態様において、計算システムは、検証されるべきシステムの状態空間の抽象的表現を作り出し、抽象的表現を基礎とする構造化重複検出技法を用いて並列到達可能性分析を実行し、かつ並列する構造化重複検出技法の実行を基礎として検証されるべきシステムの無効な挙動または状態を決定するように動作可能な少なくとも1つのプロセッサと、構造化重複検出技法を用いる並列到達可能性分析を実行するためにプロセッサと相互作用するように動作可能な記憶デバイスとを備える。
本明細書に記述している実施形態の別の態様において、少なくとも1つのプロセッサは、複数のコアプロセッサを有するプロセッサを備える。
本明細書に記述している実施形態の別の態様において、少なくとも1つのプロセッサは、複数のプロセッサを備える。
本明細書に記述している実施形態の別の態様において、複数のプロセッサはネットワーク内に分散される。
本明細書に記述している実施形態の別の態様において、記憶デバイスは内部および外部メモリデバイスを備える。
本明細書に記述している実施形態の別の態様において、記憶デバイスは入力/出力効率を向上させるように構成される。
本明細書に記述している実施形態の別の態様において、記憶デバイスはソリッドステートデバイスまたは磁気ディスクを備える。
図1Aは、本明細書に記述している実施形態によるPSDD技術を示す図である。 図1Bは、本明細書に記述している実施形態によるPSDD技術を示す図である。 図2は、実験結果を示す図である。 図3Aは、実験結果を示す図である。 図3Bは、実験結果を示す図である。 図4Aは、実験結果を示す図である。 図4Bは、実験結果を示す図である。 図4Cは、実験結果を示す図である。 図4Dは、実験結果を示す図である。 図5Aは、実験結果を示す図である。 図5Bは、実験結果を示す図である。 図5Cは、実験結果を示す図である。 図5Dは、実験結果を示す図である。 図6は、本明細書に記述している実施形態によるシステムを示す図である。 図7は、本明細書に記述している実施形態による方法のフローチャートである。
例えばSpinモデルチェッカであるモデルチェッカのための2つの並列幅優先探索技術について説明する。モデルチェッカは、実際のアプリケーション、産業および技術において実装される、ソフトウェアシステム(例えば、分散ソフトウェアシステム)等のシステムを検証するために使用される。Spinモデルチェッカが、周知かつ効率的なシステムであることを理解されたい。例えば、Spinモデルチェッカは、例えばフラッド制御、呼処理ソフトウェア等の通信ソフトウェア、宇宙探査に使用されるソフトウェア、自動車分野における制御ソフトウェアおよび医療デバイス分野におけるソフトウェア等を目的として制御アルゴリズムを検証するために使用されているという報告がなされている。しかしながら、本明細書において、Spinモデルチェッカは単なる一例として使用されるものである。本明細書に記述している実施形態に関しては、任意の適切なモデルチェッカが使用されてもよい。先に述べた技術のうちの第1の技術は、ハッシュ分散方式の幅優先探索(HD−BFS)と呼ばれるハッシュ分散Aの幅優先探索実装であり、もう一方の技術は並列構造化重複検出と呼ばれる。
しかしながら、本明細書に記述している実施形態によれば、PSDDは、モデル検査に適用される場合にはハッシュ分散方式の探索を凌ぐ優位点を有する。第1に、HD−BFSは遅延式の重複検出を使用し、かつ重複探索ノードを、これらがスレッド間で通信される間に一時的に格納しなければならない。PSDDは重複状態を、これらの発生直後に検出することができ、よって、これらを格納するために余分なメモリを用いる必要をなくする。第2に、PSDDはモデルチェッカ(例えば、Spin)の半順序簡約−モデルチェッカにより探索空間のサイズを縮小するために使用される技術−を実行する能力を保全することができる。これは、複数のスレッドを用いる場合、PSDDはしばしば、共に半順序簡約の実行に際してはより保存的でなければならないHD−BFSおよびマルチコア深さ優先探索(上述のSpinモデルチェッカ等のモデルチェッカに組み込まれるもの等)の双方よりも遙かに狭い空間を検出できることを意味する。全体として、私達が行った実験の結果は、PSDDがHD−BFSおよび最新技術のマルチコア深さ優先探索の何れよりも高速であり、かつより大きな並列速力増加を達成できることを実証している。
幅優先探索の性能を向上させることに加えて、結果の中には、PSDDが、外部記憶デバイスを利用することによってモデル検査のメモリ要件をも如何にして首尾良く減らすことができるかを実証するものがある。ある実験では、PSDDは、ハードディスクを用いて内部メモリを補う場合に探索のメモリ要件を500%余りも縮小することができる。
深さ優先検索対幅優先探索
最も広く知られるグラフ探索アルゴリズムのうちの2つは、深さ優先探索と幅優先探索である。深さ優先探索は、グラフ内の後続ノードを最深優先順序で発生させる(後続ノードの発生を「ノード拡張」と呼ぶ)。これは、最も新しく発生されたノードが次の拡張されるノードとなることを意味する。一方で、幅優先探索は最浅優先順序でノードを拡張する。例えば、Spinは、安全性(典型的には、望ましくない何かは発生しないことを検証するために使用される)および活性(典型的には、望ましい何かはいつか必ず起こることの検証に使用される)の双方を検査できることからデフォルトで深さ優先探索を使用するが、Spinの幅優先探索アルゴリズムは安全特性しか検証することができない。
幅優先探索は、モデルが安全性を侵害すれば最短の反例を発見することが保証されることから、モデル検査にとって重要である。これは、非同期システムの重要な特性の多くは安全性であることから重大であり、よってシステムのデバッグに際しては、システムが望み通りに行動しない理由を決定するためにモデルチェッカによって反例が提供されることを理解しなければならない。深さ優先探索は、状態空間において1つのノードに到達するために使用されるステップ数に留意せず、よって、ステップ数が不要にかなり長い反例を生成する場合がある。これらの長いトレースは、多くの不要な遷移を含む場合があることから、解釈が極めて困難である可能性がある。これを視野に入れると、あるモデルにおいて私達は、深さ優先探索はデッドロックを発見して9,992ステップより成るトレースをもたらすが、幅優先探索はそのデッドロックのトレースを42という考え得る最小数のステップで発見することを観察している。
幅優先探索を活性の検証に直に用いることはできないが、活性検査問題を、続いて幅優先の到達可能性分析によって検証されることが可能な安全性検査問題へ効率的に遷移させる取り組みはなされている。深さ優先探索固有の順次的性質を所与として、深さ優先ではなく幅優先戦略を用いる活性検査は、最新のマルチコアプロセッサのより大幅な並列速力増加のより良いてこ入れを行うことができる。
ハッシュ分散方式の幅優先探索
この研究における私達の関心は、安全性をより迅速に検証するためにモデル検査の幅優先探索の性能を向上させることにある。グラフの並列探索を成功させるためには、グラフは、探索を実行する各スレッドがグラフの独立した一部分に作用できるようにして分割されなければならない。これを達成する単純な方法は、グラフのノードをハッシュ関数で静的に分割することである。このフレームワークは、ハッシュ分散方式の探索と呼ばれる。
私達は、HDAアルゴリズムを幅優先探索へ適応させた。この新しいアルゴリズムを、ハッシュ分散方式の幅優先探索(HD−BFS)と呼んでいる。これは、ノードをハッシュ関数により異なるスレッド間に分散させることによって、HDAとして進行する。各HD−BFSスレッドは1対のキュー、即ち現行で探索されている深さ層におけるノードのための1つのキュー、および後続者が配置される次の深さ層のための1つのキュー、を用いる。各スレッドは、探索が同じノードへ複数回拡張しないように使用される、それまでに訪問した全てのノードを含むハッシュテーブルも有する。探索に際して、スレッドは次のノードを現行の深さ層のキューから拡張し、かつその拡張するスレッドに割り当てられる後続者はハッシュテーブルに照らして検査され、重複していなければ次の深さ層のキューの後部に置かれる。拡張するスレッドに割り当てられない後続者は何れも、適切な近傍スレッドへ、近傍スレッドの到来するキューに配置することによって送られる。ある実装において、私達は、ノードを遠隔スレッドの到来するキューに非同期的に配置できるように通信スキームを用いた。
周期的に、各スレッドはその到来するキューを、ハッシュテーブルにおけるメンバーシップに関して試験される新しいノードについて検査し、これらの新しいノードは、重複するものでなければ受入側のスレッドによって次の深さ層のキューに配置される。どのスレッドもその現行の深さ層にノードを持たず、かつ全ての通信キューが空である場合、スレッドはその次のキューをその現行キューと同期しかつスワップして探索を次の深さ層へ移動させる。次の深さ層へのスワップ後にオープンノードが存在しなければ、探索空間は使い果たされていて、アルゴリズムは終了する。
欠点
ハッシュ分散方式の探索がモデル検査に適用される場合の主たる欠点は、2つ存在する。第1に、ハッシュ分散方式の探索は、重複ノードがスレッド間で通信される際に重複ノードの検出を遅延させる。ノードは、別のスレッドへ送られると、そのスレッドの受入側のキューに配置され、最終的に受け入れられて受入側のスレッドのハッシュテーブルに照らして検査されるまでそこに留まる。重複ノードのこの遅延される検出は、重複ノードがそのメモリを再使用のために即座に解放する代わりに受け入れキュー内に存在することに起因して、探索にさらなるメモリを必要とさせる。やがて分かるように、遅延する重複ノード検出によって生み出される余分なメモリオーバーヘッドはかなりのものになる可能性がある。
ハッシュ分散方式の探索の第2の欠点は、半順序簡約を適用する際には保存的でなければならないことにある。半順序簡約は、モデル検査において探索グラフのサイズを縮小するために使用される技法である。半順序簡約では、グラフ内のノードの拡張に際して後続者のサブセットのみが検討される。半順序簡約によって幅優先探索を実行する場合、Spinは、完全性を保証できない場合の簡約を防止するためにQ provisoと呼ばれる試験を用いる。ノードの拡張に際してQ provisoが満たされなければ、ノードは全体に拡張されなければならず、簡約は行われない。Q provisoとは、ノードの後続者の発生に際して、後続者の何れかが幅優先探索キューに存在している、または配置されていれば簡約を行うことができ、そうでなければ、完全な拡張が発生しなければならない、というものである。この単純な試験は、安全性の障害およびデッドロックを探索する場合に、幅優先探索が半順序簡約の下で完全であり続けることを可能にする。
ハッシュ分散方式の探索では、拡張するスレッドに後続状態が割り当てられなくてもよい。割当てが発生する場合、拡張するスレッドは、後続状態がキューに存在するか、キューへ向かって進むかを試験する能力を保有しない。完全性を保全するために、HD−BFSは保存的でなければならならず、かつ近傍スレッドへ送られるノードがQ provisoを通過しないことを想定しなければならない。これは、簡約のためにスレッドはスレッド自体に割り当てられかつQ provisoも通過する後続状態を発生しなければならないことに起因して、半順序簡約を成功裏に実行する機会を減らす。スレッドの数が多いほど、拡張するスレッドに後続状態が割り当てられない機会は多くなる。これは、スレッドの数が増加するにつれて、そうでなければ半順序簡約を適用できるモデルに対する探索空間のサイズが増大することを意味する。これに起因して、複数のスレッドを用いるHD−BFSの性能は、完全性を保証するために膨大な空間を探索しなければならないことから、事実上、連続的な幅優先探索よりも悪くなる可能性がある。
抽象ベースのハッシュ法
ハッシュ分散方式の探索に関わる先に述べた問題点は共に、スレッドへノードを割り当てるために使用されるハッシュ関数はノードを均一に分散するように設計されるという事実に由来する。これは、後続ノードが拡張するスレッドへ割り当てられることをまれにする。Burns et al.(2010年)は、この問題点を軽減するために使用できるハッシュ分散方式の探索の修正を提示している。ノードを均一に分散するハッシュ関数を用いる代わりに、準同形の抽象化関数を用いてノードをより構造化された方法で分散することができる。慎重に作成される抽象化を用いる場合のこの手法の優位点は、探索ノードの後続者にその親と同じ抽象ノードへマップする傾向があり、よって、これらは拡張するスレッドへ割り当てられることにある。欠点は、探索負荷がスレッド間で均等に平衡され得ないことである。Burns et al.は、均一に分散されるハッシュ関数の代わりに抽象化を用いることで、パズル解法および企画問題に対するHDAの性能を大幅に向上させ得ることを示している。
モデル検査にとって、より少ない通信はメモリに存在する重複ノードがより少ないことを意味し、かつ半順序簡約を実行する機会がより多いことをも意味する。やがて分かるように、この手法は、メモリ要件およびハッシュ分散方式の探索により探索される探索空間のサイズを大幅に低減することができる。残念ながら、ノードがもはやスレッド間で均等に分散されないことに起因して、(私達がAHD−BFSと呼ぶところの)HD−BFSのこの抽象化ベースの実装は、異なるスレッド数に関して極めて脆弱な性能をもたらす。ノードは不均一に分散される傾向があり、スレッドによって作業が極めて混み合うものも欠乏するものも生じる。この挙動は、利用可能な並列性を完全に活用する探索の能力を妨げる。
並列構造化重複検出
本明細書に記述している実施形態によれば、ハッシュ関数を用いて先験的にノードをスレッドへ割り当てる代わりに、スレッドが探索努力を動的に分割できるようにする並列構造化重複検出(PSDD)と呼ばれるフレームワーク等の構造化重複検出技法を用いる並列到達可能性分析が使用される。PSDDは、準同形の抽象化を用いて探索グラフ内のノードを探索グラフの抽象的表現におけるノードへマップする。抽象化は、典型的には各探索ノードの状態情報の幾つかを投影することによって作成される多対1マッピングである。探索ノードがマッピングされる抽象ノードは、抽象化されている探索ノードの画像と呼ばれる。抽象グラフは次に、探索グラフにおける一辺により接続される2つの探索ノードの画像であるあらゆる抽象ノードペア間の辺を加えることによって接続される。
探索を実行するために、抽象グラフ内の各ノードは、所定の抽象ノードへマッピングする探索グラフのオープンノードを含む2つ(1つは現行の深さ層のためであり、もう1つは次の層のため)のキューを有する。各抽象ノードは、抽象ノードへマッピングされる、既に拡張されている全ての探索ノードのハッシュテーブルも含む。スレッドは、単一の抽象ノードに関してオープン探索ノードの全てを一度に拡張するためのアクセスを獲得する。このような探索ノードの後続者は、同じ抽象ノードへマップするか、抽象グラフにおける後続者のうちの1つへマップするかの何れかである。抽象ノードおよびその後続者への排他的アクセスを主張することにより、スレッドは抽象ノードから拡張することができ、かつ発生される後続者について、それが排他的アクセスを有するデータ構造のみを用いて即時的な重複検出を実行することができる。私達は、抽象ノードおよびその後続者に対するノードの集合を重複検出スコープまたは単にスコープと呼ぶ。
図1Aにおける画像10は、薄い灰色の例示的なグラフ12と、その上に濃い黒色で描かれた前記グラフの可能な抽象化14とを示している。この抽象化14は、ノード16等のノード4つの集合をグループ化している。抽象グラフにおけるノード20およびノード22等の各抽象ノードペア間には辺18等の辺が存在し、この辺18に対して、その下にあるグラフには一片で接続されかつその画像が個々の抽象状態に対応するノードペアが存在する。図1Bにおける画像50は、このグラフにおける、各々が灰色のノードによって画定されかつ点線により包囲される2つの重複検出スコープ52、54を示している。双方の重複検出スコープは、灰色のノードと、抽象グラフ14においてその後続の画像へマッピングされる全てのノードとから成る。灰色のノードのうちの任意のノードを拡張する場合、全ての後続ノードは、同じ重複検出スコープ内に存在するノードに対応する。
並列探索を実行するために、異なるスレッドは各々、抽象グラフを用いて、他のスレッドにより使用されているものと重ならない重複検出スコープを位置決めする。これらの互いに素な重複検出スコープは、ノードが拡張されている期間中に通信を要求することなく並行して探索されてもよい。このスキームで、スレッドが同期しなければならない唯一の場合は、複数のスレッドが抽象グラフへのアクセスを同時に要求するときである。抽象グラフへのアクセスを順番に並べるために必要なミューテックスは1つだけであり、抽象グラフに対する作用は迅速になりやすい。
図1Bに示されている2つの重複検出スコープは、ノードを何ら共有しないことから互いに素である。
あるスレッドが全てのオープン探索ノードを拡張してその現行抽象ノードへのマッピングを完了すると、スレッドは次に、その重複検出スコープを解放してそのスコープ内の全ての抽象ノードを自由に最獲得されるものとしてマーキングする。次に、スレッドは探索する新しいスコープの獲得を試行することができる。現行深さにおいてオープン探索ノードを有する自由なスコープが存在しなければ、新しいスコープの獲得を試行するスレッドは、別のスレッドが拡張を終了してその抽象ノードを解放するまで待機しなければならない。この待ち時間は、十分に多い互いに素な重複検出スコープを有するより微細な粒状にされた抽象化を用いることによって短縮されることが可能である。実際には、私達は、抽象化が、典型的には待ち時間が取るに足らないものになるような十分な大きさにされ得ることを発見している。
最終的には、現行の深さ層においてオープン探索ノードが使い果たされてくるにつれて、他のスレッドは抽象ノードが自由になるのを待機していることから、アクティブに探索しているスレッドは1つしか存在しなくなる。待機していない最後のスレッドがその重複検出スコープを解放し、かつオープンノードを有する自由なスコープが存在しないことを発見すると、このスレッドは探索を次の深さ層へ進める。これを行うために、各抽象ノードの現行キューと次のキューとがスワップされ、これらの新しい現行層においてオープンノードを有する全ての抽象ノードが自由であるとマーキングされ、待機スレッドが覚醒され、探索が再開される。新しい深さ層がオープン探索ノードを含んでいなければ、探索空間は使い果たされていて、スレッドは終了することができる。
明確さおよびさらなる説明のために、そこで列挙されているように、抽象ノードy=p(x)を状態空間射影関数p($)の下のノードxの画像であるものとし、かつ後続者(y)を抽象状態空間グラフにおけるyの後続抽象ノードの集合であるものとする。すると、次のような定義および定理が与えられる。
定義1:ノードxおよびxの重複検出スコープは、xの画像の後続者集合が抽象グラフにおけるxの画像の後続者集合から素であれば、即ち、後続者(p(x))∩後続者(p(x))=φであれば、状態空間射影関数p($)の下で素である。
定理1:2つのノードは、それらの重複検出スコープが互いに素であれば、共通の後続者ノードを共有することができない。
定理1は、並列グラフ探索において必要とされる同期演算の数を減らすためにてこ入れされることが可能な重要な保証を規定している。具体的には、複数のスレッドが、通信を必要とすることなしに、互いに素な重複検出スコープに相当する、グラフの互いに素な部分を探索することができる。HD−BFSとは異なり、PSDDにおいて、重複状態が発生するとすぐに検出される。
データ局所性を強化するために、PSDDは、発生されかつ格納されるノードの集合を、SDDの場合のように各抽象ノードにつき1ブロックのn個のブロックに分割する。同じn番目のブロック内のノードは同じ重複検出スコープを共有することから、定義1および定理1は、個々のノードに対して成立することに加えてn個のブロックに一般化される。互いに素な重複検出スコープの概念は、互いに素な重複検出スコープを有するn個のブロックを異なるプロセッサへ割り当てることによってグラフ探索を並列化するために使用される。これは、1つのプロセッサが別のプロセッサによって発生される可能性もある後続者ノードを発生することは不可能であることに起因して、複数のプロセッサが互いに同期する必要なしにノードを並行して拡張することを可能にする。
あるプロセッサへノード拡張のためにn番目のブロックが割り当てられる場合、このプロセッサには、そのn番目のブロックの重複検出スコープにおけるn個のブロックの全てに対する排他的アクセスが与えられることに留意されたい。よって、割り当てられるn番目のブロックの重複検出スコープはそのプロセッサによって占有されると言うことができる。これは、割り当てられるn番目のブロックの後続者を発生する間、そのプロセッサは、アクセスする必要があるn個のブロックに関して競合する他のプロセッサについて懸念する必要がないことを意味する。
PSDDは、ハッシュ分散方式の探索を凌ぐ優位点を少なくとも2つ有し、即ち1)PSDDの場合、新しい重複検出スコープを解放しかつ獲得する際にスレッドは単に抽象グラフへのアクセスを同期するだけでよいことから、スレッド間の同期数は少なくなる場合があり、2)重複の検査は、余分なメモリを用いて重複ノードを格納した後に初めてハッシュテーブルとの照合が可能にされる代わりに、即座に実行されることが可能である。
PSDDは、モデル検査へ適用される際には追加的な利点を提供する。即ち、これは、半順序簡約の実行に際して保存的である必要がない。HD−BFSは、拡張するスレッドに後続者が割り当てられなかった場合には、後続者ノードが幅優先キューに存在するかどうかの試験へのアクセスを有していなかったことを想起されたい。しかしながら、PSDDでは、拡張するスレッドは、その拡張の起点である抽象ノードの重複検出スコープに関して、データ構造体への排他的アクセスを有する。これは、PSDDは、それが発生しつつある後続者がQ provisoを通過するか同化を試験することができ、よって半順序簡約の実行に際して保存的である必要がないことを意味する。これは、多くのモデルに関して、PSDDにHD−BFSおよびSpinのマルチコア深さ優先探索の双方を凌ぐ大きな優位点を与える。
モデル検査のための抽象化
PSDDは、空間の局所構造を活用するために状態空間グラフの抽象的表現に依存する。Spinの場合、探索空間内の各状態は、その実行がモデリングされつつあるプロセスの集合より成る。各プロセスは、カレント状態および遷移集合を有する有限オートマトンによって表現される。私達がPSDDの実装において用いた抽象化は、任意の状態を所与として、プロセスIDの部分集合のプロセスタイプおよびオートマトン状態のみを考察する。例えば、0〜6を付番された7つのプロセスを有する状態について考察されたい。可能な抽象化の1つは、プロセスの1つの部分集合のみ、例えば最初の2つのプロセスIDのオートマトン状態のみを考察することである。これは、プロセスID2〜6を効果的に「投影」し、抽象ノードの遙かに小さい集合をもたらす。次には、有限オートマトンの遷移を用いて、抽象グラフにおける先行者/後続者関係を決定する。ノードとその後続者との間では単一コンポーネントのオートマトンの状態のみが遷移することから、抽象グラフにおける後続者は、プロセスIDの、抽象化において除去されていない考え得る全ての単一遷移である。抽象グラフを計算する場合、起きてはならない性質の記述は抽象化によって考察されず、よって、単一コンポーネントのオートマトンのみが遷移を通じて変わることが保証される。効率化のために、私達は探索の間、抽象グラフを必要に応じて緩やかに発生させている。これは、実際に使用されるグラフ部分のみをインスタンス化するという利点を提供する。この緩やかな構成には、グラフの構成を、前処理ステップとして連続して行う代わりに、(例えば、処理デバイスの複数のコアプロセッサ、またはコンピュータの複数のプロセッサまたはネットワークまたはクラスタ内の複数のコンピュータを用いて)探索の実行と並行して行うという追加的な利点もある。
実験結果
本項では、2つの並列幅優先探索方法を評価するために実行した実験セットの結果について述べる。さらに、適用可能であれば、Spinの内蔵式マルチコア深さ優先探索との比較を行う。私達の実験に用いたマシンは、各々が6個のコアを有する2つの3.33GHz Xeon 5680プロセッサと、96GBのRAMとを有する。
マルチコア深さ優先探索
Spinは、最新技術のマルチコア深さ優先探索アルゴリズムを含む。このアルゴリズムは、探索を実行する各スレッドをリングに接続する。ノードは、リングを回って1つのスレッドから別のスレッドへ一方向に通されてもよい。よって各スレッドは、ある特定の深さ間隔内に含まれる全てのノードを拡張する働きを担っている。あるノードの後続者が現行スレッドに割り当てられる間隔に含まれない場合、新しく発生される後続者は、共有されるメモリキューを用いてリング沿いの近傍スレッドへ通されなければならない。この近傍スレッドは、次に、キューからノードを受け入れかつこれらの拡張を開始してもよい。この技法を用いて、HolzmannおよびBosnackiは、設定されたベンチマークモデル上の2つのスレッドにおいて1.6倍を超える速力増加、および参照モデル上の2つのスレッドで、調整可能パラメータセットを提供するほぼ完璧な線形速力増加を達成することができた。しかしながら、その結果において、彼らは、この技法が、半順序簡約の実行に際して保存的でなければならないことを示している。よって、半順序簡約が使用される場合、マルチコア深さ優先探索の性能は、HD−BFSの場合と同様に、事実上直列探索より悪くなる可能性がある。
以下の実験では、安全性に対する障害を含まないモデルに対するSpinのマルチコア深さ優先探索と比較する。障害を有するモデルに対する深さ優先探索との比較は、特性障害が部分最適経路を介して発見されるという理由で行わない。幅優先探索は、最適長さのトレースのみを返すように制約されることから、著しく大量の作業を実行しなければならず、比較が不正にされる。しかしながら、特性障害のないモデルに対しては、全てのアルゴリズムが探索空間を使い果たさなければならず、よって、比較し得る量の探索が行われる。
Spinは、異なるモデルで探索性能を調整すべく微調整される場合のある多くのパラメータを提供する。私達は、全てのモデルに関する以下のオプションによってマルチコア深さ優先探索をコンパイルした。
‐DFULL_TRAIL−DSAFETY−DMEMLIM=64000
個々のモデルについて、デフォルトパラメータセットによる実行後にSpinにより推奨された任意の追加パラメータも用いた。
PSDDの即時的重複検出の効果をHD−BFSの遅延される重複検出と比較するために、2つのアルゴリズムのメモリ使用量を比較した。私達の仮説は、HD−BFSには、受け入れるスレッドによってハッシュテーブルとの照合による検査を行えるまでに、通信の間に重複探索ノードを格納するためにより多くのメモリが必要になる、というものであった。この実験用に選択するモデルは、10人の哲学者による古典的な食事する哲学者の問題のモデルである。このモデルは、古典的なデッドロック状況を回避するように構成され、よって、探索空間全体が探索アルゴリズムによって使い果たされる。これは、エラーを含むモデルを探索する際に遭遇される場合がある均衡破りの効果を取り除く。また、このモデルでは、半順序簡約に関わらず全てのアルゴリズムによって同数の状態が拡張され、よって、メモリ使用量の如何なる差異も、必ず重複ノードまたはその欠如の即時的検出に帰属される、と結論することができる。
図2は、10人の哲学者問題に関してSpinにより報告されているメモリ使用量を示す。x軸は、スレッドの番号1−12を示し、y軸は、探索を完了するために使用されたギガバイト数を示す。各線は、各スレッド計数における5回の実行の平均を示し、エラーバーは、その平均の95%信頼区間を示す。幅優先探索は1つのスレッドしか使用しないが、私達は、比較を容易にするために、その単一スレッドの性能のラインをx軸に渡って拡張している。
この図から、幅優先探索およびPSDDは3ギガバイト未満のメモリを用いたことが分かる。PSDDのメモリ使用量は、探索を実行したスレッド数においてほぼ一定のままであった。しかしながら、HD−BFSは、このモデルに対して、2つ以上のスレッドを用いて実行した場合に著しく多いメモリを必要とした。HD−BFSが必要としたメモリ量は、スレッド数が追加されるにつれて急激に増大し、6個のスレッドで平らになった。先に言及したように、これは、HD−BFSには、通信の間、重複ノードを即時検出する代わりにメモリへ格納する必要があったという事実に帰属されることが可能である。スレッド間通信における簡約に起因して、AHD−BFSが用いたメモリはHD−BFSより少ないが、3つ以上のスレッドではやはり幅優先探索およびPSDDより多いメモリを必要とした。
ここに示した結果以外にも、私達は、実験で用いた全てのモデルに対して、HD−BFSがより多いメモリを必要としたことを観察した。おそらくは、これは重複ノードに起因するものであるが、他のモデルでは、次に理解することとなるように、保存的な半順序簡約も1つの要因である場合がある。
保存的な半順序簡約の効果
ハッシュ分散方式の探索およびSpinのマルチコア深さ優先探索が保存的な半順序簡約に起因して被る性能劣化を評価するために、オペレーティングシステム「Plan 9 from Bel Labs」からのセマフォ実装モデルを用いて実験を実行した。このモデルのための状態空間サイズは、半順序簡約を実行できるかどうかに依存して約3までの係数で変更が可能である。このモデルが特に興味深い理由は、先の実験に使用された哲学者モデルとは異なり、セマフォモデルが実世界のモデル検査問題から採用されたことにもある。
図3Aおよび図3Bは、セマフォを目指して競う4つの別々のプロセスを有するセマフォモデルに対して、PSDD、HD−BFS、幅優先探索およびSpinのマルチコア深さ優先探索により拡張された状態数およびメモリ量を示す。プロットのフォーマットは、図2のそれと同じである。このモデルの配位空間を使い果たすために拡張されたノード数は幅優先探索が最も少なく、かつ使用されたメモリも幅優先探索が最も少なかったことが分かる。PSDDが拡張したノード数は、幅優先探索より僅かに多かった。PSDDと幅優先探索とで拡張したノード数に差が出た理由は、これらがノードを同じ深さ層内でも異なる順序で拡張し得ることにある。均衡破りのこの差は、半順序簡約に僅かに影響を与える可能性があり、拡張されるノード数が僅かに増す、または減ることになる。
1つのスレッドでは、HD−BFSは、他の何れのアルゴリズムともほぼ同数のノードを拡張し、かつほぼ同量のメモリを使用した。しかしながら、スレッド数が増すにつれて、HD−BFSが必要とする拡張数およびメモリは急激に増大し、約5個のスレッドにおいて平らになってPSDDおよび幅優先探索が必要とした拡張数の2倍以上に達した。急な増加の理由は、より多くのスレッド間でノードが分割されるにつれて、HD−BFSがより多くの通信を必要としたことにある。ノードが通信されるたびに、探索は、半順序簡約を実行できないものと保存的に想定し、よって、他の2つのアルゴリズムによって遂行されていない多くの冗長経路が探索された。またプロットは、これと同じ効果がSpinのマルチコア深さ優先探索に発生することも示している。深さ優先探索はHD−BFSと同様に保存的な半順序簡約によって害され、2つ以上のスレッドでは、PSDDおよび幅優先探索より遙かに多い状態を拡張した。またHD−BFSは、12個のスレッドで実行された際にはほぼ80GBのメモリを必要とした。
全体性能
次に、4つのモデルに対する異なるアルゴリズムの並列速力増加および壁時計時間に関わる全体性能を示す。共に抽象化を必要とするPSDDおよびAHD−BFSについては、投影において実験的に使用されるプロセッサIDの一定のサブセットを選ぶ。各モデルに対して、小値のn(7まで)による手動選択のプロセスIDシーケンスの小集合0−nおよび1−nを用いてこれらのアルゴリズムを実行した。各モデルで最良の性能をもたらしたシーケンスが、次の比較で使用された。私達は、このような単純な抽象化を用いた場合の次の結果におけるPSDDにより示された優れた性能は、PSDDに対する優れた抽象化の発見が困難なタスクではないことの強力な証拠であると考える。
図4A〜図4Dは並列速力増加を示し、図5A〜図5Dは、各アルゴリズムが1〜12個のスレッドを用いる4つの異なるモデルの各々の探索に必要とした合計壁時計時間を示す。先のプロットの場合と同様に、各ラインは5回の実行の平均性能を示し、エラーバーは95%信頼区間を示す。x軸は使用されたスレッド数1〜12を示し、かつこの場合も、各プロットのx軸に幅優先探索の性能が描かれている。但し、幅優先探索は線形的にしか行われていない。使用されたモデルは、哲学者が10人でデッドロックのない食事する哲学者の問題、哲学者が15人で、42ステップで到達可能なデッドロックを有する食事する哲学者の問題、4プロセスが競合するPlan 9セマフォ、およびSpinが幅優先探索の場合に完全性を保全しないと訴えることからランデブーを回避するように修正された、72ステップで到達可能なライブロックを含むGNU i−プロトコルモデルの0レベル抽象化であった。Spinのマルチコア深さ優先探索アルゴリズムは15人の哲学者モデルまたはi−プロトコルモデルについて示されていないが、これは、両者が、深さ優先探索が最短の反例を発見せず、よって比較可能な量の探索を実行しないエラーを示すためである。
図4A〜図4Dは、x軸上に与えられたスレッド数に関して必要とされる時間で割った単一スレッド時間として計算された、PSDD、HD−BFS、AHD−BFSおよび深さ優先探索の並列速力増加を示している。速力増加は、そのアルゴリズムが並列性の増加に伴ってどの程度良好に性能を発揮するかを示すことから、おそらくは並列アルゴリズムを比較する場合の最も重要な測定基準の1つである。各々の速力増加プロットにおける対角線は、典型的には実際に達成できない完璧な線形的速力増加を示しているが、有益な参照点を提供することができる。アルゴリズムの性能が対角線に近いほど、その性能は完璧な線形的速力増加に近い。これらの図からは、全てのモデルにおいて、PSDDが線形的速力増加に最も近づいていることが分かる。実際に、PSDDは、これらのモデルにおいて常に他の並列アルゴリズムより優れた速力増加をもたらした。
図5A〜図5Dは、4つのモデルにおける各アルゴリズムの壁時計時間、即ち実際の経過時間を単位秒で示している。この図から、4つ以上のスレッドでPSDDは、これらのモデルの全てを他のアルゴリズムより迅速に解くことができたことが分かる。「実世界」の2つのモデル、即ちセマフォモデルおよびi−プロトコルモデルでは、HD−BFSは事実上、2つ以上のスレッドを使用する場合に直列幅優先探索より時間を要した。これは、半順序簡約のその保存的使用によって、遙かに大きいグラフを探索することになったためである。Spinのマルチコア深さ優先探索も、この同じ問題によって害されたが、並列性をより良く利用しているように思われ、よって最終的にこれは、5つ以上のスレッドで直列幅優先探索より速かった。最後に、AHD−BFSは、異なるスレッド数に渡って極めて不安定な性能をもたらすことが分かる。私達はこれを、均一なノード分散ではなく抽象化を用いることによる、スレッド間の不良な負荷バランシングのせいであるとする。
外部メモリPSDD
結果は、PSDDがモデル検査問題に対して必要とするメモリはハッシュ分散方式の探索より少なく、かつPSDDは、ハッシュ分散方式の探索およびSpinのマルチコア深さ優先探索の双方より優れた並列速力増加および速い探索時間をもたらすことを実証している。またPSDDは、ハードディスク等の外部記憶装置がコアメモリを補助するために使用される外部メモリ探索アルゴリズムとしても作用することができる。外部メモリPSDD(または略して単に外部PSDD)はPSDDとほぼ同じ働きをするが、抽象ノードが探索スレッドのうちの1つによって使用中でなければ、外部記憶装置へと押しやられることが可能である。これは、探索アルゴリズムのメモリ使用量を、探索グラフ全体のメモリ使用量から、ちょうど各探索スレッドにより獲得される重複検出スコープのサイズにまで減らす。
予備実験として、私達は外部PSDDをSpinに実装し、これをデッドロックのない10人の哲学者モデルを解くために用いた。私達はこれを、RAID 0アレイに構成された8個のコアと4つのディスクとを有するマシン上で実行した。この実験では、標準PSDDが1つのスレッドでモデルを探索するために平均233秒を用いたのに対して、外部PSDDは平均1,764秒を要した(どちらの時間も変動はほとんどなかった)。8個全てのコアを用いる場合、PSDDの探索時間は平均34秒まで減ったが、外部PSDDは、単一のディスクコントローラ上でI/O制御されることから並列性による恩恵を受けなかった。実験に使用されたマシンは単一のディスクコントローラを有し、よって、8個全てのコアを用いる場合、外部PSDDは並列性による恩恵を受けなかった。しかしながら、複数のディスクコントローラを使用すれば、外部PSDDは、I/O並列化を使用する場合に性能向上を示す。しかしながら、外部PSDDの主たる利点は、メモリ使用量を標準PSDDによる2.5ギガバイトから単一スレッドを用いる場合の約0.5ギガバイトまで減らすことができることにある。これは、探索によるメモリ使用量の500%低減である。多くの場合、メモリ要件のこの低減は探索時間の短縮より遙かに重要であり、これは、探索の完了をより長く待機することはより用意であるが、メモリをさらに追加することは不可能である場合があることに起因する。これを理由に、メモリ要件はしばしば、モデルがモデルチェッカによって検認され得るかどうかを決定する限定因子となる。
さらなる論考
予備実験では、外部メモリPSDDが探索のメモリ要件を大幅に低減できることを目にした。しかしながら、外部メモリPSDDに関する不利益は、ハードディスク記憶装置にアクセスしなければならないことから直列探索より遙かに長い時間がかかり得ることにある。私達は、外部PSDDの性能が、I/O並列化を活用すべく複数のRAIDアレイを用いることによって大幅に高められ得るものと推測している。
現行の実装では、外部PSDDは、各スレッドがコアRAMにその固有の重複検出スコープを保有しなければならないことから、2つ以上のスレッドによって実行されると遙かに多くのメモリを用いる。8個のコアを用いる場合、外部PSDDは、ハードディスク記憶装置を全く用いない標準PSDDとほぼ同量のメモリを用いた。この問題を修正するために、重複検出スコープのサイズを単に単一の抽象ノードへマップされる探索状態であるように縮小すべく、エッジパーティショニングと呼ばれる新しい技法が開発されている。エッジパーティショニングは、外部PSDDが、依然として極小メモリフットプリントを有しながら複数のスレッドを用いることを有効化することができる。
これまで、選択される抽象化がPSDDの性能にどのように影響するかについては、詳しく論じていない。私達の実験では、抽象化は、経験的評価により、各モデル上の小さい抽象化集合を用いて選択された。しかしながら、抽象グラフが小さすぎるか、あまりに強く接続されていれば、PSDDは、並列探索を行うに足る数の互いに素なスコープを発見できなくなることから害を受ける可能性がある。私達は、実験に使用された単純な抽象化が十分な量の並列性を提供したことを発見している。しかしながら、最近の研究は、PSDDが、探索時間中に抽象化を変更する動的な探索空間パーティショニングから大きな恩恵を受け得ることを示している。動的なパーティショニングを用いることにより、アルゴリズムは、より平衡されている抽象化を選択することができると思われ、外部探索のピークメモリ要件は減りかつ接続が少なくなり、並行性を活用するその能力は向上する。
デッドロックおよび安全性障害に対して最短のトレースを発見するために、Spinモデルチェッカにおいて幅優先探索を並列化するための2つの技法を比較した。結果は、並列構造化重複検出が、より優れた並列速力増加をもたらしかつ必要とするメモリが著しく少ないことに起因して、ハードディスク記憶装置およびSpinのマルチコア深さ優先探索の双方を凌ぐ利点を提供することを示した。また私達は、外部PSDDが、ハードディスク等の安価な二次記憶装置を利用することによってモデル検査のメモリ要件をさらにもっと減らせることも実証している。CPU性能は実効クロック速度より並列性への依存度が高いことから、ここに提示される技法は、モデル検査が最新ハードウェアの全ケイパビリティをより良く活用することを有効化する。
半順序簡約は、モデル検査において状態空間爆発の問題に取り組むために広く使用される技法である。しかしながら、これを並列化技法と組み合わせることは、これまで難題であった。ここにおいて、私達は、PSDDが並列到達可能性分析に有効であるだけでなく、Spinの半順序簡約アルゴリズムの全能力をも保全することを示す。
以上、並列構造化重複検出(PSDD)を用いてモデル検査を行う手法を開示した。本手法は、探索グラフの局所構造を、重複検出における格納されたノードへのアクセスを同期するためのオーバーヘッドを著しく低減する方法で活用するための互いに素な重複検出スコープの概念をてこ入れする。またこれは、半順序簡約技法が並列到達可能性分析の間に可能な限り極限まで実装かつ/または保全されることも可能にする。
本明細書に記述している概念は、様々な計算システム上で実装されてもよい。先に述べたように、モデルチェッカは、様々な活動領域における様々な環境で実装されてもよい。したがって、本明細書に記述している実施形態も同様に、広範に実装されてもよい。このような計算システム100の一例は、図6に示されていて、本システムは、コンポーネントの中でもとりわけ、モニタ102と、キーボード104と、計算セクション106と、ディスク108等の外部メモリとを含む。計算セクション106は、CPUまたは他の計算コンポーネント110等のコンポーネントと、RAM等の内部メモリ112とを含む。当然ながら、計算セクション106が他のコンポーネントを含んでもよく、かつここに示されているもの以外の構成で設計されてもよいことは理解されるべきである。例えば、計算コンポーネント110は、シングルコアプロセッサを含んでも、マルチコアプロセッサを含んでもよい。実際に、先に述べたプロセッサ例は、各々が6つのコアプロセッサを有する2つのプロセッサを含む。この点に関連して、例えば、各コアプロセッサは、並列処理を達成するために先に記述した単一の互いに素なスコープを処理する。さらに、本明細書に記述している実施形態を実装するために使用されるプロセッサは、ネットワーク構成における異なる計算セクションに分散されてもよい。先に述べた任意の構成において、プロセッサは、少なくとも1つの形式で、後述する方法100を含む本明細書に記述している実施形態により企図される方法を達成すべくコードまたは命令を実行するようにプログラムされてもよい。外部メモリ108は、計算セクション106の外側に存在することから外部的であるとされ、よって結果的にI/O動作は内部メモリ112に比べて遙かに遅くなる。またディスク108は、任意選択のディスク114によって示されているように計算セクション106によって物理的に封入されても、されなくてもよい。例えば、任意選択のディスク114は、ネットワークドライブまたは他のタイプの代替メモリデバイスである場合もある。記述しているこれらのメモリデバイス(またはその他)が、本明細書に記述しているコンピュータ実装方法を実行できるように、計算セクション106および計算コンポーネント110(例えば、多コアまたは多プロセッサ構造を含む)等の処理および/または計算コンポーネントと相互作用するように構成されかつ機能してもよいことは認識されるべきである。この点に関連して、メモリまたは記憶デバイスは入力/出力効率を高めるように構成されてもよく、かつ/または例えばスケーラビリティを高めかつ他の優位点を達成するために互いに(外部記憶補足RAMデバイス等)補足し合ってもよい。この点に関連して、メモリデバイスは、ある形式において、機械読取り可能データおよび/または実行用命令を格納するための非一時的なコンピュータ読取り可能媒体として機能する。また、メモリまたは記憶デバイスは、固体形式または磁気ディスク構成を含む様々な物理的形式を取る可能性もある。
図7は、本出願のPSDD概念を用いるモデル検査のためのプロセスを示すフローチャート100を記したものである。図7に関連して記述される方法は単なる例示であり、よってある形式では、先に図6に関連して述べたような計算システム上で実装されてもよい。ステップ120では、モデルチェッカが(例えば、キーボードからのユーザコマンドによって、または計算セクションによって自動的に)開始される。モデルチェッカは、少なくとも1つの形式において、共有および/または分散メモリおよび並列計算環境において実装される。先に述べたように、様々なモデルチェッカのうちの何れが使用されてもよいが、本明細書において使用される例は周知のSpinモデルチェッカである。モデルチェッカは、記述している様々な記憶デバイスまたは他の記憶デバイスにおける計算システム上へ、本明細書に記述している実施形態による効果的な実装および/またはモデルチェッカの実行を容易にする任意の方法で格納され得ることを理解されたい。様々なモデルチェッカの実装は、モデルチェッカおよび検査されているモデルの関数として変わってもよい。例えば、Spinモデルチェッカの場合、その主たる実行ファイルは、システムまたは検査されているモデルに固有の別のモデルチェッカのCソースコードを生成する自動コード生成器であり、この自動生成されたモデルチェッカがコンパイルされてバイナリ実行ファイルにされると、これはバグの発見またはモデルまたはシステムの正当性の証明の何れかを目的とするモデル検査タスクを実行すべく呼び出されることが可能である。本明細書に記述している実施形態の実装は、Spinの自動コード生成器を、PSDDを実装する追加的Cコードを発するように修正する。したがって、Spin(例えば、自動コード生成器が「Spin」であるとされれば)の開始と(Spinにより生成されるCソースコードの適切なコンパイルの後の)実際のバイナリコードとの間には、モデルまたはシステムの検査に使用される任意選択のコンパイルが存在してもよい。他のモデルチェッカは、この「自動コード生成」手法を用いる必要がある場合も、ない場合もある。
ステップ122では、抽象状態空間グラフをシステム(例えば、検証されるべきソフトウェアシステムまたはモデル)の抽象的表現として形成するために状態空間抽象化が作り出される。例えば、先により詳しく述べたように、抽象化は、任意の状態を所与として、プロセスの一定のサブセットのプロセスタイプおよびオートマトン状態しか考慮しなくてもよい。ある形式では、グラフは、システムを表現する抽象ノード(および/または辺)を含む。抽象状態空間グラフを基礎として、原初の状態空間グラフは、探索プロセスの間にタイミングを計るためにある期間は互いに干渉しない複数の独立した領域に分割される。当然ながら、ある形式では、計算セクション106(任意の計算コンポーネント110および適切なメモリを含む)がこのタスクを達成する。ステップ124では、システム(例えば、検証されるべきソフトウェアシステムまたはモデル)の探索または検証が、構造化重複検出技法(例えば、並列構造化重複検出)を用いる並列到達可能性分析を採用して着手される。この点に関連して、並列構造化重複検出(PSDD)は、先に述べたように実装されても、当業者には明らかとなる他の方法で実装されてもよい。少なくとも1つの形式において、並列構造化重複検出技法は、その間は独立した領域が独立したものとして保全されることが可能な時間量を最大化するために、複数の処理ユニットに渡って探索仕事量を分散する。この時間の間、少なくとも1つの形式において、個々の処理ユニットまたはコアプロセッサは状態空間グラフの部分を並行して探索しかつ検証し、かつ必要であれば適切な記憶エリアを用いてもよい。結論に達するまでノードを拡張することを含む探索または検証が達成されるにつれて、無効な挙動または状態の決定が下される(ステップ126)。この点に関連して、ある形式では、無効な挙動または状態を導いたシステム遷移のシーケンスが決定されてもよい。ある形式では、ユーザは、無効な挙動または状態を導いたシステム遷移のシーケンスを、モニタ102を用いるものを含む任意の様々な既知技術を介して通知される。当然ながら、無効な挙動または状態が発見されなければ、システムの正当性が検証または証明される。これもまた、既知の技術を介して(例えば、モニタ102を介して)ユーザに通信されてもよい。

Claims (9)

  1. システムを検証するための方法であって、
    カレント状態および遷移セットを有する有限オートマトンによって表現される同時プロセスのサブセットを用いて、前記システムの状態空間の抽象的表現を作り出すことと、
    前記抽象的表現を基礎とする構造化重複検出技法を用いて並列到達可能性分析を実行することと、
    構造化重複検出技法を用いる前記並列到達可能性分析の前記実行を基礎として前記システムの無効な挙動または状態を決定することと、
    無効な挙動または状態が発見されなければ、前記システムの正当性を証明することと、を含む方法。
  2. 前記無効な挙動または状態を導いたシステム遷移のシーケンスをユーザへ通知することをさらに含む、請求項1に記載の方法。
  3. 共有または分散されたメモリおよび並列処理環境においてモデルチェッカを開始することをさらに含む、請求項1に記載の方法。
  4. 半順序簡約が保全される、請求項1に記載の方法。
  5. 前記遷移セットは先行者と後続者との関係性を決定するために使用され、かつ前記抽象的表現の計算に際してはサブセットのプロセスのオートマトンのみが使用される、請求項に記載の方法。
  6. 前記抽象的表現を作り出すことは、必要に応じて抽象グラフを生することを含む、請求項1に記載の方法。
  7. 前記抽象グラフは、処理デバイスの複数のコアプロセッサにより、または1つのコンピュータの複数のプロセッサまたはクラスタ内の複数のコンピュータにより並行して発生される、請求項に記載の方法。
  8. 前記抽象グラフを発生することは、遷移を通じて単一のオートマトンのみが変わることの保証を含む、請求項に記載の方法。
  9. 計算システムであって、
    カレント状態および遷移セットを有する有限オートマトンによって表現される同時プロセスのサブセットを用いて、検証されるべきシステムの状態空間の抽象的表現を作り出し、前記抽象的表現を基礎とする構造化重複検出技法を用いて並列到達可能性分析を実行し、かつ並列構造化重複検出技法の実行を基礎として前記検証されるべきシステムの無効な挙動または状態を決定するように動作可能な少なくとも1つのプロセッサと、
    構造化重複検出技法を用いる前記並列到達可能性分析を実行するために前記プロセッサと相互作用するように動作可能な記憶デバイスと、を備える計算システム。
JP2013093599A 2012-05-12 2013-04-26 並列構造化重複検出を利用する並列モデル検査のためのシステムおよび方法 Expired - Fee Related JP6205168B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/470,280 US9098620B2 (en) 2012-05-12 2012-05-12 System and method for parallel model checking utilizing parallel structured duplicate detection
US13/470,280 2012-05-12

Publications (2)

Publication Number Publication Date
JP2013239163A JP2013239163A (ja) 2013-11-28
JP6205168B2 true JP6205168B2 (ja) 2017-09-27

Family

ID=49549480

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013093599A Expired - Fee Related JP6205168B2 (ja) 2012-05-12 2013-04-26 並列構造化重複検出を利用する並列モデル検査のためのシステムおよび方法

Country Status (2)

Country Link
US (1) US9098620B2 (ja)
JP (1) JP6205168B2 (ja)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2015107711A1 (ja) * 2014-01-17 2015-07-23 日本電気株式会社 分散環境モデル用モデル検査装置、分散環境モデル用モデル検査方法及びプログラム
EP3106980A1 (en) * 2015-06-19 2016-12-21 Ecole Nationale de l'Aviation Civile A processing unit, software and method for controlling interactive components
EP3106990A1 (en) * 2015-06-19 2016-12-21 Ecole Nationale de l'Aviation Civile A method, software and processing unit for verifying properties of interactive components
CN105912536A (zh) * 2015-10-23 2016-08-31 乐视致新电子科技(天津)有限公司 一种违章信息查询方法和装置
CN107844415B (zh) * 2017-09-28 2021-02-05 西安电子科技大学 一种基于插值的模型检测路径缩减方法、计算机
US11258585B2 (en) * 2019-03-25 2022-02-22 Woven Planet North America, Inc. Systems and methods for implementing robotics frameworks
US11556370B2 (en) 2020-01-30 2023-01-17 Walmart Apollo, Llc Traversing a large connected component on a distributed file-based data structure

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7539681B2 (en) * 2004-07-26 2009-05-26 Sourcefire, Inc. Methods and systems for multi-pattern searching
US8266600B2 (en) * 2005-03-28 2012-09-11 Nec Laboratories America, Inc. Model checking of multi threaded software
US7805454B2 (en) * 2007-07-18 2010-09-28 Palo Alto Research Center Incorporated System and method for parallel graph search utilizing parallel structured duplicate detection

Also Published As

Publication number Publication date
JP2013239163A (ja) 2013-11-28
US20130304755A1 (en) 2013-11-14
US9098620B2 (en) 2015-08-04

Similar Documents

Publication Publication Date Title
JP6205168B2 (ja) 並列構造化重複検出を利用する並列モデル検査のためのシステムおよび方法
JP5576798B2 (ja) 決定論的マルチプロセッシング(deterministicmultiprocessing)
US8954986B2 (en) Systems and methods for data-parallel processing
Van Dijk et al. Sylvan: Multi-core decision diagrams
US8453120B2 (en) Enhanced reliability using deterministic multiprocessing-based synchronized replication
Van Dijk et al. Multi-core BDD operations for symbolic reachability
Busato et al. BFS-4K: an efficient implementation of BFS for kepler GPU architectures
US9734033B2 (en) Implementing processor functional verification by generating and running constrained random irritator tests for multiple processor system and processor core with multiple threads
Bartocci et al. Towards a GPGPU-parallel SPIN model checker
CN106445631B (zh) 一种布署虚拟机的方法、系统以及物理服务器
US7594195B2 (en) Multithreaded reachability
US20160147516A1 (en) Execution of complex recursive algorithms
Sharma et al. A competitive analysis for balanced transactional memory workloads
Hukerikar et al. An evaluation of lazy fault detection based on adaptive redundant multithreading
US9891655B2 (en) Parallel operation system, apparatus and medium
WO2018144030A1 (en) System and method for identifying maximal independent sets in parallel
Manthey Parallel SAT solving-using more cores
Sharma et al. Window-based greedy contention management for transactional memory: theory and practice
CN116610366A (zh) 基于优先级的gpgpu分支处理架构及方法
Cassee et al. On the scalability of the GPUexplore explicit-state model checker
US20140040907A1 (en) Resource assignment in a hybrid system
Soroushnia et al. High performance pattern matching on heterogeneous platform
Soroushnia et al. Heterogeneous parallelization of Aho-Corasick algorithm
US9280330B2 (en) Apparatus and method for executing code
Becker et al. Patterns for overlapping communication and computation

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20160425

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20170217

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170314

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170530

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20170822

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170904

R150 Certificate of patent or registration of utility model

Ref document number: 6205168

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees