JP4707760B2 - 並列化制約充足問題ソルバにおけるLock−free状態併合 - Google Patents

並列化制約充足問題ソルバにおけるLock−free状態併合 Download PDF

Info

Publication number
JP4707760B2
JP4707760B2 JP2009537409A JP2009537409A JP4707760B2 JP 4707760 B2 JP4707760 B2 JP 4707760B2 JP 2009537409 A JP2009537409 A JP 2009537409A JP 2009537409 A JP2009537409 A JP 2009537409A JP 4707760 B2 JP4707760 B2 JP 4707760B2
Authority
JP
Japan
Prior art keywords
solver
graph
support
state
parallel
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.)
Active
Application number
JP2009537409A
Other languages
English (en)
Other versions
JP2010510591A5 (ja
JP2010510591A (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.)
Microsoft Corp
Original Assignee
Microsoft Corp
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 Microsoft Corp filed Critical Microsoft Corp
Publication of JP2010510591A publication Critical patent/JP2010510591A/ja
Publication of JP2010510591A5 publication Critical patent/JP2010510591A5/ja
Application granted granted Critical
Publication of JP4707760B2 publication Critical patent/JP4707760B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/31Programming languages or programming paradigms
    • G06F8/314Parallel programming languages
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/31Programming languages or programming paradigms
    • G06F8/313Logic programming, e.g. PROLOG programming language
    • G06F8/3135Unification or backtracking
    • 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/01Dynamic search techniques; Heuristics; Dynamic trees; Branch-and-bound
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • G06N20/10Machine learning using kernel methods, e.g. support vector machines [SVM]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/04Inference or reasoning models
    • G06N5/048Fuzzy inferencing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N7/00Computing arrangements based on specific mathematical models
    • G06N7/01Probabilistic graphical models, e.g. probabilistic networks

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Mathematical Physics (AREA)
  • Computational Linguistics (AREA)
  • Artificial Intelligence (AREA)
  • Computer Hardware Design (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本発明は、並列化制約充足問題ソルバにおけるLock−free状態併合に関する。
プロセッサ、メモリ、ストレージなど、ハードウェアにおける技術的な進歩は、多数の様々なタイプのデータ型のメディア(たとえば、音声、テキスト、ビデオ)、開発プログラムなどを処理することにより、より豊かなユーザ体験をもたらす、より大規模かつより複雑なソフトウェアアプリケーションの作成を促進するものとして引き続き働いている。
シングルプロセッサシステムにおける、これらのベンダによって頼りにされているハードウェアサポートは、もはやムーアの法則に関連する過去の回路高速化を容易に得ることができるとは思われないため、現実的でないものとなり得る。ムーアの法則の原理面は、およそ18カ月ごとに、チップ上のトランジスタの数が、概してデバイス作製における技術的な進歩により倍加することである。過去には、これが達成されたとき、プロセッサのクロック速度もまた増大される。しかし、より隙間なく詰め込まれたトランジスタに現在伴う熱密度は非常に高く、クロック速度を増すことは、熱を効率的かつ効果的に放散させることができないことを意味する。このように、より小型のデバイスは、もはや直接的には、より高速かつより低い温度で動作するマシンにならない。
利用されている1つの代替は、単に、より多くのデバイスを使用することである。換言すれば、プロセッサのアドレス体系において、例えば、ソフトウェア需要に対処するように並列またはマルチプロセッサシステムを設計することである。しかしながら、並列処理システムは、アルゴリズムまたはコンピュータのスレッドを処理するための複雑な調和技法を必要とする。制約解決は、これらの調和技法を検査する上で有用である。しかしながら、従来の順序アルゴリズムは、使用可能な共用メモリ並列プロセッサすべてを効果的に利用するように再構築することが困難なことで悪名高い。
制約充足問題(CSP)、例えばソルバ−ブール充足可能性(SAT)ソルバなど−も、決して先の観察に対する例外ではない。一般に、順序CSPソルバは、部分解(一部の制約変数に対する割当て)を含む現在の状態を有し、そこからソルバは1つまたは複数の現在割り当てられていない変数を割り当てることによって作成された拡張解(augmented solution)を有する新しい状態に移動しようと試みる。この新しい割当ては、制約の伝播を経て他の割当てを生じる。次いで、制約の伝播により、現在の割当ての中で競合(conflict)が検出される可能性があり、これらの現在の割当ては、(その競合を軽減するために)部分的にアンドゥ(undo)し、新しい割当てに変更され、再伝播されなければならない。
並列処理システムでは、この問題解決領域の並列実施は、上述のようにして制約を伝播するいくつかの並列計算が行われる。問題は、いくつかの競合のないソルバ状態(伝播後)を、単一の競合のないソルバ状態に併合することである。
以下、開示される技術革新のいくつかの態様を基本的に理解するために簡単な概要を提示する。この概要は包括的な全体像ではなく、また主な/クリティカルな要素を識別すること、あるいはその範囲を述べることは意図されていない。後で提示される、より詳しい説明の序文として、いくつかの概念を簡単な形態で提示することを目的とするにすぎない。
開示されているアーキテクチャは、一般的な制約充足問題(CSP)ソルバにおける並列処理を支援する。ソルバの計算スレッドの状態は、1セットのサポートグラフとして表される。サポートグラフのセットは、しばしば一般的なCSPソルバの重要な構成要素である真理性維持システム(TMS)の効率的な実施に際して認められた機構である。本明細書では、サポートグラフは、グラフ同士を対ごとに併合することによって新しいやり方で使用され、新しい競合のないグラフを生み出す。これは、制約の並列伝播を複数の新しい割当てにわたってマッピングし、複数の伝播に由来する状態同士を併合することにより(より多くの変数が割り当てられた)新しい問題ソルバ状態に縮小(reduce)することによって、CSPソルバの構築を可能にする。このアーキテクチャは、概して、いくつかの形式的な特性を有する任意のCSPソルバで適用されることができる。たとえば、1つの実装では、このアーキテクチャは、特にブール充足可能性(SAT)ソルバの状況で適用されることができる。
本明細書で開示され、かつ特許請求されているアーキテクチャは、ソルバ処理を容易にする、コンピュータによって実施されるシステムを含む。このシステムは、計算スレッドの入力ソルバ状態を1セットのグラフとして表すためのブックキーピングコンポーネントを含む。マージコンポーネントが、その1セットのグラフの、少なくとも2つの入力グラフの対ごとの併合を実施し、その計算スレッドの最終状態を表す併合済みグラフにする。
前述の、また関連の目的を達成するために、開示されている技術革新の、いくつかの例示的な態様について、以下の説明および添付の図面に関連して、本明細書で述べる。しかしながら、これらの態様は本明細書で開示されている原理を使用することができる様々なやり方のうちのいくつかにすぎず、そのような態様すべてとそれらの均等物を包含することが意図されている。他の利点および新規の特徴は、図面と共に考察されたとき、以下の詳細な説明から明らかになるであろう。
並列実装によるソルバ処理を容易にするシステムの図である。 本技術革新によるソルバ状態を処理する方法の図である。 回答割当てのための推測値を推論するために学習および推理を使用する、代替の並列ソルバシステムの図である。 例示的な制約伝播プロセスから導出される(L,K)演繹グラフの図である。 図4のサポートグラフから出力された競合する制約を処理するための新しいグラフの図である。 2つのサポートグラフを作成および併合する方法の図である。 対ごとの併合プロセスのために2つの入力サポートグラフを切り詰める方法の図である。 併合済みグラフの競合を処理する方法の図である。 順序SATソルバのために、サポートグラフを切り詰め、かつ併合して最終的な、併合された競合のないグラフにする方法の図である。 並列SATソルバのために、サポートグラフを切り詰め、かつ併合して最終的な、併合された競合のないグラフにする方法の図である。 本技術革新のソルバ状態処理をマルチコア処理システムに適用するシステムの図である。 本技術革新によるソルバ状態処理をマルチコア・マルチプロセッサシステムに適用するシステムの図である。 本技術革新によるソルバ状態処理を、別々のコンピューティングシステムにわたるソルバ状態処理に適用するシステムの図である。 大きな探索空間内での問題ソルバとして適用するための真理性維持システムおよび推論エンジンを使用するCSPソルバシステムの図である。 開示されている並列化ソルバ状態アーキテクチャを使用するように動作可能なコンピューティングシステムのブロック図である。 開示されている技術革新による並列化ソルバ処理を利用することができる例示的なコンピューティング環境の概略的なブロック図である。
開示されているアーキテクチャは、従来、順序問題としてすら対処することが困難であったことで悪名高い共用メモリ並列プロセッサシステムに対する解決策を提供する。本技術革新は、並列制約充足問題(CSP)ソルバにおいて、Lock−free状態併合を実現する。ソルバの計算スレッドの状態は、1セットのサポートグラフとして表される。(話を簡単にするために、混乱が生じないとき、「セットのサポートグラフ」ではなく、「サポートグラフ」という句が使用されることになる。)これらのサポートグラフは、Lock−freeであって、新しい競合のないグラフを生み出すプロセスを説明する対ごとの方法でグラフ同士を併合することによって新しい方法で用いられる。このアーキテクチャは、概して、基礎となる問題がブール充足可能性に縮小可能である任意のCSPソルバで適用可能であり、1つの特定の実装では、このアーキテクチャは、特にブール充足可能性(SAT)ソルバの状況で適用することができる。
SATソルバの特定の実装では、SATソルバ問題は、2つの形のうちの1つで問題を生む1組のブール式から始まる。式が常に真であるかどうか知っていることが望ましい。換言すれば、式が公理であるかどうか判定することが望ましい。任意の式の補数(または否定)をとることによる等価の問いは、式が充足可能かどうか判定することである。すなわち、式を真にする変数の割当てがあるか、と問うことである。機械化するために、これは問題にアプローチするやり方となり得る。これは、問題を証明する公理ではなく、充足可能性問題として取り組まれる。
デジタル設計の空間では、ブール式が公理であるか否か知っていることが望ましい。示そうとする式が公理であるようにするのではなく、否定が充足可能でないことを示す。ブール式は、たとえば論理和標準形など標準形式で提示される。論理和標準形は、式の集合が有限であり、否定符号(論理NOT)および論理和(disjunction)(または論理OR)という式のいずれか一つを生む二つの論理結合子だけがある。したがって、現在は標準形式にある元の問題を充足可能とするために、これらの論理和式が確実に真となる変数を割り当てる。標準形式にある式のそれぞれは、節と呼ばれる。本明細書では、「節」という用語が制約を指す可能性もある。
CSPソルバなどそのような複雑な領域では、部分解を導出することができる解析方法すらないことがしばしばである。本質的に推測(guess)である回答を仮定しなければならない。結果的に、かつてプログラムによって真であると考えられた初期の仮定が、時間の経過につれて変化し、後で偽であることが発見される可能性がある。したがって、プログラムは、なされてしまった可能性のある推論を、後で偽であると判明した仮定に基づいてアンドゥするという問題を有する。効率的なものにするために、プロセスは可能な限りアンドゥを少なくしようと試みる。
SATは、充足可能性を実証するために回答の部分割当てが推測されるので、上述の問題に直面する。この推測により、新しい推測の論理的因果関係(logical consequences)のため、他のブール変数回答が割り当てられる。そのような推測の結果、変数すべてが割り当てられることになる好結果の1組の推測値(guess)がついにできるか、あるいは、なされた最後の推測により論理的不整合に至り、この点でそれらの推定値の1つが放棄される。
従来では、辞書式バックトラック(chronological backtracking)を後戻りするために使用することができ、一度に1つの変数について値を選択する。このバックトラックは、変数に割り当てる正当な値がなくなるまで続行することができる。
開示されている技術革新は、最も関連のある仮定をアンドゥする、たとえばその1つの仮定だけ変更し、中間の仮定には何も変更を加えない機能を提供することによって、「非辞書式」バックトラックを使用する。換言すれば、後退により現在の位置とある以前の位置との間でノードすべてが変更される従来のシステムに対して、アルゴリズムは任意の経路で戻り、1つの仮定を選び、その仮定だけ変更することができる。
次に、本技術革新は図面を参照して説明され、図面番号は全体を通じて要素のように参照して用いられる。以下の説明では、説明の目的で、本技術革新を完全に理解するために、多数の特定の詳細が述べられる。しかしながら、本技術革新はこれらの特定の詳細なしに実施することができることは明らかであろう。他の場合には、本技術革新の説明を容易にするために、周知の構造およびデバイスがブロック図の形態で示される。
最初に図面を参照すると、図1は、並列実装によるソルバ処理を容易にするシステム100を示す。システム100は、計算スレッド並列ソルバの処理に関連するソルバ状態104(ソルバ状態1、ソルバ状態2、...、ソルバ状態Nで示され、ただしNは正の整数である)を、1セットのサポートグラフとして表すためのブックキーピングコンポーネント102を含む。ソルバ状態104は、ブックキーピングコンポーネント102によって処理するために、並列で様々なシステムから受け取ることができる。ブックキーピングコンポーネント102は、後続の併合のために、ソルバ状態104を処理し、サポートグラフにする。また、システム100は、その1セットのサポートグラフの少なくとも2つの入力サポートグラフを対ごとに併合し、計算スレッドの最終状態を表す併合済みグラフにするためのマージコンポーネント106を含むことができる。
ブックキーピングコンポーネントおよびマージコンポーネント(102および106)によるサポートグラフの操作は同時とすることができる。換言すれば、ソルバのうちの1つからのソルバ状態は、別のソルバからのソルバ状態の処理中に受け取られ、かつ処理される。
1つの実装では、ブックキーピングコンポーネント102は、計算スレッドに作用している並列CSPソルバから入力ソルバ状態104を受け取る。下記でより詳細に述べるように、CSPソルバは、評価の束(a lattice of valuations)Aおよび1組の値Dに従って定義され、ただしDおよびAは同じ集合である。より特定の代替の実装では、ブックキーピングコンポーネント102は、計算スレッドに作用している並列ブールSATソルバから入力ソルバ状態104を受け取る。
入力ソルバ状態104が、計算スレッドに作用している2つの並列SATソルバからのものである場合、マージコンポーネント106は、n個の新しい、異なるリテラルを、L完全(L−complete)、K整合(K−consistent)の演繹グラフのn個のコピーのそれぞれに加えることを容易にする。これについても、以下でさらに述べる。
マージコンポーネント106は、入力ソルバ状態をLock−freeの形でサイクルなしで併合済みグラフに併合し、併合済みグラフ内の競合をなくし、それによって競合のないグラフ108を出力する。
Lock−free処理に関して、並列処理(parallelism)を行う1つのやり方は並列スレッド処理を扱う機能をもつことである。換言すれば、最終的に結果の仕上げ(finalization)を必要とするいくつかの並列スレッドが存在する。
並列スレッド処理を実施する1つの従来のやり方は、第1のスレッドが結果に到達するまでその第1のスレッドが単に他のスレッドを何らかの共用データ構造から締め出すことである。次いで、先のスレッド結果と整合する結果を得ることが他のスレッドの義務となる。
本技術革新は、並列で1ステップ先に処理し、次いで結果を組み合わせることによって、従来のロックを回避する。したがって、この方法はmが正の整数であるm個の独立のエージェントがあるため、各エージェントが1ステップ先に進んでおり、回答全体を得るために、エージェントが結果を組み合わせなければならない点でLock−freeである。プロセスの中心部で、結果が一度に2つずつ組み合わされる。
サポートグラフを併合するとき、いくつかの望ましくないことが起こる可能性がある。第1に、競合が2つのグラフ間で発生する。換言すれば、第1のグラフでは、変数xに真の値が割り当てられており、他のグラフ内の同じ変数xには、偽が割り当てられている。解決するために、2つのグラフが併合され、この競合に通じる1組の仮定が見出される。見出された後で、関連する仮定、または複数の仮定のうちの1つが撤回される。
第2の問題は、あるグラフ内の割当てが仮定であり、別のグラフ内の同じ割当てが単位導出(unit resolution)によって導出されるとき発生する可能性がある。今、グラフ併合が試みられた場合、得られるグラフはサイクルを示すことになる。解決するために、欲張り法を使用する非常に経済的なやり方で仮定が撤回される。これについては、下記でより詳細に述べる。
図2は、本技術革新によるソルバ状態を処理する方法を示す。説明を簡単にするために、たとえばフローチャートまたは流れ図の形態で本明細書に示されている1つまたは複数の方法は一連の動作として示され、述べられているが、いくつかの動作は本技術革新によれば本明細書に示され、述べられているものとは異なる順序、および/または他の動作と同時に発生してもよいため、本技術革新が動作の順序によって制限されないことを理解されたい。たとえば、方法は別法として状態図においてなど一連の相互関係のある状態またはイベントとして表すことができることを、当業者なら理解するであろう。さらに、本技術革新による方法を実施するために、示されている動作すべてが必要とされるわけではない。
200では、サポートグラフは並列ソルバのソルバ状態から生成される。202では、ソルバ状態のサポートグラフが受け取られ、そのソルバ状態は計算スレッドの処理に関連する。204では、同じリテラルを有するノードを併合するために各ソルバからのサポートグラフが同時に切り詰められる。206では、これらのサポートグラフが対ごとに併合され、計算スレッドの最終状態を表す併合済みサポートグラフにされる。208では、併合済みグラフの完全性を達成するために制約伝播が開始される。210では、制約伝播中に非辞書式バックトラックが使用され、前の仮定を変更し、競合を解決する。212では、競合するリテラルがなくされ、競合のない併合済みグラフを出力する。
次に、図3を参照すると、回答を割り当てるための推測値を推論するために学習および推理を使用する代替の並列ソルバシステム300が示される。システム300は、ソルバ状態を生成する複数のシステム(たとえば、2つの順序ソルバシステム)302を含む。たとえば、(システムAで示されている)第1のシステム304、第1の順序CSPソルバは、たとえばソルバ状態306(ソルバ状態A1、...、ソルバ状態ASで示され、ただしSは正の整数である)を生成し、(システムBで示されている)第2のシステム308、第2の順序CSPソルバは、たとえばソルバ状態308(ソルバ状態B1、...、ソルバ状態BTで示され、ただしTは正の整数である)を生成する。
ブックキーピングコンポーネント102は、対応する第1および第2のシステム(304および308)からソルバ状態(306および310)を受け取り、並列スレッド処理のための、かつシステム制約を反映するソルバ状態のグラフ(たとえば、サポートグラフ)を作成する。これらのグラフは、併合して競合のない状態108を有する併合済みグラフにするためにマージコンポーネント106に渡される。しかしながら、この併合済みグラフは完全でない可能性がある。したがって、伝播コンポーネント312によって促進される制約伝播が併合済みグラフにおける完全性を確保するために使用される。これについては、以下でより詳細に述べる。伝播コンポーネント312はまた、中間の仮定を変更することなしに、より以前の仮定を直接変更するために制約伝播の一部として非辞書式バックトラックを容易にする。
システム300はまた、可変の割当てについて、制約伝播中に推測値に基づいて推論するのを容易にする(本明細書では推論エンジンとも呼ばれる)学習および推理コンポーネント314を使用することができる。
システム300は回答のすべてが既知であるわけではない応用例において動作することができる。したがって、いったい何が進行中であるかについて仮定される。たとえば、サーバプログラムがより多くのデータにさらされたとき、そのプログラムが行った、より以前の仮定が偽であることを発見されるということが発生する可能性がある。次いで、そのプログラムはなされてしまった可能性のある推論を偽の前提に基づいてアンドゥするという問題を有する。
充足可能性問題では、充足可能性を実証するために、回答の割当てを推測しなければならない可能性があるため、同様の問題が存在する可能性がある。換言すれば、新しい推測がなされる順序的なものの場合には、新しい推測の論理的因果関係のため、これは他のブール変数回答を割り当てさせる。さらに、最終的に2つのことのうちの1つが起こる。変数すべてが割り当てられることになる好結果の1組の推測値ができるか、あるいは、なされた最後の推測により論理的不整合に至り、この点で、それらの推定値の1つが放棄される。
ブール充足可能性の最も古典的なバージョンでは、最後の推測値の符号が変更され、その結果、以前、ブール変数に偽が割り当てられていた場合、その割当てが真に変更され、プロセスが再び進む。割当てが真でも偽でもない可能性があるとき論理的不整合が発生する可能性があり、これは、ある以前の、行われた割当てが誤りであったに違いないことを意味する。
必要に応じて、繰り返し後退および前進するのではなく、観察された競合に通じる仮定の実際の集合が識別される。ひとたび競合が観察されたなら、何が競合に通じるか正確に診断することが望ましく、それは、なされた最後の仮定であることも、そうでないこともある。そのような診断は正確に行うことができ、したがって、1組の適合しない仮定が識別される。
(たとえば、選択に関連する)本アーキテクチャは、その様々な態様を実施するために、様々な、学習および推理をベースとするスキームを使用することができる。たとえば、どの割当てを(たとえば、真から偽に、または偽から真に)トグルするか判定するためのプロセスは、自動クラシファイアシステムおよびプロセスを介して、うまく進めることができる。
クラシファイアは、入力属性ベクトルx=(x1,x2,x3,x4,xn)をクラスラベルclass(x)にマッピングする関数である。また、クラシファイアは、その入力が、あるクラスに属する信頼度(confidence)、すなわちf(x)=confidence(class(x))を出力することができる。そのような類別では、確率的解析および/または他の統計解析(たとえば、1人または複数の人に対する期待値を最大化するように解析ユーティリティおよびコストを考慮するもの)を使用し、ユーザが自動的に実施させたいと望むアクションを予測(prognose)または推論することができる。
本明細書では、「推論する(to infer)」および「推論(inference)」という用語は、概して、イベントおよび/またはデータを介して獲得された1組の観察から、システム、環境、および/またはユーザの状態について推理する、または推論するプロセスを指す。推論は、特定の状況またはアクションを識別するために使用することができ、または、たとえば諸状態にわたる確率分布を生成することができる。推論は、確率的なものとすることができる−すなわち、当該の諸状態にわたる確率分布の計算が、データおよびイベントの考察に基づく。また、推論は、1組のイベントおよび/またはデータから、より高いレベルのイベントを構成するために使用される技法を指すことができる。そのような推論により、イベント同士が時間的に近接して相関されようと、そうでなかろうと、また、イベントおよびデータが1つまたは複数のイベントおよびデータソースに由来していようと、1組の観察されたイベント、および/または記憶されたイベントデータから、新しいイベントまたはアクションが構築される。
サポートベクトルマシン(SVM)は、使用することができるクラシファイアの一例である。SVMは、トリガ入力イベントを非トリガイベントから最適な形で分離する、可能な入力の空間内で超曲面(hypersurface)を見出すことによって動作する。直観的には、これにより類別は、トレーニングデータに近いが同一ではないデータを検査するために正しいものとなる。他の有向および無向のモデル類別手法は、たとえば、様々な形態の統計的回帰を含む。ナイーブベイズ、ベイズネットワーク、決定木、ニューラルネットワーク、ファジィ論理モデル、および独立の様々なパターンを表す他の統計的類別モデルを使用することができる。また、本明細書で使用される類別は、ランクおよび/または優先順位を割り当てるために使用される方法をも含む。
本明細書から容易に理解されるように、本アーキテクチャは、(たとえば、一般的なトレーニングデータを介して)明示的にトレーニングされるクラシファイア、ならびに(たとえば、ユーザの挙動を観察すること、外来情報を受け取ることを介して)暗黙にトレーニングされるクラシファイアを使用することができる。たとえば、SVMは、クラシファイアコンストラクタおよび特徴選択モジュール内での学習またはトレーニングを介して構成される。したがって、クラシファイアは、所定の基準に従っていくつかの関数を自動的に学習および実行するために使用することができる。
換言すれば、学習および推理コンポーネント314は、競合処理のために、学習された制約を適用することができる。下記で述べるように、一例では、1つの学習された制約を、競合解決のために順序SATソルバに加えることができる。同様に、並列SATソルバでは、いくつかの学習された制約を、制約伝播処理中に加えることができる。
制約伝播の例を見る前に、よりよく理解するために、予備情報を提供する。制約充足問題(CSP)は、一般に以下のように説明される。すなわち、変数の有限集合V、(一般に有限の)1組の値D、(おそらくは無限の)評価の束A、および関数(制約)の有限集合D|V|→Aが与えられた場合、A内で最大である制約すべてにおいて、その束がタプルのイメージの間で一致するようにD|V|におけるタプルを見出す。以下は、DおよびAが共にブールの束である場合の説明であり、特に、SATソルバの状況における本発明について述べる。この制限にもかかわらず、本発明は、DおよびAが同じ集合である任意のCSPに一般化可能である。
変数は、x1、x2、...、xnで示され、ただしnは正の整数である。リテラルは、「符号付き」変数、すなわちx1、¬x1、x2、¬x2、...である。Lは、lがL全体に及ぶリテラルの集合である。節は、□で示される空の節を含む、リテラルの有限集合である。節{x1,¬x2,x3,¬x4}は、しばしば代わりに、x1∨¬x2∨x3∨¬x4(その諸要素の論理OR(∨))として書き表される。命題式の任意の有限集合を、論理的に等価な、節の有限集合として表すことができる。
変数には、割り当てなくても、真(True)(たとえば、x1)または偽(False)(たとえば、¬x1)の値を割り当ててもよい。変数xに対する値Trueの割当ては、リテラルxと合成される。変数xに対する値Falseの割当ては、リテラル¬xと合成される。評価は、割当てを変数から節にリフトする結果として、節に帰される。Trueの割当てを有する節は充足され、Falseの割当てを有する節は違反したものとなる。充足可能性は、1組の節を充足する論理変数の割当てがあるかどうかという問いである。恒真式は、1組の節があらゆる割当てによって充足されるかどうかという問いである。式はその否定が充足可能なものである場合だけに限って恒真式である点で、充足可能性と恒真式は、二重概念である。
Kを、L内のリテラルにわたる1組の節とする。(L,K)演繹グラフは、そのノードが、Lの部分集合と共に対にされた個々のリテラルでラベル付けされ、そのエッジが、Kのメンバでラベル付けされる有向グラフである。どのLおよびKが意図されているかについて混乱がないとき、このグラフは、単に演繹グラフと呼ばれる。ノードは、第1のノードから第2のノードへの有向エッジがあり、そのエッジが節kでラベル付けされている場合だけ、別のノードに対するk祖先である。
(L,K)演繹グラフは、ノード上のラベルが、その祖先ノード上のラベルの和集合であり、ノードlが、入来アークを有していない場合には{l}でラベル付けされ、リテラルlに関するそのノードへの入来エッジすべてが、l∨kの形態の節でラベル付けされ、リテラルlに関するそのノードからの出エッジすべてが、¬l∨kの形態の節でラベル付けされる場合だけ、十分にラベル付けされたもの(well−labeled)である。lノードに入射する、l∨l1∨...∨lmとラベル付けされたエッジがあるときはいつでも、やはりlノードに入射するm−1個の、l∨l1∨...∨lmとラベル付けされた他のエッジがある。
それ自体からなる単集合でラベル付けされた(L,K)演繹グラフ内のノードl(たとえば、¬x9@{¬x9})は、仮定リテラルと呼ばれる。十分にラベル付けされた(L,K)演繹グラフは、あるノードに入射する入来アークがちょうど1つの節でラベル付けされている場合、一意に正当化される。十分にラベル付けされた(L,K)演繹グラフは、ノードlもノード¬lも含まない場合だけ、K整合である。十分にラベル付けされた(L,K)演繹グラフは、l∨l1∨...∨lmの形態のK内のあらゆるkについて、¬l1,...,¬lmがグラフ内にあるときはいつでも、lが、入力入射エッジがkでラベル付けされているグラフ内にある場合だけ、K完全(K−complete)である。非循環の、十分にラベル付けされた(L,K)演繹グラフGは、(ノードで表して)より大きい、十分にラベル付けグラフG’がない場合、L完全である。
図4および図5は、競合処理のためにサポートグラフを使用する並列化ソルバの例を示す。図4は、例示的な制約伝播プロセスから導出された(L,K)演繹グラフ400を示す。上記定義の応用例を例示するために、充足可能性問題および試みられる部分解の一例を考えてみる。
ω1≡(¬x1∨x2
ω2≡(¬x1∨x3∨x9
ω3≡(¬x2∨¬x3∨x4
ω4≡(¬x4∨x5∨x10
ω5≡(¬x4∨x6∨x11
ω6≡(¬x5∨¬x6
ω7≡(x1∨x7∨¬x12
ω8≡(x1∨x8
ω9≡(¬x7∨¬x8∨¬x13
を含む初期の1組の制約C、および仮定の現在のスタックから開始する。演繹グラフ400では、仮定が仮定ノードとしてモデル化され、それらのノードは、入力アークを有していない。したがって、グラフ400に関する仮定は、
1@{x1}、
¬x9@{¬x9}、
¬x10@{¬x10}、および
¬x11@{¬x11}、
を含む。グラフ400は、4つの仮定ノード、すなわち、x1に真(たとえば、x1)が割り当てられている第1の仮定ノード402と、x9に偽(たとえば、¬x9)が割り当てられている第2の仮定ノード404と、x10に偽(たとえば、¬x10)が割り当てられている第3の仮定ノード406と、x11に偽(たとえば、¬x11)が割り当てられている第4の仮定ノード408とを含む。
ある時のスナップショットを見ると、グラフ400は、仮定ノード402がx1に対する真(たとえば、x1)の割当てを有し、仮定ノード404がx9に対する偽(たとえば、¬x9)の割当てを有することを示す。次に、ω2でラベル付けされたエッジ、上記の制約節ω2≡(¬x1∨x3∨x9)を考えてみる。すなわち換言すれば、これは「x1ではなく、またはx3、またはx9」と読むことができる。しかしながら、制約ω2では、x1は¬x1として否定で現れ、これは、グラフ400内での真としての割当てがこの論理和を偽にし、x9が否定で割り当てられ、やはりx9論理和を偽にすることに留意されたい。しかし、制約ω2全体は真にしなければならず、制約節ω2を真にすることができる唯一の残りのやり方は、x3が真になるように割り当てられたとき(たとえば、x3)である。これはちょうど、x1を真として割り当てることによって、グラフ400がノード410で示すものである。したがって、入力ノード402および404での仮定、および関連する制約ω2に基づいて、制約ω2を充足する唯一のやり方は、x3を真として割り当てることである。これは単位導出の応用例である。
他のノードに進むと、ノード412に対するエッジは、制約ω1≡(¬x1∨x2)を使用する。しかしながら、ノード402でのx1には真が割り当てられており、制約ω1を充足する上での唯一の残りの可能性は、ノード412でのx2を真として割り当てることである。ω3でラベル付けされたエッジを見ると、制約節ω3≡(¬x2∨¬x3∨x4)は、ノード414でx4に真を割り当てることによって充足することができるだけである。換言すれば、414に対する入力ノードは410および412であり、これらは、それぞれx3およびx2に真を割り当て、ω3を充足する唯一の残りの可能なやり方は、真をx4に割り当てることである。
ω4でラベル付けされたエッジを見ると、入力x10に偽が割り当てられ、入力x4に真が割り当てられるため、制約節ω4≡(¬x4∨x5∨x10)は、ノード416でx5に真を割り当てることによって充足することができるだけである。ω5でラベル付けされたエッジは、入力x11に偽が割り当てられ、入力x4に真が割り当てられるため、制約節ω5≡(¬x4∨x6∨x11)を使用し、これは、ノード418でx6に真を割り当てることによって充足することができるだけである。最後に、ω6でラベル付けされたエッジは、制約節ω6≡(¬x5∨¬x6)を使用し、この制約は、対応するノード416および418で、x5の真およびx6の真の、既存の割当てに基づいて失敗する。
制約伝播は、(L,K)演繹グラフ400に通じ、最後のノード420に到達したとき、(異なる形態で書き表された)新しく導出された制約、すなわち、
ωC(κ(ω6))≡¬(x1∧¬x9∧¬x10∧¬x11
を出力し、上式で、κ(カッパ)は「競合」を表し、制約は、何がうまくいかなかったかのレポートである。ここで、出力ωC(κ(ω6))は、同時にx1が真、x9が偽、x10が偽、x11が偽であることができず、それらのうちの1つを、さらに処理するために放棄しなければならないことを示す。これは、x1ではなく、またはx9、またはx10、またはx11と等価であり、これは正しい形態にある。図5は、図4のサポートグラフから出力された競合する制約を処理するための新しいグラフ500を示す。上記の4つのうちの3つ(たとえば、¬x9、¬x10、¬x11)について仮定を選択することにより、新しいグラフ500、およびさらに別の新しく導出された制約
ωC(κ(ω9))≡¬(¬x9∧¬x10∧¬x11∧x12∧x13
が生み出される。
より具体的には、グラフ500は、ノード502、504、506をそれぞれ¬x9@{¬x9}、¬x10@{¬x10}、¬x11@{¬x11}として使用して、仮定を行う(以前の仮定のうちの1つを落とす)ことによって作成される。これらの仮定から開始し、新しく導出された制約ωC(κ(ω6))をエッジに適用することにより、制約ωC(κ(ω6))を充足するように、ノード508でx1に対する偽の割当てが生み出される。
ω7でラベル付けされたエッジを見ると、(x12@{x12}が割り当てられた)別の仮定ノード510が導入され、制約節ω7≡(x1∨x7∨¬x12)は、入力x1に偽が割り当てられ、入力x12に真が割り当てられるため、ノード512でx7に真を割り当てることによって充足することができるだけである。
ω8でラベル付けされたエッジを見ると、制約節ω8≡(x1∨x8)は、入力x1に偽が割り当てられるため、ノード514でx8に真を割り当てることによって充足することができるだけである。次に、ω9でラベル付けされたエッジを考えると、制約節ω9≡(¬x7∨¬x8∨¬x13)は、現在の入力(ノード512、ノード514、および仮定ノード516)を使用して充足することができない。したがって、ノード518で出力される、新しく導出された制約ωC(κ(ω9))≡¬(¬x9∧¬x10∧¬x11∧x12∧x13)は、演繹グラフ500で何がうまくいかなかったかのレポートである。制約導出プロセスは、競合状態が存在しなくなるまで続行する。
より一般的な形で述べると、一度各並列ソルバスレッドのソルバ状態についてサポートグラフが得られると、併合を開始することができる。この説明は対ごとの併合を重点的に扱うが、併合は、2つより多いグラフを使用して行うことができることも意図の範囲内である。状態併合は、Lock−freeである。換言すれば、並列処理を行う1つの従来のやり方は、スレッド処理を含む。たとえば、複数の並列スレッドがデータを処理中である場合、最終的には、スレッドの結果同士を併合することが望ましい。これを行う1つのやり方は、第1のスレッドがそのプロセスを完了するまで、その第1のスレッドが、単に他のスレッドを何らかの共用データ構造から締め出すことによるものである。したがって、すでに書き込まれているものと整合する結果を書き込むことが、他の締め出されたスレッドの義務となる。この従来のアーキテクチャは、少なくとも非効率である。開示されているアーキテクチャは、そのような明示的なロック機構を回避する。
上述のように、アルゴリズムは、並列で1ステップ先に処理を実行し、次いで結果が組み合わされる。換言すれば、結果全体に到達するために、各エージェントは、1ステップ先に処理し、別々の暫定結果が組み合わされ、これが、回答全体に到達するまで続行される。さらに、競合処理が解決され、併合プロセスにはサイクルがない。
従前のように、競合解除(deconflict)処理では、1つまたは複数の仮定が、グラフの一方または他方で放棄されてもよい。さらに、どの仮定を放棄するかについて、非常に経済的であることが望ましい。開示されているアーキテクチャによって使用される情報の集合(たとえば、仮定、推論値(deductions)、グラフ、...)のすべてを定義することにより、(本明細書でreduxとも呼ばれる)縮小アルゴリズムは、併合される2つのグラフ間で可能な限り放棄を少なくするようにして選択をする。単一のグラフの場合には、これらの競合を識別するポイントは、いくつかの以前の仮定にわたって後退しなければならないのではなく、放棄しようとする場合、可能な限り因果関係が小さい仮定を識別することであり、これはそのセットのサポートグラフについてのポイントであることを想起されたい。
次に、同じ技法を1対のグラフに適用すると、グラフは、仮定が放棄される場合、可能な限り影響または損失が少ないように、サイクルがない形で併合される。これは、「欲張り」法またはアルゴリズムを使用することによって対処することができる。換言すれば、この方法は、特定の時点で最良と思われる選択をすることによって、放棄されつつあるものを最小限に抑える、コストの少ないやり方を見出す。はるかに多くの解析を使用する、より集約的なアルゴリズムを使用することができるが、1つの実装では、欲張り法で十分である。
図6は、2つのサポートグラフを作成および併合する方法を示す。600では、2つのサポートグラフが、処理するために受け取られる。602では、欲張り法を使用してサイクルを低減する、またはなくするために、同じリテラルに対応するノードを併合するようにグラフが切り詰められる(または縮小される)。604では、サポートグラフ同士を併合して併合済みグラフにする。606では、必要な場合、制約を伝播することによって、完全性のために併合済みグラフを処理する。608では、必要な場合、競合に関して併合済みグラフを処理する。610では、競合のないソルバ状態を表す、最終的な併合済みグラフが出力される。
どのように2つの(L,K)演繹グラフを併合することができるかについてのより詳細な説明のための準備として、以下の定義を提示する。G、G’が非循環の、L完全な(L,K)演繹グラフである場合には、
G,G'は、グラフGおよびG’に共通の仮定の集合である。
Gは、Gの仮定の集合である。
Gは、Gの推論値の集合である。
G,G'は、G’の推論値であるGの仮定の集合である。
G,G'は、G’に述べられていないGの仮定の集合である。
G=CG,G'∪AG,G'∪BG,G'
G'=CG,G'∪AG',G∪BG',G
Figure 0004707760
G内のある仮定の従属要素(dependents)を生成する関数である。
Figure 0004707760
G内のある推論値の祖先を生成する関数である。
図7は、対ごとの併合プロセスのために2つの入力サポートグラフを切り詰める方法を示す。700では、この特定の実装においては、このプロセスがreduxと呼ばれる関数に従って開始される。関数redux(G,G’)は、以下のように定義される1対のグラフ(G1,G2)を生成する。702では、第1の定義がもたらされる。すなわち、l∈AG,G'を、|fG'(l)|(従属要素の集合のサイズ)が少なくともAG,G'内の任意の他の仮定ノードの選択されたもの(choice)と同程度の大きいものとなるようなノードとする。704では、第2の定義がもたらされる。すなわち、l’∈AG',Gを、|fG'(l’)|が少なくともAG',G内の任意の他の仮定ノードの選択されたものと同程度の大きいものとなるようなノードとする。706では、|fG'(l)|が|fG'(l’)|より小さい場合、GおよびG’の役割が逆にされる。708では、l’’∈hG'(l)が、|fG'(l’’)|がl’の任意の他の選択されたものと同程度の小さいものとなるように選択される。710では、l2が|fG'(l’’)|内にあるように、G’’を、l’’および任意のノードl2を欠くG’のサブグラフになるように定義する。712では、
Figure 0004707760
の場合には、reduxを終了し、対(G,G’’)を返す。714では、
Figure 0004707760
の場合には、redux(G,G’’)を呼び出す。
最終的には、reduxは、同じリテラルに対応するノード同士をサイクルのおそれなしに併合することができるように、2つのグラフを切り詰める。下記で示すように、reduxは、導出されたもの(非仮定リテラル)の放棄を可能な限り少なくしようと試みる意味で「欲張り」な形で切り詰める。最終的に可能な限り多くの並列前進が達成されるようにして切り詰めることが望ましい。しかし、サイクルのおそれなしに併合するためにグラフを切り詰める他のアルゴリズムを使用することができることを理解されたい。
併合済みグラフ−やはりGと呼ぶ−は、もはやL完全ではなく、これは、L完全にするために制約を伝播することによって修正することができることに留意されたい。また、併合済みグラフが、競合するリテラルlおよび¬lを含む可能性もあり、その場合には、このグラフについてdeconflict(G)が計算され、それにより競合のないグラフが生成される。図8は、併合済みグラフの競合を処理する方法を示す。800では、この特定の実装においては、競合の除去は、deconflictと呼ばれる関数に従って開始される。802では、l’∈hG(l)を、|fG'(l’)|が任意の他の、そのような選択されたものと同程度の小さいものとなるように選択する。804では、l’’∈hG(¬l)を、|fG'(l’’)|が任意の他の、そのような選択されたものと同程度の小さいものとなるように選択する。806では、|fG'(l’)|≦|fG'(l’’)|である場合、削除すべき仮定として、その従属要素のすべてと共に、l(そうでない場合はl’)を選択する。808では、すべての競合するノードがなくされるまで、このプロセスが繰り返される。
redux関数およびdeconflict関数は、merge関数を置くことによってSATソルバ内で使用することができ、merge関数は、まずreduxを1対のグラフに適用し、次いで結果にdeconflictを適用する。図9は、順序SATソルバのために、サポートグラフを切り詰め、かつ併合して最終的な、併合された競合のないグラフにする方法を示す。900では、(たとえば、reduxを使用する)グラフ切り詰め、および(たとえば、deconflictを使用する)競合処理が、順序SATソルバ内で開始される。902では、順序SATソルバの内部ループが、1つの新しいリテラルを、L完全、K整合の演繹グラフに加える。904では、サポートグラフが、ノードを併合しサイクルのない処理を生成するように、切り詰められる。906では、併合済みグラフをL完全にするように、制約が伝播される。908では、(たとえば、関数deconflictを使用して)競合のない併合済みグラフが、任意選択で1つの学習済み制約を加えることによって、もたらされる。910では、必要に応じて、ソルバ状態の、併合された競合のないグラフを出力するように、プロセスが繰り返される。
図10は、並列SATソルバのために、サポートグラフを切り詰め、かつ併合して最終的な、併合された競合のないグラフにする方法を示す。1000では、(たとえば、reduxを使用する)グラフ切り詰め、および(たとえば、deconflictを使用する)競合処理が、並列SATソルバ内で開始される。1002では、並列SATソルバの内部ループが、n個の新しい、異なるリテラルを、L完全、K整合のサポートグラフの、n個のコピーのそれぞれに加える。1004では、n個のグラフが、ノードを併合しサイクルのない処理を生成するように、切り詰められる。1006では、併合済みグラフをL完全にするように、制約が各演繹グラフ内で伝播される。1008では、(たとえば、関数deconflictを使用して)競合のない併合済みグラフが、任意選択で学習済み制約を加えることによって、出力される。
図11は、本技術革新のソルバ状態処理をマルチコア処理システム1102に適用するシステム1100の図を示す。マルチコア処理システム1102は、共用メモリ並列処理システムであり、共に同じダイ上で作製される(コア1で示される)第1の処理コア1104、および(コア2で示される)第2の処理コア1106によってうまく機能させることができる。また、処理システム1102は、処理されつつある計算スレッドの共用バッファリングのためにオンボードメモリ1108を含むことができる。メモリ1108は、同じダイ上で示されているが、ダイの外部に位置することができ、同じ目的を果たす。
コア(1104および1106)のそれぞれによる共用スレッド処理をサポートして、1対のソルバが設けられる。たとえば、共にたとえばCSPソルバとすることができる(ソルバ1で示される)第1のソルバ1110、および(ソルバ2で示される)第2のソルバ1112が、プロセッサシステム1102の複数のコア(1104および1106)の間でのスレッド実行中に制約処理を実行するように設けられる。
状態システム1114が、開示されている技術革新による対ごとのサポートグラフ処理のために設けられる。状態システム1114は、関連する並列化ソルバ(1110および1112)から、サポートグラフの形態で受け取られる(ソルバ1状態およびソルバ2状態として示される)ソルバ状態を対ごとに処理する。状態システム1114は、サポートグラフ縮小(または切り詰め)、サポートグラフ併合、競合処理、および可変の割当てを行うために、上述の、ブックキーピングコンポーネント102と、マージコンポーネント106と、伝播コンポーネント312と、推理コンポーネント314とを含むことができる。
状態システム1114は、完全にソフトウェアで、完全にハードウェアで(たとえば、ASIC−特定用途向け修正回路デバイス、またはフィールドプログラマブルゲートアレイ(FPGA)として)、またはハードウェアとソフトウェアの組合せとして実装することができることを理解されたい。別法として、状態システム1114のコンポーネント(102、106、312、314)は、ハードウェアおよび/またはソフトウェアの組合せとして別々に実装することができる。
図12は、本技術革新によるソルバ状態処理をマルチコア・マルチプロセッサシステムに適用するシステム1200の図を示す。マルチコア・マルチプロセッサシステム1200は、第1のマルチコアプロセッサシステム1202と、第2のマルチコアプロセッサシステム1204とを含み、それぞれが共用メモリ並列処理システムである。第1のプロセッサシステム1202は、(コア1で示される)第1の処理コア1206と、(コア2で示される)第2の処理コア1208とを含み、共に同じダイ上で作製され、処理されつつある計算スレッドの共用バッファリングのために共用メモリ1208を共用する。
第2のマルチコアプロセッサシステム1204は、(コア1で示される)第1の処理コア1212と、(コア2で示される)第2の処理コア1214とを含み、共に同じダイ上で作製され、処理されつつある計算スレッドの共用バッファリングのために共用メモリ1216を共用する。
コア(1206および1208)のそれぞれによる共用スレッド処理をサポートして、ソルバの、対応するセットが設けられる。たとえば、共にたとえばCSPソルバとすることができる(ソルバ1で示される)第1のソルバ1218、および(ソルバ2で示される)第2のソルバ1220が、プロセッサシステム1202の複数のコア(1206および1208)の間でのスレッド実行中に制約処理を実行するように設けられる。同様に、コア(1212および1214)のそれぞれによる共用スレッド処理をサポートして、ソルバの、対応するセットが設けられる。たとえば、共にたとえばCSPソルバとすることができる(ソルバ3で示される)第3のソルバ1222、および(ソルバ4で示される)第4のソルバ1224が、プロセッサシステム1204の複数のコア(1212および1214)の間でのスレッド実行中に制約処理を実行するように設けられる。
ソルバ(1218、1220、1222、1224)のそれぞれは、ソルバ状態を状態処理システム1226に渡す。たとえば、(S1状態およびS2状態で示される)ソルバ状態は、第1のプロセッサシステム1202から状態システム1226に転送され、(S3状態およびS4状態で示される)ソルバ状態は、第2のプロセッサシステム1204から状態システム1226に転送される。
状態システム1226は、開示されている技術革新による対ごとのサポートグラフ処理のために設けられる。状態システム1226は、並列化ソルバ(1218、1220、1222、1224)から、サポートグラフの形態で受け取られるソルバ状態を対ごとに処理する。たとえば、そのようなマルチコア・マルチプロセッサシステムでは、スレッド計算処理は、コア(1206、1208、1212、1214)の任意の組合せにわたって行われる。たとえば、処理は、コア1208、コア1212、コア1214を使用して行われることができる。したがって、これらの3つのコアからの状態が、開示されているアルゴリズムによる対ごとの処理のために状態システム1226に渡されるはずである。それをサポートして、状態システム1226は、状態処理にかけられるスレッドに基づいてソルバ(1218、1220、1222、1224)のそれぞれから関連する状態を選択するために、選択コンポーネント1228を含むことができる。換言すれば、無関係な状態は、サポートグラフ処理のために選択されないことになる。しかしながら、状態処理は今、1つの状態システムが各プロセッサシステム(1202または1204)に対して専用となるように追加の状態システム(図示せず)を含めることによって、並列でも実行することができることを理解されたい。
従前のように、状態システム1226はさらに、サポートグラフ縮小(または切り詰め)、サポートグラフ併合、競合処理、および可変の割当てを行うために、上述の、ブックキーピングコンポーネント102と、マージコンポーネント106と、伝播コンポーネント312と、推理コンポーネント314とを含むことができる。
さらに、状態システム1226は、完全にソフトウェアで、完全にハードウェアで(たとえば、ASIC、FPGA)、またはハードウェアとソフトウェアの組合せとして実装することができることを理解されたい。
また、状態システム(図11の1114、および/または1226)は、ソルバ状態の処理のためにコンピューティングシステムにインストールするために、独立のソフトウェアおよび/またはハードウェアのプラグ可能なモジュールとして実装されることもできる。たとえば、高速インターフェースおよびメモリ(たとえば、不揮発性またはフラッシュ)を備えるカードを、プロセッササブシステムに対する好適なインターフェースとして、またソルバ状態処理のために使用することができる。別法として、またはそれと組み合わせて、開示されている技術革新によるソルバ状態を処理するソフトウェアモジュールをインストールすることができる。
図13は、本技術革新によるソルバ状態処理を、別々のコンピューティングシステムにわたるソルバ状態処理に適用するシステム1300の図を示す。ここで、第1のコンピューティングシステム1302は、プログラムおよびデータ処理を実行するために、システムプロセッサ1304(および単一コア1306)を有するシングルプロセッサシステムである。第2のコンピューティングシステム1308は、プログラムおよびデータ処理を実行するために、マルチプロセッササブシステム1310(および2つのプロセッサ1312および1314)を有するマルチプロセッサシステムである。これらのシステム(1302および1308)は、ネットワーク1316(または好適な高速インターフェース)上に通信して配置され、さらに、ソルバ状態処理のために、図12の状態システム1226と通信する。スレッドが両システム(1302および1308)にわたって処理される場合、ソルバ状態は、図12における上述の説明と同様に、両システムから処理することができる。
図14は、大きな探索空間内での問題ソルバとして適用するための、真理性維持システム1402および(学習および推理を使用する)推論エンジン1404を使用するCSPソルバシステム1400の図を示す。エンジン1404は、代替を探り、選択をし、正しくなるようにその選択を解析する。競合が発生したとき、真理性維持システムは、その競合をなくするのを容易にし、それに応じて、今後の使用のためにその知識ベースを更新する。
本明細書では、「コンポーネント」および「システム」という用語は、コンピュータ関連のエンティティ、ハードウェア、ハードウェアとソフトウェアの組合せ、ソフトウェア、または実行時のソフトウェアを指すものとする。たとえば、コンポーネントは、それだけには限らないが、プロセッサ上で動作するプロセス、プロセッサ、ハードディスクドライブ、(光記憶媒体および/または磁気記憶媒体の)複数の記憶デバイス、オブジェクト、実行可能物、実行のスレッド、プログラム、および/またはコンピュータとすることができる。例として、サーバ上で動作するアプリケーションもそのサーバも、コンポーネントとすることができる。1つまたは複数のコンポーネントがプロセスおよび/または実行のスレッド内にある可能性があり、コンポーネントは、1つのコンピュータ上で局所化され、かつ/または2つ以上のコンピュータ間で分散される可能性がある。
次に図15を参照すると、開示されている並列化ソルバ状態アーキテクチャを使用するように動作可能なコンピューティングシステム1500のブロック図が示されている。その様々な態様に関する追加的な状況を提供するために、図15および以下の考察は、本技術革新の様々な態様を実装することができる好適なコンピューティングシステム1500を簡単に、一般的に説明することが意図されている。上記の説明は、1つまたは複数のコンピュータ上で動作することができるコンピュータ実行可能命令の一般的な状況にあるが、本技術革新は、他のプログラムモジュールと組み合わせて、かつ/またはハードウェアとソフトウェアの組合せとして実装することもできることを、当業者なら理解するであろう。
一般に、プログラムモジュールは、特定のタスクを実行する、または特定の抽象データ型を実装するルーチン、プログラム、コンポーネント、データ構造などを含む。さらに、本発明の方法は、シングルプロセッサまたはマルチプロセッサコンピュータシステム、ミニコンピュータ、メインフレームコンピュータ、ならびにパーソナルコンピュータ、ハンドヘルドコンピューティングデバイス、マイクロプロセッサをベースとする、またはプログラム可能な家電などを含めて、それぞれ1つまたは複数の関連するデバイスに動作可能に結合することができる他のコンピュータシステム構成で実施することができることを、当業者なら理解するであろう。
また、図の、本技術革新の諸態様は、いくつかのタスクが、通信ネットワークを介してリンクされる遠隔処理デバイスによって実行される分散コンピューティング環境内で実施することができる。分散コンピューティング環境では、プログラムモジュールは、ローカルと遠隔双方のメモリ記憶デバイス内に位置することができる。
コンピュータは、一般に、様々なコンピュータ可読媒体を含む。コンピュータ可読媒体は、コンピュータによってアクセスすることができる任意の使用可能な媒体とすることができ、揮発性媒体と不揮発性媒体、取外し式媒体と非取外し式媒体を含む。限定ではなく例として、コンピュータ可読媒体は、コンピュータ記憶媒体と通信媒体を備えることができる。コンピュータ記憶媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータなど、情報を記憶するための任意の方法または技術で実施される揮発性媒体と不揮発性媒体、取外し式媒体と非取外し式媒体を含む。コンピュータ記憶媒体は、それだけには限らないが、RAM、ROM、EEPROM、フラッシュメモリ、もしくは他のメモリ技術、CD−ROM、デジタルビデオディスク(DVD)、もしくは他の光ストレージ、磁気カセット、磁気テープ、磁気ディスクストレージ、もしくは他の磁気記憶デバイス、または、所望の情報を記憶するために使用することができ、コンピュータによってアクセスすることができる任意の他の媒体を含む。
図15を再度参照すると、様々な態様を実施するための例示的なコンピューティングシステム1500は、処理ユニット1504を含むコンピュータ1502と、システムメモリ1506と、システムバス1508とを含む。システムバス1508は、それだけには限らないがシステムメモリ1506を含むシステムコンポーネント用の、処理ユニット1504に対するインターフェースを実現する。処理ユニット1504は、様々な市販のプロセッサのいずれかとすることができる。デュアルマイクロプロセッサおよび他のマルチプロセッサアーキテクチャを、処理ユニット1504として使用することもできる。
システムバス1508は、様々な市販のバスアーキテクチャを使用して、(メモリコントローラを用いる、または用いない)メモリバス、周辺機器バス、およびローカルバスに、さらに相互接続することができる、いくつかのタイプのバス構造のいずれかとすることができる。システムメモリ1506は、読出し専用メモリ(ROM)1510と、ランダムアクセスメモリ(RAM)1512とを含む。基本入出力システム(BIOS)は、ROM、EPROM、EEPROMなど不揮発性メモリ1510内に記憶され、このBIOSは、起動中などにコンピュータ1502内の要素間で情報を転送するのを助ける基本ルーチンを含む。RAM1512は、データをキャッシュするために、スタティックRAMなど高速RAMを含むこともできる。
コンピュータ1502は、好適なシャーシ(図示せず)内で外部使用するように構成することもできる内蔵ハードディスクドライブ(HDD)1514(たとえば、EIDE、SATA)と、(たとえば、取外し式フロッピー(登録商標)ディスク1518との間で読出しまたは書込みするための)磁気フロッピー(登録商標)ディスクドライブ(FDD)1516と、(たとえば、CD−ROMディスク1522を読み出す、またはDVDなど他の高容量光媒体との間で読出しもしくは書込みするための)光ディスクドライブ1520とをさらに含む。ハードディスクドライブ1514、磁気ディスクドライブ1516、および光ディスクドライブ1520は、それぞれハードディスクドライブインターフェース1524、磁気ディスクドライブインターフェース1526、および光ドライブインターフェース1528によってシステムバスに接続することができる。外部ドライブ実装用のインターフェース1524は、ユニバーサルシリアルバス(USB)およびIEEE1394インターフェース技術の少なくとも一方、または両方を含む。他の外部ドライブ接続技術も本技術革新の意図内にある。
ドライブ、およびそれらの関連するコンピュータ可読媒体は、データ、データ構造、コンピュータ実行可能命令などの不揮発性記憶を実現する。コンピュータ1502の場合、ドライブおよび媒体は、任意のデータの、好適なデジタルフォーマットでの記憶に対処する。上記のコンピュータ可読媒体についての説明は、HDD、取外し式磁気フロッピー(登録商標)ディスク、およびCDまたはDVDなど取外し式光媒体を参照しているが、zipドライブ、磁気カセット、フラッシュメモリカード、カートリッジなど、コンピュータによって読出し可能な他のタイプの媒体もまた、例示的な動作環境内で使用することができること、さらに任意のそのような媒体が、開示されている技術革新の方法を実行するためのコンピュータ実行可能命令を含むことができることを、当業者なら理解すべきである。
オペレーティングシステム1530、1つまたは複数のアプリケーションプログラム1532(たとえば、上述のLock−free CSPソルバ処理システム)、他のプログラムモジュール1534、およびプログラムデータ1536を含めて、いくつかのプログラムモジュールを、ドライブおよびRAM1512内に記憶することができる。また、オペレーティングシステム、アプリケーション、モジュール、および/またはデータのすべて、または一部分は、RAM1512内でキャッシュすることができる。本技術革新は、様々な市販のオペレーティングシステム、またはオペレーティングシステムの組合せを用いて実施することができることを理解されたい。
ユーザは、1つまたは複数の有線/無線入力デバイス、たとえばキーボード1538、およびマウス1540などポインティングデバイスを介して、コンピュータ1502にコマンドおよび情報を入力することができる。他の入力デバイス(図示せず)には、マイクロフォン、IRリモートコントロール、ジョイスティック、ゲームパッド、スタイラスペン、タッチセンサ画面などが含まれてもよい。これらの、また他の入力デバイスは、しばしば、システムバス1508に結合される入力デバイスインターフェース1542を介して処理ユニット1504に接続されるが、パラレルポート、IEEE1394シリアルポート、ゲームポート、USBポート、IRインターフェースなど、他のインターフェースによって接続することもできる。
モニタ1544、または他のタイプのディスプレイデバイスもまた、ビデオアダプタ1546など、インターフェースを介してシステムバス1508に接続される。モニタ1544に加えて、コンピュータは一般に、スピーカ、プリンタなど、他の周辺出力デバイス(図示せず)を含む。
コンピュータ1502は、遠隔コンピュータ1548など、1つまたは複数の遠隔コンピュータに対する、有線および/または無線通信を介した論理接続を使用してネットワーク環境内で動作することができる。遠隔コンピュータ1548は、ワークステーション、サーバコンピュータ、ルータ、パーソナルコンピュータ、ポータブルコンピュータ、マイクロプロセッサをベースとするエンターテイメント機器、ピアデバイスまたは他の共通ネットワークノードとすることができ、簡単にするために、メモリ/記憶デバイス1550だけが示されているが、一般に、コンピュータ1502に関して述べた要素の多数または全部を含む。図の論理接続は、ローカルエリアネットワーク(LAN)1552、および/またはより大きなネットワーク、たとえば広域ネットワーク(WAN)1554に対する有線/無線接続を含む。そのようなLANおよびWANネットワーキング環境は、事務所や会社で普通であり、イントラネットなど、それらのすべてがグローバル通信ネットワーク、たとえばインターネットに接続することができる全社コンピュータネットワークを容易にする。
コンピュータ1502は、LANネットワーキング環境内で使用されるとき、有線および/または無線通信ネットワークインターフェースまたはアダプタ1556を介してローカルネットワーク1552に接続される。アダプタ1556は、LAN1552との有線または無線通信を容易にすることができ、LAN1552もまた、無線アダプタ1556と通信するために、LAN1552上に配置された無線アクセスポイントを含むことができる。
コンピュータ1502は、WANネットワーキング環境内で使用されるとき、モデム1558を含むことができ、またはWAN1554上の通信サーバに接続され、または、インターネットによるなど、WAN1554の上で通信を確立するための他の手段を有する。モデム1558は、内部にあっても外部にあってもよく、また有線デバイスでも無線デバイスでもよく、シリアルポートインターフェース1542を介してシステムバス1508に接続される。ネットワーク環境では、コンピュータ1502に関して示されているプログラムモジュール、またはその一部分を、遠隔メモリ/記憶デバイス1550に記憶することができる。図のネットワーク接続は例示的なものであり、コンピュータ間で通信リンクを確立する他の手段を使用することができることが理解されるであろう。
コンピュータ1502は、無線通信で動作可能に配置された任意の無線デバイスまたはエンティティ、たとえば、プリンタ、スキャナ、デスクトップおよび/またはポータブルコンピュータ、ポータブルデータアシスタント、通信衛星、無線で検出可能なタグに関連付けられた任意の機器またはロケーション(たとえば、キオスク、新聞雑誌販売所、休憩室)、ならびに電話と通信するように動作可能である。これは、少なくともWiFiおよびBluetooth(商標)無線技術を含む。したがって、通信は、従来のネットワークの場合のように予め定義された構造とすることも、単に少なくとも2つのデバイス間のアドホック通信とすることもできる。
次に図16を参照すると、開示されている技術革新による並列化ソルバ処理を利用することができる例示的なコンピューティング環境1600の概略的なブロック図が示されている。システム1600は、1つまたは複数のクライアント1602を含む。クライアント1602は、ハードウェアおよび/またはソフトウェア(たとえば、スレッド、プロセス、コンピューティングデバイス)とすることができる。クライアント1602は、たとえば、本技術革新を使用することによってクッキーおよび/または関連の文脈情報を収容することができる。
システム1600はまた、1つまたは複数のサーバ1604を含む。サーバ1604もまた、ハードウェアおよび/またはソフトウェア(たとえば、スレッド、プロセス、コンピューティングデバイス)とすることができる。サーバ1604は、たとえば、本アーキテクチャを使用することによって変換を実行するためのスレッドを収容することができる。クライアント1602とサーバ1604の間の1つの可能な通信は、並列化ソルバ状態処理をサポートする2つ以上のコンピュータプロセス間で伝送されるように適合されたデータパケットの形態にあるものとすることができる。データパケットは、たとえば、クッキーおよび/または関連の文脈情報を含むことができる。システム1600は、クライアント1602とサーバ1604の間の通信を容易にするために使用することができる通信フレームワーク1606(たとえば、インターネットなどグローバル通信ネットワーク)を含む。
通信は、(光ファイバを含む)有線および/または無線技術を介してうまく機能させることができる。クライアント1602は、クライアント1602にとってローカルな情報(たとえば、クッキーおよび/または関連の文脈情報)を記憶するために使用することができる1つまたは複数のクライアントデータストア1608に動作可能に接続される。同様に、サーバ1604は、サーバ1604にとってローカルな情報を記憶するために使用することができる1つまたは複数のサーバデータストア1610に動作可能に接続される。
上述したものには、開示されている技術革新の諸例が含まれる。当然ながら、コンポーネントおよび/または方法の考えられるあらゆる組合せについて述べることは可能ではなく、多数の他の組合せおよび並べ替えが可能であることを、当業者なら理解することができる。したがって、本技術革新は、添付の特許請求の範囲の精神および範囲内に入るそのような変更、修正、および変形形態をすべて包含するものとする。さらに「includes(含む)」という用語が詳細な説明または特許請求の範囲で使用されている限り、そのような用語は、「comprising(含む、備える)」が特許請求の範囲内で転換句として使用されたとき解釈されるように「comprising」という用語と同様に包括的であるものとする。

Claims (10)

  1. 制約ソルバ処理を実行する、コンピュータによって実施されるシステムであって、
    計算スレッドの入力ソルバ状態を1セットのサポートグラフとして表すためのブックキーピングコンポーネントであって、前記入力ソルバ状態は、前記計算スレッドの処理に関連し、前記計算スレッドに作用している並列ソルバから受け取られ、前記サポートグラフは、リテラルを有する複数のノードと、前記並列ソルバに関連付けられた制約とを含み、前記複数のノードから前記制約を充足するリテラルが仮定される、ブックキーピングコンポーネントと、
    受け取ったサポートグラフのうちで同じリテラルを有するノードを併合するように、前記受け取ったサポートグラフを対ごとに併合し、前記計算スレッドの最終状態を表す併合済みグラフにするためのマージコンポーネントであって、前記併合済みグラフは、前記サポートグラフの対に含まれるノードを含む、マージコンポーネントと、
    前記並列ソルバに関して、複数の学習済み制約を加え、前記併合済みグラフに含まれるノードのリテラルが前記併合済みグラフの制約を充足しない場合、中間の仮定を変更せず以前のノードを除去するための伝播コンポーネントと
    を備えることを特徴とするシステム。
  2. 前記ブックキーピングコンポーネントは、前記計算スレッドに作用している並列ブール充足可能性(SAT)ソルバから前記入力ソルバ状態を受け取ることを特徴とする請求項1に記載のシステム。
  3. 前記ブックキーピングコンポーネントは、前記計算スレッドに作用しているCSPソルバから前記入力ソルバ状態を受け取ることを特徴とする請求項1に記載のシステム。
  4. 前記CSPソルバが、評価の束Aおよび1組の値Dに従って定義され、ただしDおよびAは同じ集合の要素であることを特徴とする請求項3に記載のシステム。
  5. 測値に基づいて変数の割当てを推論する、学習および推理コンポーネントをさらに備えることを特徴とする請求項1に記載のシステム。
  6. 前記入力ソルバ状態は、前記計算スレッドに作用している2つの並列SATソルバからのものであり、前記マージコンポーネントは、n個の新しい、異なるリテラルを前記サポートグラフのn個のコピーのそれぞれに加え、ただしnは正の整数であることを特徴とする請求項1に記載のシステム。
  7. 制約ソルバ処理の、コンピュータによって実施される方法であって、
    計算スレッドの入力ソルバ状態を1セットのサポートグラフとして表すステップと、
    並列ソルバの、前記計算スレッドの処理に関連する前記入力ソルバ状態に関連する前記サポートグラフを受け取るステップであって、前記サポートグラフは、リテラルを有する複数のノードと、前記並列ソルバに関連付けられた制約とを含み、前記複数のノードから前記制約を充足するリテラルが仮定される、ステップと、
    受け取ったサポートグラフのうちで同じリテラルを有するノードを併合するように、前記受け取ったサポートグラフを対ごとに併合し、前記計算スレッドの最終状態を表す併合済みグラフにするステップであって、前記併合済みグラフは、前記サポートグラフの対に含まれるノードを含む、ステップと、
    前記並列ソルバに関して、複数の学習済み制約を加えるステップと、
    前記併合済みグラフに含まれるノードのリテラルが前記併合済みグラフの制約を充足しない場合、中間の仮定を変更せず以前のノードを除去するステップと
    を含むことを特徴とする方法。
  8. 前記並列ソルバのそれぞれの前記サポートグラフを同時に操作するステップをさらに含むことを特徴とする請求項に記載の方法。
  9. 残りのリテラルを、仮定として指定するステップと
    をさらに含むことを特徴とする請求項に記載の方法。
  10. 前記並列ソルバはブールSATソルバであることを特徴とする請求項に記載の方法。
JP2009537409A 2006-11-20 2007-11-19 並列化制約充足問題ソルバにおけるLock−free状態併合 Active JP4707760B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/602,092 US7543266B2 (en) 2006-11-20 2006-11-20 Lock-free state merging in parallelized constraint satisfaction problem solvers
US11/602,092 2006-11-20
PCT/US2007/085149 WO2008064185A1 (en) 2006-11-20 2007-11-19 Lock-free state merging in parallelized constraint satisfaction problem solvers

Publications (3)

Publication Number Publication Date
JP2010510591A JP2010510591A (ja) 2010-04-02
JP2010510591A5 JP2010510591A5 (ja) 2010-12-02
JP4707760B2 true JP4707760B2 (ja) 2011-06-22

Family

ID=39418265

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009537409A Active JP4707760B2 (ja) 2006-11-20 2007-11-19 並列化制約充足問題ソルバにおけるLock−free状態併合

Country Status (8)

Country Link
US (1) US7543266B2 (ja)
EP (1) EP2084615B1 (ja)
JP (1) JP4707760B2 (ja)
KR (1) KR101432328B1 (ja)
CN (1) CN101542460B (ja)
CA (1) CA2668121C (ja)
IL (1) IL197775A (ja)
WO (1) WO2008064185A1 (ja)

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7987352B2 (en) * 2007-11-30 2011-07-26 Intel Corporation Booting with sub socket partitioning
US20100057647A1 (en) * 2008-09-04 2010-03-04 Microsoft Corporation Accommodating learned clauses in reconfigurable hardware accelerator for boolean satisfiability solver
CN101685408B (zh) * 2008-09-24 2013-10-09 国际商业机器公司 多个线程并行访问共享数据结构的方法及装置
US20100169618A1 (en) * 2008-12-30 2010-07-01 Microsoft Corporation Identifying concurrency control from a sequential proof
US8346704B2 (en) * 2009-05-13 2013-01-01 Microsoft Corporation Controlled constraint sharing in parallel problem solvers
US9031890B2 (en) * 2010-08-04 2015-05-12 Sherwin Han Inverse function method of boolean satisfiability (SAT)
CN102467583B (zh) * 2010-10-29 2014-07-23 国际商业机器公司 追踪不确定信号的方法和装置
US8413091B2 (en) 2011-04-22 2013-04-02 International Business Machines Corporation Enhancing redundancy removal with early merging
US8589327B2 (en) 2011-04-22 2013-11-19 International Business Machines Corporation Efficiently determining boolean satisfiability with lazy constraints
US8738554B2 (en) 2011-09-16 2014-05-27 International Business Machines Corporation Event-driven universal neural network circuit
US8874498B2 (en) 2011-09-16 2014-10-28 International Business Machines Corporation Unsupervised, supervised, and reinforced learning via spiking computation
US8799199B2 (en) 2011-12-14 2014-08-05 International Business Machines Corporation Universal, online learning in multi-modal perception-action semilattices
US8626684B2 (en) 2011-12-14 2014-01-07 International Business Machines Corporation Multi-modal neural network for universal, online learning
US8676866B2 (en) * 2012-03-19 2014-03-18 Sap Ag Computing canonical hierarchical schemas
CN104395900B (zh) 2013-03-15 2017-08-25 北京未名博思生物智能科技开发有限公司 序列比对的空间计数运算方法
CN105190632B (zh) 2013-04-04 2018-06-05 韩小文 构造非确定性(np)图灵机的多项式方法
US9311429B2 (en) 2013-07-23 2016-04-12 Sap Se Canonical data model for iterative effort reduction in business-to-business schema integration
FI20135946L (fi) * 2013-09-23 2015-03-24 Procomp Solutions Oy Rinnakkainen ratkaisun muodostaminen
US11481468B2 (en) * 2014-06-03 2022-10-25 Qualcomm Technologies, Inc. Systems and methods for solving unrestricted incremental constraint problems
US9418137B2 (en) * 2014-08-29 2016-08-16 Sherwin Han Database without structured query language
US9424103B2 (en) * 2014-09-30 2016-08-23 Hong Kong Applied Science and Technology Research Institute Company Limited Adaptive lock for a computing system having multiple runtime environments and multiple processing units
US10540477B2 (en) * 2016-05-02 2020-01-21 Siemens Industry Software Nv Space modeling language for the generation of engineering designs
CN106201988A (zh) * 2016-08-03 2016-12-07 桂林电子科技大学 一种重构高性能目标阵列的方法
KR20200083048A (ko) * 2018-12-31 2020-07-08 삼성전자주식회사 폴링 시간을 예측하는 뉴럴 네트워크 시스템 및 이를 이용한 뉴럴 네트워크 모델 처리 방법

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004513435A (ja) * 2000-11-03 2004-04-30 ベリシティ リミテッド 静的解析を使用する動的制約条件付きテスト生成のためのシステムおよび方法

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4918621A (en) 1986-08-13 1990-04-17 Intellicorp, Inc. Method for representing a directed acyclic graph of worlds using an assumption-based truth maintenance system
JPH0789220B2 (ja) * 1987-05-28 1995-09-27 富士写真フイルム株式会社 版材焼付装置
US5276775A (en) 1990-12-07 1994-01-04 Texas Instruments Inc. System and method for building knowledge-based applications
JPH0785748B2 (ja) * 1991-08-06 1995-09-20 三郎 狩野 ゴルフ場のピンに付設する標示体
US5469367A (en) * 1994-06-06 1995-11-21 University Technologies International Inc. Methodology and apparatus for modular partitioning for the machine design of asynchronous circuits
JPH10275084A (ja) * 1997-03-31 1998-10-13 Toshiba Corp 制約充足問題の解決装置及び解決方法、システム構築装置及び構築方法
US6038392A (en) * 1998-05-27 2000-03-14 Nec Usa, Inc. Implementation of boolean satisfiability with non-chronological backtracking in reconfigurable hardware
US7085748B2 (en) * 2001-02-16 2006-08-01 International Business Machines Corporation Hyper-arc consistency in a contraint satisfaction network
US7418369B2 (en) 2001-09-07 2008-08-26 The Trustees Of Princeton University Method and system for efficient implementation of boolean satisfiability
US7203917B2 (en) * 2003-04-07 2007-04-10 Nec Laboratories America, Inc. Efficient distributed SAT and SAT-based distributed bounded model checking
US7089220B2 (en) * 2003-06-24 2006-08-08 Palo Alto Research Center Incorporated Complexity-directed cooperative problem solving
US7171393B2 (en) 2003-07-22 2007-01-30 International Business Machines Corporation Solving constraint satisfaction problems using variable-range hopping
US7194710B2 (en) 2004-03-23 2007-03-20 Fujitsu Limited Scheduling events in a boolean satisfiability (SAT) solver
GB0407260D0 (en) 2004-03-31 2004-05-05 Ibm Accelerated solution of constraint satisfaction problems by partioning of the variable space
US7370296B2 (en) 2004-05-25 2008-05-06 International Business Machines Corporation Modeling language and method for address translation design mechanisms in test generation
TW200622904A (en) 2004-08-12 2006-07-01 Sandbridge Technologies Inc Method for recognition of acyclic instruction patterns

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004513435A (ja) * 2000-11-03 2004-04-30 ベリシティ リミテッド 静的解析を使用する動的制約条件付きテスト生成のためのシステムおよび方法

Also Published As

Publication number Publication date
CA2668121A1 (en) 2008-05-29
IL197775A0 (en) 2009-12-24
WO2008064185A1 (en) 2008-05-29
CA2668121C (en) 2015-04-21
KR101432328B1 (ko) 2014-08-20
EP2084615A1 (en) 2009-08-05
CN101542460B (zh) 2012-03-21
EP2084615A4 (en) 2012-08-01
IL197775A (en) 2013-07-31
JP2010510591A (ja) 2010-04-02
US20080120490A1 (en) 2008-05-22
EP2084615B1 (en) 2017-10-25
KR20090085028A (ko) 2009-08-06
US7543266B2 (en) 2009-06-02
CN101542460A (zh) 2009-09-23

Similar Documents

Publication Publication Date Title
JP4707760B2 (ja) 並列化制約充足問題ソルバにおけるLock−free状態併合
US8005770B2 (en) Parallel generation of a bayesian network
EP2175369A2 (en) Concurrent collaborative processes for data management and retrieval
CN110348798A (zh) 一组服务的状态转换
Stein et al. Algorithms and mechanisms for procuring services with uncertain durations using redundancy
Groote et al. Modelling and analysing software in mCRL2
van Dijk Sylvan: multi-core decision diagrams
Inan et al. Verification of digital and hybrid systems
Djenouri et al. GPU-based swarm intelligence for Association Rule Mining in big databases
Yang et al. Projected model counting: Beyond independent support
Straub Assessment of the comparative efficiency of software‐based Boolean, electronic, software‐based fractional value and simplified quantum principal expert systems
Bowles et al. Correct composition of dephased behavioural models
Bortolussi et al. Fluid performability analysis of nested automata models
Silva et al. Parallel asynchronous strategies for the execution of feature selection algorithms
Paige Automatic inference for higher-order probabilistic programs
Schütt et al. MR‐search: massively parallel heuristic search
Flocchini et al. Gathering and election by mobile robots in a continuous cycle
Abdulla Regular model checking: Evolution and perspectives
Timm et al. Model checking and strategy synthesis for multi-agent systems for resource allocation
Brand et al. A decision diagram operation for reachability
Jha et al. When a Graph is not so Simple: Counting Triangles in Multigraph Streams.
Chen et al. A parallel algorithm for exact Bayesian structure discovery in Bayesian networks
Prabhu et al. Parallel Exploration of Directed Acyclic Graphs using the Actor Model
Combarro et al. Solving the Kemeny ranking aggregation problem with quantum optimization algorithms
Karan et al. End-to-End Bayesian Networks Exact Learning in Shared Memory

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20101015

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20101015

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20101015

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20101105

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20101112

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110214

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: 20110308

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110315

R150 Certificate of patent or registration of utility model

Ref document number: 4707760

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250