JP5835103B2 - 充足可能性問題の計算方法、充足可能性問題の計算システム及びプログラム - Google Patents

充足可能性問題の計算方法、充足可能性問題の計算システム及びプログラム Download PDF

Info

Publication number
JP5835103B2
JP5835103B2 JP2012120166A JP2012120166A JP5835103B2 JP 5835103 B2 JP5835103 B2 JP 5835103B2 JP 2012120166 A JP2012120166 A JP 2012120166A JP 2012120166 A JP2012120166 A JP 2012120166A JP 5835103 B2 JP5835103 B2 JP 5835103B2
Authority
JP
Japan
Prior art keywords
true
calculation processing
value
processing unit
variable
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
JP2012120166A
Other languages
English (en)
Other versions
JP2013246657A (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.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2012120166A priority Critical patent/JP5835103B2/ja
Publication of JP2013246657A publication Critical patent/JP2013246657A/ja
Application granted granted Critical
Publication of JP5835103B2 publication Critical patent/JP5835103B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Complex Calculations (AREA)
  • Hardware Redundancy (AREA)

Description

本発明は、充足可能性問題の計算方法、充足可能性問題の計算システム及びプログラムに関する。
たとえば、半導体集積回路の論理検証(フォーマル検証など)において、充足可能性問題(Satisfiability problem)(以下SATという)が用いられるようになってきた。
たとえば、ゲートレベルの論理回路の検証時に、コンピュータがその論理回路を積和形(Conjunctive Normal Form : CNF)の論理式で表現し、その論理式全体を真(“1”)とするような変数の真偽値の組み合わせが存在するか否かを判定する。
回路規模の増大に伴い論理式が長大化しているため、たとえば、あるコンピュータ(マスタ)が論理式を複数に分割して複数の他のコンピュータ(クライアント)に割り当て、分割した論理式を並列に処理させる手法が考えられている。
特開平11−353357号公報 特開2002−163238号公報 米国特許第7,203,917B2号明細書
SATをマスタと複数のクライアントで処理する場合、マスタは論理式に含まれる変数に真偽値を割り当て、クライアントに通知し、クライアントはその真偽値をもとに論理式の他の変数の真偽値を算出する。この処理はインプリケーションと呼ばれる。マスタは各クライアントのインプリケーションの結果を受けてから次の変数に真偽値を割り当てる。
しかし、インプリケーションに時間がかかるクライアントがあると、他のクライアントは待機中にもかかわらず、マスタは次の変数の真偽値の通知ができず、結果としてSATの計算時間が長くなってしまう問題があった。
発明の一観点によれば、第1の計算処理部が、和積形で表される論理式に含まれる第1の変数に第1の真偽値を割り当て、割り当てた前記第1の真偽値を、前記論理式を分割して演算する複数の第2の計算処理部のうち、前記第1の変数を含む分割された論理式を演算する第2の計算処理部に対して通知し、前記第1の真偽値が通知された前記第2の計算処理部は、前記第1の真偽値を第1のレベルのキューに格納し、前記第1の真偽値に基づき、前記分割された論理式に含まれる他の変数の真偽値を算出し、前記第1の計算処理部は、前記他の変数の真偽値を算出が未完了の第2の計算処理部があっても、前記論理式に含まれる第2の変数に第2の真偽値を割り当て、割り当てた前記第2の真偽値を、前記複数の第2の計算処理部のうち、前記第2の変数を含む分割された論理式を演算する第2の計算処理部に対して通知し、前記第2の真偽値が通知された前記第2の計算処理部は、前記第2の真偽値を第2のレベルのキューに格納し、前記第2の真偽値に基づき、前記分割された論理式に含まれる他の変数の真偽値を算出する、充足可能性問題の計算方法が提供される。
開示の充足可能性問題の計算方法、充足可能性問題の計算システム及びプログラムによれば、計算時間を短縮できる。
第1の実施の形態のSATの計算方法の一例を説明する図である。 クライアントC1の変数x1の真偽値に基づくインプリケーションが終了したときの様子を示す図である。 クライアントC2の変数x1と変数x5の真偽値に基づくインプリケーションが終了したときの様子を示す図である。 SATの計算を行う第2の実施の形態の計算システムの一例を示す図である。 コンピュータのハードウェアの一例を示す図である。 マスタの動作の一例を示すフローチャートである。 各クライアントが実行中のキューのレベルの一例を示す図である。 マスタ側のキューとインプリケーションテーブル及びアサインテーブルの一例を示す図である。 クライアントの動作の一例を示すフローチャートである。 許容値の設定方法の一例を示す図である。 許容値の設定方法の一例を示すフローチャートである。
以下、発明を実施するための形態を、図面を参照しつつ説明する。
(第1の実施の形態)
図1は、第1の実施の形態のSATの計算方法の一例を説明する図である。
本実施の形態のSATの計算方法は、図1に示されているように、複数の計算処理部M,C1,C2,…,Cnを有する計算システムで行われる。計算処理部M,C1,C2,…,Cnは、たとえば、検証対象の論理回路をCNFの論理式で表現し、その論理式全体を真(“1”)とするような変数の真偽値の組み合わせが存在するか否かを判定する。
以下の説明では、計算処理部MをマスタM、計算処理部C1〜CnをクライアントC1〜Cnと呼ぶことにする。CNFで表される論理式は、たとえば、マスタMによって分割され、クライアントC1〜Cnに割り当てられている。
マスタMは、まず、CNFで表される論理式に含まれる、ある変数に真偽値を割り当てる。図1の上側に示されている例では、マスタMは、変数x1に真偽値を割り当てている。マスタMは、変数x1に“0”(偽)または“1”(真)の何れかを割り当て、レベル1のキューmq1(たとえば、マスタM内のメモリまたはマスタMに接続されるメモリ(図示せず)に構築される)に格納する。
そして、マスタMは、割り当てた変数x1の真偽値を、クライアントC1〜Cnのうち、変数x1を含む分割された論理式を演算するもの(図1の例ではクライアントC1,C2,Cn)に通知する。
クライアントC1,C2,Cnは、その真偽値を、たとえば、クライアントC1,C2,Cn内のメモリまたはクライアントC1,C2,Cnに接続されるメモリ(図示せず)に構築されるレベル1のキューcq11,cq21,cqn1に格納する。
そして、クライアントC1,C2,Cnは、格納された変数x1の真偽値に基づき、インプリケーションを実施する。これにより、他の変数の真偽値が算出される。
図1の下側に示されている例では、クライアントCnが、インプリケーションにより、変数x9の真偽値を算出し、レベル1のキューcqn1に格納するとともに、マスタMに通知している。マスタMは、コンフリクトの検出などのため、通知された変数x9の真偽値をレベル1のキューmq1に格納する。これに対して、クライアントC1,C2は、インプリケーションに時間がかかっており、インプリケーション結果は出力されていない。
一方、マスタMは、インプリケーションが未完了のクライアントがあっても、論理式に含まれる次の変数に真偽値を割り当てる。図1の下側の例では、マスタMは、変数x3に真偽値を割り当てている。マスタMは、変数x3に“0”または“1”の何れかを割り当て、レベル2のキューmq2に格納する。
そして、マスタMは、決定した変数x3の真偽値を、クライアントC1〜Cnのうち、変数x3を含む分割された論理式を演算するもの(図1の例ではクライアントC1,C2,Cn)に通知する。
変数x3の真偽値が通知されたクライアントC1,C2,Cnは、その真偽値を、レベル2のキューcq12,cq22,cqn2に格納する。
そして、クライアントC1,C2,Cnは、変数x1の真偽値に基づくインプリケーションが終わると、レベル2のキューcq12,cq22,cqn2に格納された変数x3の真偽値に基づきインプリケーションを実施する。
図2は、クライアントC1の変数x1の真偽値に基づくインプリケーションが終了したときの様子を示す図である。
図2の例では、クライアントC1は、インプリケーションにより、変数x5の真偽値を算出し、その結果を、レベル1のキューcq11に格納するとともに、マスタMと、変数x5を含む分割された論理式を演算するクライアントC2に通知している。クライアントC2とマスタMは通知された変数x5の真偽値をレベル1のキューcq21,mq1に格納する。
図3は、クライアントC2の変数x1と変数x5の真偽値に基づくインプリケーションが終了したときの様子を示す図である。
図3の例では、クライアントC2は、変数x1と変数x5の真偽値に基づくインプリケーションにより、変数x8の真偽値を算出し、真偽値をレベル1のキューcq21に格納するとともに、マスタMに通知している。マスタMは通知された変数x8の真偽値をレベル1のキューmq1に格納する。また、図3の例では、クライアントCnでの、変数x3の真偽値に基づくインプリケーションが終了して、変数x10の真偽値が得られている。このとき、クライアントCnは、変数x10の真偽値を、レベル2のキューcqn2に格納するとともに、マスタMに通知している。マスタMは通知された変数x10の真偽値をレベル2のキューmq2に格納する。
このように、インプリケーションが遅いクライアントが存在しても、他のクライアントは、新たに通知された変数の真偽値に基づくインプリケーションを行うことができる。そのため、待機中のクライアントが発生することが抑制され、SATの計算時間を短縮することができる。
(第2の実施の形態)
図4は、SATの計算を行う第2の実施の形態の計算システムの一例を示す図である。
ユーザコンピュータ10は、半導体集積回路の設計ツールを実行し、フォーマル検証時などにおいて、検証対象の論理回路をCNFの論理式で表現し、マスタ11に通知する。マスタ11は、クライアント12−1,12−2,…,12−nとともに、通知された論理式についてのSATの計算を行う。ユーザコンピュータ10とマスタ11、マスタ11とクライアント12−1〜12−n、及びクライアント12−1〜12−n同士は、たとえば、有線または無線通信により、情報の送受信を行う。
ユーザコンピュータ10、マスタ11及びクライアント12−1〜12−nは、たとえば、以下のようなハードウェアを有するコンピュータで実現可能である。
図5は、コンピュータのハードウェアの一例を示す図である。
コンピュータ50は、CPU(Central Processing Unit)51、RAM(Random Access Memory)52、HDD(Hard Disk Drive)53、画像信号処理部54、入力信号処理部55、ディスクドライブ56及び通信部57を有する。上記ユニットは、コンピュータ50内でバス58に接続されている。
CPU51は、コンピュータ50における情報処理を制御する演算装置である。CPU51は、HDD53に記憶されたプログラムやデータの少なくとも一部を読み出してRAM52に展開し、プログラムを実行する。なお、コンピュータ50は、複数の演算装置を備えて、情報処理を分散して実行してもよい。
RAM52は、CPU51が扱うプログラムやデータを一時的に記憶しておく揮発性メモリである。なお、コンピュータ50は、RAM以外の種類のメモリを備えていてもよく、複数個のメモリを備えてもよい。
HDD53は、OS(Operating System)プログラムやアプリケーションプログラムなどのプログラム、及び、情報処理に用いられるデータを記憶する不揮発性の記憶装置である。HDD53は、CPU51の命令に従って、内蔵の磁気ディスクに対する読み書きを行う。なお、コンピュータ50は、HDD以外の不揮発性の記憶装置(たとえば、SSD(Solid State Drive))を備えていてもよく、複数の記憶装置を備えてもよい。
画像信号処理部54は、CPU51の命令に従って、コンピュータ50に接続されたディスプレイ54aに画像を出力する。ディスプレイ54aとして、たとえば、CRT(Cathode Ray Tube)ディスプレイや液晶ディスプレイなどを用いることができる。
入力信号処理部55は、コンピュータ50に接続された入力デバイス55aから入力信号を取得し、CPU51に出力する。入力デバイス55aとして、たとえば、マウスやタッチパネルなどのポインティングデバイスや、キーボードなどを用いることができる。
ディスクドライブ56は、記録媒体56aに記録されたプログラムやデータを読み取る駆動装置である。記録媒体56aとして、たとえば、フレキシブルディスク(FD: Flexible Disk)やHDDなどの磁気ディスク、CD(Compact Disc)やDVD(Digital Versatile Disc)などの光ディスク、光磁気ディスク(MO:Magneto-Optical disk)を使用できる。ディスクドライブ56は、たとえば、CPU51の命令に従って、記録媒体56aから読み取ったプログラムやデータをRAM52またはHDD53に格納する。
通信部57は、ネットワーク57aに接続して通信を行う通信インタフェースである。ネットワーク57aへの接続方法は、有線でも無線でもよい。すなわち、通信部57は、有線通信インタフェースでも無線通信インタフェースでもよい。
以上のようなハードウェア構成によって、本実施の形態の処理機能を実現することができる。
(マスタ11の動作例)
図6は、マスタの動作の一例を示すフローチャートである。
マスタ11は、CNFの論理式中に真偽値が未割り当ての変数があるか否かを判定する(ステップS10)。論理式は、たとえば、以下のように表現されるものである。
φ=(x1b+x2)(x1b+x3+x9)(x2b+x3b+x4)(x4b+x5+x10)(x4b+x6+x11)(x5b+x6b)(x1+x7+x12b)(x1+x8)(x7b+x8b+x13b) (1)
なお、式(1)で、“x1b”、“x2b”などは、変数x1、x2の否定を示している。すなわち、変数x1が“1”のときは、変数x1bは“0”である。
上式のような論理式中の全ての変数に真偽値が割り当てられていれば、マスタ11は、ステップS22の処理に進み、真偽値が未割り当ての変数がある場合には、論理式中のある変数に、真偽値の割り当てを行う(ステップS11)。この処理は、Decisionとも呼ばれる。最初のDecisionは、レベル1のDecision、次のDecisionは、レベル2のDecision、その次のDecisionは、レベル3のDecisionなどと呼ばれる。
第1の実施の形態のマスタMと同様、マスタ11も、変数に真偽値の割り当てを行うたびに、新たなレベルのキューを生成する。なお、マスタ11は、変数の数のレベルだけ、予めキューを生成しておくようにしてもよい。
次に、マスタ11は、生成したキューレベル(Decisionのレベルと同じ)−最も遅いクライアントが実行中のキューレベル≦許容値であるか否かを判断する(ステップS12)。
図7は、各クライアントが実行中のキューのレベルの一例を示す図である。
図7の例では、クライアント12−2〜12−nは、レベル4のキューを実行中であり、レベル4のキューの生成時に真偽値が割り当てられた変数に基づくインプリケーションを行っている。クライアント12−1は最も遅く、レベル2のキューの生成時に真偽値が割り当てられた変数に基づくインプリケーションを行っている。
このような場合、ステップS11の処理で、新たなレベル5のキューが生成されると、生成したキューレベル−最も遅いクライアントが実行中のキューレベル=3である。たとえば、許容値が4である場合には、3≦4であるので、ステップS13の処理に進み、マスタ11は、変数に割り当てた真偽値を、その変数を含む論理式を演算するクライアントに通知する。この場合、図7の例では、クライアント12−2〜12−nは、次のレベルのキューを実行可能である。ステップS13の処理の後は、ステップS14の処理が行われる。
一方、ステップS12の処理において、たとえば、クライアント12−1がレベル2のキューの実行中のままで、ステップS11の処理で、レベル7のキューが生成されたとする。この場合、7−2>4となるので、ステップS13の処理はスキップされ、変数に割り当てられた真偽値は、クライアント12−2〜12−nに通知されず、ステップS14の処理が行われる。
なお、許容値としては、たとえば、ユーザコンピュータ10から所定の値が与えられる。また、マスタ11が自動的に設定するようにしてもよい(詳細は後述する)。
ステップS14の処理では、マスタ11は、クライアント12−1〜12−nからインプリケーション結果を受信し、その結果を各クライアント12−1〜12−nが実行しているキューのレベルに対応したマスタ11側のキューに格納する。
このときマスタ11は、キューに対応して、たとえば、以下のようなインプリケーションテーブルと、アサインテーブルを作成する。
図8は、マスタ側のキューとインプリケーションテーブル及びアサインテーブルの一例を示す図である。
レベル1のキューには、変数x1に真偽値が割り当てられたことに応じて、クライアント12−1〜12−nの何れかから送られてきた変数x5,x8のインプリケーションの結果が格納されている。また、レベル2のキューには、変数x3に真偽値が割り当てられたことに応じて、クライアント12−1〜12−nの何れかから送られてきた変数x9のインプリケーションの結果が格納されている。
マスタ11は、このようなインプリケーションの結果を、たとえば、図8のようなインプリケーションテーブルとアサインテーブルで管理する。インプリケーションテーブルには、真偽値が割り当てられた変数(literal)と、そのもととなる変数(origin)と、キューのレベルが管理されている。
アサインテーブルには、変数と、その変数に割り当てられた真偽値と、キューのレベルが管理されている。図8の例では、インプリケーションにより、変数x9の真偽値がUndef(未定義)の状態から、“1”に更新され、レベルもUndefの状態から“2”に更新されている。
このようなインプリケーションテーブルやアサインテーブルは、クライアント側でも生成されるようにしてもよい。
ステップS14の処理の後、マスタ11は、待機中のクライアントの割合が所定の割合(X%)よりも大きいか否かを判定する(ステップS15)。
待機中のクライアントの割合(%)>X%であれば、マスタ11は、ステップS16の処理を行い、待機中のクライアントの割合≦X%であれば、マスタ11は、ステップS14の処理に戻り、インプリケーション結果を受信する状態となる。所定の割合は、ユーザコンピュータ10からマスタ11に、たとえば、90%、80%などと通知される。
ステップS16の処理では、マスタ11は、コンフリクトがあるか否か判定する。変数に対する真偽値の割り当ての結果、和項が“0”となってしまう場合、コンフリクトが発生したと判定される。コンフリクトは、クライアント12−1〜12−nの何れかから通知される場合もある。
マスタ11は、コンフリクトがあると判定した場合には、ステップS17の処理に進み、コンフリクトがない場合には、ステップS10の処理からの処理を繰り返す。
ステップS17の処理では、マスタ11は、複数のレベルのキューを1つに変更する。そして、マスタ11は、アナライザを用いてコンフリクトの分析を行う(ステップS18)。キューを1つにするには、大きいレベルのキューの先頭を、前のレベルの末尾につなげるようにすればよい。アナライザが複数のレベルのキューを処理できるものであれば、キューを1つにしなくてもよい。
マスタ11は、分析の結果、コンフリクトの原因が判明した(分析が成功した)か否かを判定し(ステップS19)、コンフリクトの原因が判明した場合、ステップS20の処理を行う。
ステップS20の処理では、マスタ11は、Decisionをやり直すDecisionのレベル(バックトラックレベル)を各クライアント12−1〜12−nに通知する。たとえば、クライアント12−1においてレベル2のキューでコンフリクトが発生した場合、クライアント12−2〜12−nにバックトラックレベルとしてレベル1を通知する。このとき、マスタ11は、図8に示したようなアサインテーブルにおいて、クライアント12−2〜12−nがレベル2以降のDecisionに基づきインプリケーションした変数をUndef状態に戻す。
その後、マスタ11は、ステップS13に戻り、新たに変数に割り当てた真偽値を、その変数を含む論理式を演算するクライアントに通知し、ステップS14からの処理を繰り返す。
一方、コンフリクトの原因が判明しなかった(分析が成功しなかった)場合、マスタ11は、充足可能性問題は充足不可と判定し(ステップS21)、処理を終える。
マスタ11は、ステップS10の処理で、CNFの論理式中に真偽値が未割り当ての変数がないと判定した場合は、インプリケーションなどを実施中であり、ビジーなクライアントがあるかないかを判定する(ステップS22)。ビジーなクライアントがある場合には、マスタ11は、ステップS14からの処理を行い、ビジーなクライアントがなければ、充足可能性問題は、充足可と判定し(ステップS23)、処理を終える。
次に、クライアント12−1〜12−nの動作例を説明する。
(クライアント12−1〜12−nの動作例)
以下では、クライアント12−1の動作を説明するが、他のクライアント12−2〜12−nについても同様の動作が行われる。
図9は、クライアントの動作の一例を示すフローチャートである。
クライアント12−1は、マスタ11からのメッセージを受信すると(ステップS30)、そのメッセージの内容を判定する(ステップS31)。メッセージがインプリケーションを指示するもので、クライアント12−1が演算する論理式に含まれる変数の真偽値が通知された場合、クライアント12−1は、ステップS32の処理を行う。ステップS32の処理では、クライアント12−1は、真偽値が割り当てられた変数を、マスタ11から指定されるDecisionまたはキューのレベルをもとに、指定されたレベルのキューに格納する。
その後、クライアント12−1は、インプリケーションが未実行の一番小さいレベルのキューに格納された、真偽値を割り当て済みの変数に基づくインプリケーションを実行する(ステップS33)。インプリケーションとしては、たとえば、BCP(Boolean Constraint Propagation)が適用可能である。BCPは、ある変数に真偽値を割り当てたときに、論理式に含まれる和項を真にするように他の変数に真偽値を連鎖的に割り当てていく手法である。
インプリケーションが終了すると、クライアント12−1は、インプリケーション結果として、変数への真偽値の割り当て結果を、マスタ11及び、その変数を含む論理式を演算するクライアントに通知し(ステップS34)、処理を終える。
一方、ステップS31の処理で、クライアント12−1は、マスタ11からのメッセージの内容が、バックトラックレベルを指示するものであると判定した場合には、指示されたバックトラックレベルまで、バックトラックを実行し(ステップS35)、処理を終了する。
以上のように、本実施の形態のSATの計算方法によれば、コンフリクトが発生していない状態では、インプリケーションが終了していないクライアントがあっても、マスタは変数に真偽値を割り当て、各クライアントに通知する。各クライアントは、その真偽値を新たなレベルのキューに格納し、前のレベルのキューでのインプリケーション後に、その真偽値を用いたインプリケーションを行う。これにより、インプリケーションが遅いクライアントが存在しても、他のクライアントは、新たに通知された変数の真偽値に基づくインプリケーションを行うことができる。そのため、待機中のクライアントが発生することが抑制され、SATの計算時間を短縮することができる。
また、本実施の形態のSATの計算方法によれば、以下のケースが現れるたびに、クライアント12−1〜12−n間のワークロードバランスが改善される。たとえば、クライアント12−1が他のクライアント12−2〜12−nに比べてレベルkのキューでのインプリケーションに時間がかかっているケースの場合を考える。この場合、レベルk+1〜レベルk+m(mは2以上)のキューでのインプリケーションの処理時間の平均が、クライアント12−1のものよりクライアント12−2〜12−nのものの方が長いとき、ワークロードバランスが改善され、計算時間はより短縮される。
また、図6のステップS12の処理のように、マスタ11は、生成したキューレベルと最も遅いクライアントが実行中のキューレベルとの差分が許容値より大きい場合には、クライアントへの真偽値の通知を行わない。これにより、クライアント間で、演算を行うキューのレベルが開きすぎないようにすることができる。クライアント間で、演算を行うキューのレベルが開きすぎると、最も遅いクライアントが実行しているキューのレベルでコンフリクトが発生したときに、処理が進んでいるクライアントがインプリケーションをやり直す量が増えてしまう可能性がある。また、マスタ11が次の変数への真偽値の割り当てをやり直す回数も増えてしまう。上記の処理により、クライアント間で、演算を行うキューのレベルが開きすぎないようにすることで、このような問題の発生を抑制できる。
また、図6のステップS15の処理のように、マスタ11は、待機中のクライアントの割合が、所定の割合よりも大きい場合に、次の変数に真偽値の割り当てを行う処理に進めるようにしている。これにより、待機中のクライアントの割合が少ないにも関わらず、次の変数への真偽値の割り当てが行われることが抑制される。待機中のクライアントの割合が少ないということは、コンフリクトが発生する可能性があり、次の変数への真偽値の割り当てや、割り当てた真偽値に基づくインプリケーションが無駄になる可能性がある。上記の処理により、待機中のクライアントの割合が少ないにも関わらず、次の変数への真偽値の割り当てが行われることが抑制されることで、このような問題の発生を抑制できる。
(第3の実施の形態)
上記の第2の実施の形態のSATの計算方法では、図6のステップS12の処理で使用する許容値を、ユーザ側から指定される値としたが、マスタ11が設定するようにしてもよい。
図10は、許容値の設定方法の一例を示す図である。
マスタ11は、演算部60、選択部61、タイム/コンフリクトカウンタ62の機能を実現する。
演算部60は、選択部61から出力される許容値に応じて、ステップS12の判定処理を満たす場合に、変数に割り当てた真偽値を、その変数を含む論理式を演算するクライアントに通知する。また、演算部60は、たとえば、レベルnまでキューが生成されている場合で、レベルk+1のキューでコンフリクトが発生した場合、レベルk+1〜nまでのキューに格納された変数の真偽値をUndef状態にして、許容値としてn−(k+1)を出力する。
選択部61は、タイム/コンフリクトカウンタ62からの選択信号に応じて、演算部60から出力される許容値か、論理式の変数の数Nまたはユーザの入力値を選択して、許容値として演算部60に出力する。
タイム/コンフリクトカウンタ62は、時間及び、コンフリクト数をカウントする。また、タイム/コンフリクトカウンタ62は、コンフリクトがない状態で、所定の時間(Tmax)を超えるか、一定時間内のコンフリクト数が所定の数(Cmin)以下の場合、選択部61に、論理式の変数の数Nまたはユーザの入力値を選択させる。
図11は、許容値の設定方法の一例を示すフローチャートである。
マスタ11は、コンフリクト発生の有無を判定する(ステップS40)。コンフリクトがある場合には、演算部60は、変数に割り当てられた真偽値をUndefにするキューのレベルの数(n−(k+1))を取得して出力する(ステップS41)。また、タイム/コンフリクトカウンタ62は、コンフリクト数をインクリメントする(ステップS42)。
また、タイム/コンフリクトカウンタ62は、一定時間内におけるコンフリクト数≦Cminであるか否かを判定する(ステップS43)。そして、タイム/コンフリクトカウンタ62は、コンフリクト数がCminより大きい場合には、選択部61に、演算部60から出力されるn−(k+1)を許容値として選択させ、演算部60に設定させる(ステップS44)。その後、ステップS48の処理が行われる。
一方、コンフリクトが発生していない場合、タイム/コンフリクトカウンタ62は、コンフリクトが発生していない時間が、Tmaxより長いか否かを判定する(ステップS45)。コンフリクトが発生していない時間が、Tmaxより長い場合、またはステップS43の処理で、コンフリクト数がCmin以下の場合、タイム/コンフリクトカウンタ62は、リセットされる(ステップS46)。
また、タイム/コンフリクトカウンタ62は、選択部61に、論理式の変数の数Nまたはユーザの入力値を許容値として選択させ、演算部60に設定させる(ステップS47)。その後、ステップS48の処理が行われる。一方、コンフリクトが発生していない時間が、Tmax以下の場合にも、ステップS48の処理が行われる。
ステップS48の処理では、マスタ11は、充足可能性問題の計算が終了したか否かを判定し、計算が終了した場合には許容値の設定処理を終え、計算が終了していない場合には、ステップS40からの処理を繰り返す。
以上のような許容値の設定方法によれば、たとえば、SATが簡単なもので、コンフリクト数が少ない、またはコンフリクトがない期間が所定の期間を超えると、許容値を論理式中の変数の数Nまたはユーザの入力値に設定することができる。許容値が変数の数Nに設定された場合には、あるクライアントがレベル1のキューを実行中でも、他のクライアントはNレベルのキューまでインプリケーションを進められる。
一方、たとえば、SATが難しく、コンフリクト数が多い、またはコンフリクトが頻繁に起きる場合、許容値は、実際にコンフリクトが発生したキューのレベル(k+1)と、最も演算が進んでいるクライアントが実行中のキューのレベルnに応じて設定される。
コンフリクト数が多い、またはコンフリクトが頻繁に起きる場合にも、許容値を大きくすると、変数をUndefにするレベル数が増えてしまうので、処理時間が増える。そのため、上記のように許容値を切り替えるようにすることで、そのような無駄な処理時間が発生することを抑制できる。その結果として、SATの計算速度を速めることができる。
なお、前述したように、上記の充足可能性問題の計算方法は、コンピュータによって実現することができる。その場合、充足可能性問題の計算システムが有すべき機能の処理内容を記述したプログラムが提供される。そのプログラムを1または複数のコンピュータで実行することにより、上記処理内容がコンピュータ上で実現される(たとえば、複数の演算装置を有しているコンピュータの場合には、1つのコンピュータ上でも実現可能である)。
処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記憶装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記憶装置には、ハードディスク装置(HDD)、フレキシブルディスク(FD)、磁気テープなどがある。光ディスクには、DVD、DVD−RAM、CD−ROM(Compact Disc Read Only Memory)、CD−R(Recordable)/RW(ReWritable)などがある。光磁気記録媒体には、MO(Magneto-Optical disk)などがある。
プログラムを流通させる場合には、たとえば、そのプログラムが記録されたDVD、CD−ROMなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
プログラムを実行するコンピュータは、たとえば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、ネットワークを介して接続されたサーバコンピュータからプログラムが転送されるごとに、逐次、受け取ったプログラムに従った処理を実行することもできる。
また、上記の処理機能の少なくとも一部を、DSP(Digital Signal Processor)、ASIC(Application Specific Integrated Circuit)、PLD(Programmable Logic Device)などの電子回路で実現することもできる。
以上、実施の形態に基づき、本発明の充足可能性問題の計算方法、充足可能性問題の計算システム及びプログラムの一観点について説明してきたが、これらは一例にすぎず、上記の記載に限定されるものではない。
M 計算処理部(マスタ)
C1〜Cn 計算処理部(クライアント)
mq1,cq11,cq21,cqn1 レベル1のキュー
mq2,cq12,cq22,cqn2 レベル2のキュー

Claims (8)

  1. 第1の計算処理部が、和積形で表される論理式に含まれる第1の変数に第1の真偽値を割り当て、割り当てた前記第1の真偽値を、前記論理式を分割して演算する複数の第2の計算処理部のうち、前記第1の変数を含む分割された論理式を演算する第2の計算処理部に対して通知し、
    前記第1の真偽値が通知された前記第2の計算処理部は、前記第1の真偽値を第1のレベルのキューに格納し、前記第1の真偽値に基づき、前記分割された論理式に含まれる他の変数の真偽値を算出し、
    前記第1の計算処理部は、前記他の変数の真偽値を算出が未完了の第2の計算処理部があっても、前記論理式に含まれる第2の変数に第2の真偽値を割り当て、割り当てた前記第2の真偽値を、前記複数の第2の計算処理部のうち、前記第2の変数を含む分割された論理式を演算する第2の計算処理部に対して通知し、
    前記第2の真偽値が通知された前記第2の計算処理部は、前記第2の真偽値を第2のレベルのキューに格納し、前記第2の真偽値に基づき、前記分割された論理式に含まれる他の変数の真偽値を算出する、充足可能性問題の計算方法。
  2. 前記第1の計算処理部は、前記論理式に含まれる変数に真偽値を割り当てるたびに、新たなレベルのキューに前記真偽値を格納し、当該レベルと、前記複数の第2の計算処理部のうちで最も計算が遅れている第2の計算処理部が計算を実行中のキューのレベルとの差分が、許容値以下の場合に前記真偽値の通知を行う、請求項1に記載の充足可能性問題の計算方法。
  3. 前記第1の計算処理部は、一定時間におけるコンフリクト数が所定数より多いとき、前記新たなレベルと、コンフリクトが発生したレベルとの差分を、前記許容値として設定する、請求項2に記載の充足可能性問題の計算方法。
  4. 前記第1の計算処理部は、一定時間におけるコンフリクト数が所定数以下のとき、前記論理式に含まれる変数の数を、前記許容値として設定する、請求項2または3に記載の充足可能性問題の計算方法。
  5. 前記第1の計算処理部は、コンフリクト数が発生しない時間が所定の時間よりも長いとき、前記論理式に含まれる変数の数を、前記許容値として設定する、請求項2乃至4の何れか一項に記載の充足可能性問題の計算方法。
  6. 前記第1の計算処理部は、前記複数の第2の計算処理部のうち、待機中の第2の計算処理部の割合が所定の割合よりも大きいとき、前記第2の真偽値の割り当てを許容する、請求項1乃至5の何れか一項に記載の充足可能性問題の計算方法。
  7. 第1の計算処理部と、複数の第2の計算処理部とを有し、
    前記第1の計算処理部が、和積形で表される論理式に含まれる第1の変数に第1の真偽値を割り当て、割り当てた前記第1の真偽値を、前記論理式を分割して演算する前記複数の第2の計算処理部のうち、前記第1の変数を含む分割された論理式を演算する第2の計算処理部に対して通知し、
    前記第1の真偽値が通知された前記第2の計算処理部は、前記第1の真偽値を第1のレベルのキューに格納し、前記第1の真偽値に基づき、前記分割された論理式に含まれる他の変数の真偽値を算出し、
    前記第1の計算処理部は、前記他の変数の真偽値を算出が未完了の第2の計算処理部があっても、前記論理式に含まれる第2の変数に第2の真偽値を割り当て、割り当てた前記第2の真偽値を、前記複数の第2の計算処理部のうち、前記第2の変数を含む分割された論理式を演算する第2の計算処理部に対して通知し、
    前記第2の真偽値が通知された前記第2の計算処理部は、前記第2の真偽値を第2のレベルのキューに格納し、前記第2の真偽値に基づき、前記分割された論理式に含まれる他の変数の真偽値を算出する、充足可能性問題の計算システム。
  8. 第1の計算処理部が、和積形で表される論理式に含まれる第1の変数に第1の真偽値を割り当て、割り当てた前記第1の真偽値を、前記論理式を分割して演算する複数の第2の計算処理部のうち、前記第1の変数を含む分割された論理式を演算する第2の計算処理部に対して通知し、
    前記第1の真偽値が通知された前記第2の計算処理部は、前記第1の真偽値を第1のレベルのキューに格納し、前記第1の真偽値に基づき、前記分割された論理式に含まれる他の変数の真偽値を算出し、
    前記第1の計算処理部は、前記他の変数の真偽値を算出が未完了の第2の計算処理部があっても、前記論理式に含まれる第2の変数に第2の真偽値を割り当て、割り当てた前記第2の真偽値を、前記複数の第2の計算処理部のうち、前記第2の変数を含む分割された論理式を演算する第2の計算処理部に対して通知し、
    前記第2の真偽値が通知された前記第2の計算処理部は、前記第2の真偽値を第2のレベルのキューに格納し、前記第2の真偽値に基づき、前記分割された論理式に含まれる他の変数の真偽値を算出する、
    処理をコンピュータに実行させるプログラム。
JP2012120166A 2012-05-25 2012-05-25 充足可能性問題の計算方法、充足可能性問題の計算システム及びプログラム Expired - Fee Related JP5835103B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2012120166A JP5835103B2 (ja) 2012-05-25 2012-05-25 充足可能性問題の計算方法、充足可能性問題の計算システム及びプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012120166A JP5835103B2 (ja) 2012-05-25 2012-05-25 充足可能性問題の計算方法、充足可能性問題の計算システム及びプログラム

Publications (2)

Publication Number Publication Date
JP2013246657A JP2013246657A (ja) 2013-12-09
JP5835103B2 true JP5835103B2 (ja) 2015-12-24

Family

ID=49846365

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012120166A Expired - Fee Related JP5835103B2 (ja) 2012-05-25 2012-05-25 充足可能性問題の計算方法、充足可能性問題の計算システム及びプログラム

Country Status (1)

Country Link
JP (1) JP5835103B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6044410B2 (ja) * 2013-03-25 2016-12-14 富士通株式会社 論理検証プログラム、論理検証方法および論理検証装置

Also Published As

Publication number Publication date
JP2013246657A (ja) 2013-12-09

Similar Documents

Publication Publication Date Title
US11593179B2 (en) Capacity and load analysis using storage attributes
US10924535B2 (en) Resource load balancing control method and cluster scheduler
US9715408B2 (en) Data-aware workload scheduling and execution in heterogeneous environments
JP6083300B2 (ja) プログラム、並列演算方法および情報処理装置
US9189273B2 (en) Performance-aware job scheduling under power constraints
JP5121936B2 (ja) リソース割り当て装置及びリソース割り当てプログラム及び記録媒体及びリソース割り当て方法
Sekanina et al. Automated search-based functional approximation for digital circuits
US10397315B2 (en) Information processing apparatus and load distribution control method
US20120266120A1 (en) Glitch power reduction
US20190004728A1 (en) Method and device for managing storage system
US8677304B2 (en) Task-based multi-process design synthesis
US10248466B2 (en) Managing workload distribution among processing systems based on field programmable devices
US9734268B2 (en) Slack redistribution for additional power recovery
JP2021068393A (ja) 情報処理システム、情報処理装置、および情報処理プログラム
JP5835103B2 (ja) 充足可能性問題の計算方法、充足可能性問題の計算システム及びプログラム
US8341565B2 (en) Task-based multi-process design synthesis with reproducible transforms
US10394615B2 (en) Information processing apparatus and job management method
US8392866B2 (en) Task-based multi-process design synthesis with notification of transform signatures
JP2008171153A (ja) タスク管理装置
US8621420B2 (en) Modeling user perceived use case affinity
Gunter et al. A Machine Learning Approach for Predicting the Difficulty of FPGA Routing Problems
JP7447186B2 (ja) 計算機システム及び仮想化基盤の構築制御方法
US20230023241A1 (en) Computer-readable recording medium storing machine learning program, information processing device, and machine learning method
JP2016212674A (ja) ソフトウエアハードウエア割り当て装置、ソフトウエアハードウエア割り当て方法、および、ソフトウエアハードウエア割り当てプログラム
JPWO2018167940A1 (ja) 情報処理装置、情報処理方法及び情報処理プログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20150319

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20150825

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20151019

R150 Certificate of patent or registration of utility model

Ref document number: 5835103

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees