以下に図面を参照して、本発明にかかる割当制御プログラム、割当制御方法および情報処理装置の実施の形態を詳細に説明する。
(実施の形態)
図1は、実施の形態にかかる割当制御方法の一実施例を示す説明図である。図1において、情報処理装置101は、アニーリングマシンAMの利用を制御するコンピュータである。アニーリングマシンAMは、組合せ最適化問題の演算を行うコンピュータ(イジング演算装置)である。
例えば、アニーリングマシンAMは、複数の演算ユニット102により、組合せ最適化問題の演算を行う。演算ユニット102は、組合せ最適化問題を解くデバイスであり、論理的に複数のパーティションに分割可能である。パーティションに分割するとは、演算の際に利用されるハードウェアリソースの範囲を区切ることである。
演算ユニット102では、それぞれのパーティションで独立して異なる問題を解くことができる。演算ユニット102は、例えば、1チップの半導体集積回路であり、FPGA(Field Programmable Gate Array)などを用いて実現される。
具体的には、例えば、演算ユニット102は、計算対象の問題(組合せ最適化問題)を変換したイジングモデルに含まれる複数のスピンに対応する複数のビット(スピンビット)のそれぞれの値の組合せ(状態)のうち、エネルギー関数が最小値となるときの各ビットの値(基底状態)を、解として求める。
演算ユニット102では、例えば、イジングモデルのスピンビット数と、ビット間の重み係数のビット数とを変更可能である。ここで、スピンビット数は、イジングモデルを実現する回路の規模(問題の規模)に相当する。規模が大きいほど、多数の組合せ候補をもつ組合せ最適化問題に演算ユニット102を適用できる。
また、重み係数のビット数は、ビット間の相互関係の表現の精度(問題における条件表現の精度)に相当する。精度が高いほど、スピン反転時のエネルギー変化に対する条件を詳細に設定できる。ある問題では、スピンビット数が大きく、重み係数を表すビット数が小さいことがある。あるいは、別の問題では、スピンビット数が小さく、重み係数を表すビット数が大きいこともある。
演算ユニット102では、イジングモデルの状態を表すスピンビット数と重み係数のビット数との設定を可能とすることで、規模と精度とを可変にし、パーティションモードを変更することができる。その結果、1つの演算ユニット102において、問題に合った規模および精度を実現できる。
すなわち、アニーリングマシンAMでは、利用可能な全量子ビットを、多数の量子ビットで構成される大規模計算用から、少数の量子ビットで構成される小規模計算用まで複数のパーティションに分けて管理することができる。これにより、問題の規模や要求精度に応じたパーティションモードに設定された演算ユニット102により、組合せ最適化問題の演算を行うことが可能となり、組合せ最適化問題を効率的に解くことができる。
なお、論理的に複数のパーティションに分割可能な演算ユニット102を含むアニーリングマシンAM(最適化問題演算装置)の詳細については、例えば、特開2020-46996号公報、特開2020-46992号公報を参照することができる。
ここで、アニーリングマシンAMを使用して、組合せ最適化問題の演算を行う計算サービスを提供する場合がある。以下の説明では、この計算サービスを「アニーリング計算サービス」と表記する場合がある。
アニーリング計算サービスの利用形態としては、例えば、使用時間の上限時間を設定し、使用時間が設定された上限時間内であれば、定額料金で自由に使用できる形態がある。一方で、アニーリング計算サービスを複数のユーザが共用する場合、一部のユーザが多くの時間を使い過ぎると、他のユーザが使用できなくなる場合がある。
例えば、顧客が大学や企業などの場合、一つの契約で、複数のユーザがアニーリング計算サービスを利用することが多い。大学を例に挙げると、アニーリング計算サービスを利用する主目的は研究目的だが、教育目的で学生たちに使用させる場合がある。このような場合、学生たちが多くの時間を使い過ぎてしまい、教授などが研究目的で使用することができなくなるといった問題が発生するおそれがある。
また、アニーリングマシンAMでは、通常のコンピュータのように、割り込み処理などの技術を使って、一つのプロセッサで複数のユーザの要求を疑似的に並列で処理するようなことができない。このため、使用時間の長いユーザがいると、他のユーザが全く使用できない待ち時間が長くなるといった問題がある。
そこで、本実施の形態では、利用上限が設定されたアニーリングマシンAMの利用量の割り当てを制御することで、利用上限の設定されたアニーリングマシンの利便性の向上を図る割当制御方法について説明する。以下、情報処理装置101の処理例について説明する。
(1)情報処理装置101は、量子ビット数と使用時間とに基づいて規定される、アニーリングマシンAMの利用上限に対して、複数のユーザのうちの1以上の特定ユーザに対応する量子ビット数と使用時間との指定を受け付ける。ここで、量子ビット数は、組合せ最適化問題の演算に使用する量子ビットの数である。使用時間は、アニーリングマシンAMを使用する時間である。
アニーリングマシンAMの利用上限は、アニーリングマシンAMの使用時間の上限値であり、例えば、量子ビット数と使用時間とを乗算した値によって規定される。複数のユーザは、アニーリングマシンAMを利用する複数のユーザであり、例えば、一つの契約でアニーリング計算サービスを共用する複数のユーザである。
特定ユーザは、例えば、複数のユーザのうちの他のユーザよりも高い優先度が設定されたユーザである。大学などで先生と生徒たちがアニーリング計算サービスを共用する場合、先生は、生徒たちよりも高い優先度が設定された特定ユーザである。特定ユーザについては、量子ビット数と使用時間とを指定して、特定ユーザが利用可能なアニーリングマシンAMの利用量を設定することができる。
図1の例では、量子ビット数と使用時間とに基づいて規定されるアニーリングマシンAMの利用上限を「10000」とする。また、複数のユーザを「ユーザU1,U2,U3」とし、特定ユーザを「ユーザU1」とする。また、特定ユーザU1に対応する、指定された量子ビット数を「1000」とし、指定された使用時間を「7」とする。
(2)情報処理装置101は、指定された量子ビット数と使用時間とに基づいて規定される利用量を特定ユーザに利用可能に割り当てる。具体的には、例えば、情報処理装置101は、指定された量子ビット数と使用時間とを乗算して得られる利用量を、特定ユーザに割り当てる。
また、情報処理装置101は、アニーリングマシンAMの利用上限から、指定された量子ビット数と使用時間とに基づいて規定される利用量を減じた余りの利用量を、複数のユーザのうちの特定ユーザ以外のユーザに利用可能に割り当てる。
具体的には、例えば、情報処理装置101は、アニーリングマシンAMの利用上限から、指定された量子ビット数と使用時間とに基づいて規定される利用量を減じた余りの利用量を、特定ユーザ以外のユーザそれぞれに均等となるように分配して割り当てる。また、情報処理装置101は、余りの利用量を、特定ユーザ以外の全ユーザでシェア(共用)可能に割り当てることにしてもよい。
図1の例では、特定ユーザU1以外の全ユーザU2,U3で、余りの利用量をシェア可能に割り当てる場合を想定する。また、特定ユーザU1が利用可能なアニーリングマシンAMの利用量を、指定された量子ビット数「1000」と使用時間「7」とを乗算した値「7000」とする。この場合、アニーリングマシンAMの利用上限「10000」から、特定ユーザU1が利用可能なアニーリングマシンAMの利用量「7000」を減じた余りの利用量は「3000」となる。このため、余りの利用量「3000」が、特定ユーザU1以外の全ユーザU2,U3でシェア可能に割り当てられる。
このように、情報処理装置101によれば、利用上限が設定されたアニーリングマシンAMを共用する複数のユーザのうち、特定ユーザが使用を希望する分の利用量を、特定ユーザに割り当てることができる。また、特定ユーザ以外のユーザについては、アニーリングマシンAMの利用上限から特定ユーザが使用を希望する利用量を減じた余りの利用量を割り当てることができる。これにより、特定ユーザ以外のユーザが長時間使い続けて、特定ユーザがアニーリングマシンAMを使用できなくなったり、待ち時間が長くなったりするのを防ぐことができ、利用上限の設定されたアニーリングマシンの利便性の向上を図ることができる。
図1の例では、特定ユーザU1が使用を希望する分の利用量を、特定ユーザU1に割り当てることができる。また、特定ユーザU1以外のユーザU2,U3については、アニーリングマシンAMの利用上限から特定ユーザU1が使用を希望する利用量を減じた余りの利用量を割り当てることができる。
例えば、アニーリングマシンAMが利用された結果、特定ユーザU1の累積利用量が「1000」となり、ユーザU2,U3の累積利用量が「3100」となったとする。この場合、特定ユーザU1については、累積利用量「1000」が、特定ユーザU1が利用可能な利用量「7000」を超えていないため、アニーリングマシンAMを引き続き利用することができる。
一方、ユーザU2,U3については、ユーザU2,U3の累積利用量「3100」が、ユーザU2,U3でシェア可能に割り当てられた利用量「3000」を超えている。このため、ユーザU2,U3については、アニーリングマシンAMをこれ以上利用することはできなくなる。
これにより、ユーザU2,U3がアニーリングマシンAMを長時間使い続けて、特定ユーザU1が使用できなくなったり、待ち時間が長くなったりするのを防ぐことができる。なお、ユーザU2,U3に割り当てられた利用量を超えた分「100」については、その分の追加料金が発生するような利用形態であってもよいし、その分の追加料金は発生しないような利用形態であってもよい。
(情報処理システム200のシステム構成例)
つぎに、実施の形態にかかる情報処理システム200のシステム構成例について説明する。以下の説明では、図1に示した情報処理装置101とアニーリングマシンAMとを、情報処理システム200内の最適化問題演算装置201に適用した場合を例に挙げて説明する。
図2は、情報処理システム200のシステム構成例を示す説明図である。図2において、情報処理システム200は、最適化問題演算装置201と、複数のクライアント装置202と、を含む。情報処理システム200において、最適化問題演算装置201およびクライアント装置202は、有線または無線のネットワーク210を介して接続される。ネットワーク210は、例えば、LAN(Local Area Network)、WAN(Wide Area Network)、インターネットなどである。
最適化問題演算装置201は、組合せ最適化問題をイジングモデルに置き換え、イジングモデルの基底状態の探索により、組合せ最適化問題を解く機能を提供するアニーリングマシンAMの一例である。最適化問題演算装置201は、例えば、クラウドコンピューティングのサーバや、オンプレミスのサーバである。
クライアント装置202は、ユーザにより使用されるコンピュータである。ユーザは、アニーリング計算サービスを利用するユーザであり、例えば、大学における教授、准教授、生徒などである。クライアント装置202は、例えば、ユーザが解くべき問題の、最適化問題演算装置201への入力に用いられる。クライアント装置202は、例えば、PC(Personal Computer)、タブレット型PCなどである。
(最適化問題演算装置201のハードウェア構成例)
図3は、最適化問題演算装置201のハードウェア構成例を示すブロック図である。図3において、最適化問題演算装置201は、CPU(Central Processing Unit)301と、メモリ302と、ディスクドライブ303と、ディスク304と、通信I/F(Interface)305と、可搬型記録媒体I/F306と、可搬型記録媒体307と、複数の最適化装置308とを有する。また、各構成部は、バス300によってそれぞれ接続される。バス300は、例えば、PCIe(Peripheral Component Interconnect Express)バスである。
ここで、CPU301は、最適化問題演算装置201の全体の制御を司る。CPU301は、複数のコアを有していてもよい。メモリ302は、例えば、ROM(Read Only Memory)、RAMおよびフラッシュROMなどを有する。具体的には、例えば、フラッシュROMがOS(Operating System)のプログラムを記憶し、ROMがアプリケーションプログラムを記憶し、RAMがCPU301のワークエリアとして使用される。メモリ302に記憶されるプログラムは、CPU301にロードされることで、コーディングされている処理をCPU301に実行させる。
ディスクドライブ303は、CPU301の制御に従ってディスク304に対するデータのリード/ライトを制御する。ディスク304は、ディスクドライブ303の制御で書き込まれたデータを記憶する。ディスク304としては、例えば、磁気ディスク、光ディスクなどが挙げられる。
通信I/F305は、通信回線を通じてネットワーク210に接続され、ネットワーク210を介して外部のコンピュータ(例えば、図2に示したクライアント装置202)に接続される。そして、通信I/F305は、ネットワーク210と装置内部とのインターフェースを司り、外部のコンピュータからのデータの入出力を制御する。通信I/F305には、例えば、モデムやLANアダプタなどを採用することができる。
可搬型記録媒体I/F306は、CPU301の制御に従って可搬型記録媒体307に対するデータのリード/ライトを制御する。可搬型記録媒体307は、可搬型記録媒体I/F306の制御で書き込まれたデータを記憶する。可搬型記録媒体307としては、例えば、CD(Compact Disc)-ROM、DVD(Digital Versatile Disk)、USB(Universal Serial Bus)メモリなどが挙げられる。
最適化装置308は、CPU301の制御に従って、イジングモデルの基底状態を探索する。最適化装置308は、図1に示した演算ユニット102の一例である。$1~$Mは、最適化装置308を識別する識別子である(Mは、2以上の自然数)。以下の説明では、最適化装置308($1)~308($M)のうちの任意の最適化装置308を「最適化装置308($j)」と表記する場合がある(j=1,2,…,M)。
なお、最適化問題演算装置201は、上述した構成部のほかに、例えば、SSD(Solid State Drive)、入力装置、ディスプレイ等を有することにしてもよい。また、最適化問題演算装置201は、上述した構成部のうち、例えば、ディスクドライブ303、ディスク304、可搬型記録媒体I/F306、可搬型記録媒体307を有していなくてもよい。また、図2に示したクライアント装置202については、例えば、CPU、メモリ、通信I/F、入力装置、ディスプレイなどを有する。
(情報処理システム200におけるハードウェアの関係)
図4は、情報処理システム200におけるハードウェアの関係の一例を示す説明図である。図4において、クライアント装置202は、ユーザプログラム401を実行する。ユーザプログラム401は、最適化問題演算装置201への各種データ(例えば、解くべき問題の内容や最適化装置308の利用スケジュールなどの動作条件)の入力、および、最適化装置308による演算結果の表示などを行う。
CPU301は、ライブラリ402およびドライバ403を実行するプロセッサ(演算部)である。ライブラリ402のプログラム、および、ドライバ403のプログラムは、例えば、メモリ302(図3参照)に格納されている。
ライブラリ402は、ユーザプログラム401により入力される各種データを受け付け、ユーザが解くべき問題を、イジングモデルの最低エネルギー状態を探索する問題に変換する。ライブラリ402は、変換後の問題に関する情報(例えば、スピンビット数、重み係数を表すビット数、重み係数の値、温度パラメータの初期値など)を、ドライバ403に提供する。また、ライブラリ402は、最適化装置308($j)による解の探索結果をドライバ403から取得し、当該探索結果をユーザに分かり易い結果情報(例えば、結果表示画面の情報)に変換して、ユーザプログラム401に提供する。
ドライバ403は、ライブラリ402から提供された情報を最適化装置308($j)に供給する。また、ドライバ403は、イジングモデルによる解の探索結果を最適化装置308($j)から取得し、ライブラリ402に提供する。
最適化装置308($j)は、ハードウェアとして、制御部404およびLFB(Local Field Block)405を有する。
制御部404は、ドライバ403から受け付けたLFB405の動作条件を記憶するRAMを有し、当該動作条件に基づいてLFB405による演算を制御する。また、制御部404は、LFB405が備える各種のレジスタへの初期値の設定、SRAMへの重み係数の格納、および、演算終了後のスピンビット列(探索結果)の読み出しなどを行う。制御部404は、例えば、FPGAなどによって実現される。
LFB405は、複数のLFE(Local Field Element)を有する。LFEは、スピンビットに対応する単位素子である。1つのLFEは、1つのスピンビットに対応する。最適化装置308($j)は、例えば、複数のLFBを有する。
(パーティション構成の一例)
つぎに、アニーリングマシンAMのパーティション構成について説明する。
図5は、パーティション構成の一例を示す説明図である。図5において、パーティションモードa~dは、アニーリングマシンAMに設定可能なパーティションの一例である。
パーティションモードaは、最適化装置308($j)を論理的に1つのパーティションとした状態を規定するパーティションモードである。パーティションモードaで解くことができる問題の最大規模は、「8192bit(8K)」である。すなわち、パーティションモードaで計算に利用可能な量子ビット数は、8Kである。
パーティションモードbは、最適化装置308($j)を論理的に2つのパーティションに分割した状態を規定するパーティションモードである。パーティションモードbで解くことができる問題の最大規模は、「4096bit(4K)」である。すなわち、パーティションモードbで計算に利用可能な量子ビット数は、4Kである。
パーティションモードcは、最適化装置308($j)を論理的に4つのパーティションに分割した状態を規定するパーティションモードである。パーティションモードcで解くことができる問題の最大規模は、「2048bit(2K)」である。すなわち、パーティションモードcで計算に利用可能な量子ビット数は、2Kである。
パーティションモードdは、最適化装置308($j)を論理的に8つのパーティションに分割した状態を規定するパーティションモードである。パーティションモードdで解くことができる問題の最大規模は、「1024bit(1K)」である。すなわち、パーティションモードdで計算に利用可能な量子ビット数は、1Kである。
最適化問題演算装置201(アニーリングマシンAM)内の各最適化装置308($1)~308($M)には、パーティションモードa~dのいずれかのパーティションモードが設定される。ただし、全てのパーティションa~dが、少なくとも1台以上の最適化装置308($j)に設定されているとする。
(契約情報の具体例)
つぎに、図6および図7を用いて、アニーリング計算サービスを利用するための契約情報の具体例について説明する。アニーリング計算サービスは、アニーリングマシンAMを使用して組合せ最適化問題の演算を行う計算サービスである。アニーリング計算サービスは、サービス提供者と顧客との契約に基づいて利用可能となる。
図6は、契約情報の具体例を示す説明図(その1)である。図6において、契約情報600は、アニーリング計算サービスを利用するための契約に関する情報である。契約情報600は、契約ID、契約内容およびユーザ情報600-1~600-5を含む。
契約IDは、契約を一意に識別する識別情報である。契約内容は、一契約あたりのアニーリングマシンAMの利用上限を特定する情報である。ここでは、契約内容は「月あたり8Kビット100時間使用契約」である。この場合、月あたりのアニーリングマシンAMの利用上限は、「8K×100(時間)」となる。
また、ユーザ情報600-1~600-5は、アニーリング計算サービスを利用するユーザに関する情報である。ユーザIDは、ユーザを一意に識別する識別情報である。優先度は、アニーリング計算サービスを利用する複数のユーザにおける各ユーザの相対的な優先度合いを示す。優先度合いは、数値によって表されてもよく、また、高・中・低などによって表されてもよい。
ここでは、優先度「高」のユーザは、優先度「低」のユーザよりも優先度合いが高い特定ユーザであることを示す。優先度「高」のユーザは、自分が使用を希望する使用時間をパーティション単位に指定可能である。パーティション単位に指定された使用時間から、優先度「高」のユーザが利用可能なアニーリングマシンAMの利用量(使用可能量)が決まる。
例えば、教授Xは、優先度「高」のユーザであり、8Kパーティションの使用時間「180000(秒)」を指定している。また、准教授Yは、優先度「高」のユーザであり、4Kパーティションの使用時間「180000(秒)」を指定している。
なお、8Kパーティションは、図5に示したパーティションモードaに対応する。4Kパーティションは、図5に示したパーティションモードbに対応する。2Kパーティションは、図5に示したパーティションモードcに対応する。1Kパーティションは、図5に示したパーティションモードdに対応する。
優先度「低」のユーザについては、ユーザ単位が指定されている。ユーザ単位は、アニーリングマシンAMの利用上限から特定ユーザの使用可能量を減じた余りの利用量を、特定ユーザ以外のユーザそれぞれに均等となるように分配して割り当てることを示す。
図7は、契約情報の具体例を示す説明図(その2)である。図7において、契約情報700は、アニーリング計算サービスを利用するための契約に関する情報である。契約情報700は、契約ID、契約内容およびユーザ情報700-1~700-5を含む。
ここでは、優先度「低」のユーザについては、シェアが指定されている。シェアは、アニーリングマシンAMの利用上限から特定ユーザの使用可能量を減じた余りの利用量を、特定ユーザ以外の全ユーザで共用可能に割り当てることを示す。
(最適化問題演算装置201の機能的構成例)
図8は、最適化問題演算装置201の機能的構成例を示すブロック図である。図8において、最適化問題演算装置201は、受付部801と、割当制御部802と、管理部803と、決定部804と、実行制御部805と、を含む。受付部801~実行制御部805は、具体的には、例えば、図3に示したメモリ302、ディスク304、可搬型記録媒体307などの記憶装置に記憶されたプログラムをCPU301に実行させることにより、または、通信I/F305により、その機能を実現する。各機能部の処理結果は、例えば、メモリ302、ディスク304などの記憶装置に記憶される。
受付部801は、アニーリングマシンAMの利用上限に対して、複数のユーザのうちの1以上の特定ユーザに対応する量子ビット数と使用時間との指定を受け付ける。ここで、アニーリングマシンAMの利用上限は、量子ビット数と使用時間とに基づいて規定される。
アニーリングマシンAMの利用上限を規定するための量子ビット数は、例えば、アニーリングマシンAMで利用可能な全量子ビット数(8K)によって表される。また、アニーリングマシンAMの利用上限を規定するための使用時間は、例えば、顧客が契約している使用時間の上限値によって表される。
例えば、アニーリングマシンAMの利用上限は、単位期間あたりの利用上限であり、全量子ビット数(8K)と顧客が指定した使用時間とを乗算して得られる使用可能量によって規定される。単位期間は、月または年単位の期間である。複数のユーザは、例えば、一つの契約でアニーリング計算サービスを共用する複数のユーザである。
具体的には、例えば、受付部801は、図2に示したクライアント装置202から契約情報を受信することにより、受信した契約情報から特定される、アニーリングマシンAMの利用上限に対して、特定ユーザに対応する量子ビット数と使用時間との指定を受け付ける。契約情報は、例えば、図6に示した契約情報600や図7に示した契約情報700である。
また、受付部801は、不図示の入力装置を用いたユーザの操作入力により、契約情報を受け付けることにしてもよい。この場合、受付部801は、入力された契約情報から特定される、アニーリングマシンAMの利用上限に対して、特定ユーザに対応する量子ビット数と使用時間との指定を受け付ける。
契約情報600,700を例に挙げると、アニーリングマシンAMの利用上限は、月あたりの利用上限であり、全量子ビット数「8Kビット」と顧客が指定した使用時間「100[時間]」とを乗算して得られる使用可能量「2,949,120,000」によって規定される。ただし、使用時間の単位を[時間]から[秒]に換算した値である。また、複数のユーザは、教授X、准教授Y、学生A、学生Bおよび学生Cである。特定ユーザは、教授Xおよび准教授Yである。教授Xに対応する量子ビット数と使用時間は、「8K」と「180000[秒]」である。准教授Yに対応する量子ビット数と使用時間は、「4K」と「180000[秒]」である。
割当制御部802は、指定された特定ユーザに対応する量子ビット数と使用時間とに基づいて規定される利用量を特定ユーザに利用可能に割り当てる。具体的には、例えば、割当制御部802は、特定ユーザに対応する量子ビット数と使用時間とを乗算して得られる利用量を、特定ユーザの使用可能量として割り当てる。
契約情報600,700を例に挙げると、教授Xの使用可能量として、教授Xに対応する量子ビット数「8K」と使用時間「180000」とを乗算して得られる利用量「8K×180000」が、教授Xの使用可能量として割り当てられる。また、准教授Yの使用可能量として、准教授Yに対応する量子ビット数「4K」と使用時間「180000」とを乗算して得られる利用量「4K×180000」が、准教授Yの使用可能量として割り当てられる。
なお、特定ユーザに割り当てられた使用可能量は、例えば、後述の図11、図12に示すような使用時間管理テーブル1100,1200に記憶される。
また、割当制御部802は、アニーリングマシンAMの利用上限から、指定された量子ビット数と使用時間とに基づいて規定される利用量を減じた余りの利用量を、複数のユーザのうちの特定ユーザ以外のユーザに利用可能に割り当てる。特定ユーザ以外のユーザは、特定ユーザよりも優先度が低いユーザである。
余りの利用量は、例えば、下記式(1)を用いて求めることができる。ただし、特定ユーザの使用可能量は、各特定ユーザに対応する量子ビット数と使用時間とを乗算して得られる利用量を合計したものである。
余りの利用量=アニーリングマシンAMの利用上限-特定ユーザの使用可能量
・・・(1)
具体的には、例えば、割当制御部802は、余りの利用量を、特定ユーザ以外のユーザそれぞれに均等となるように分配して割り当てることにしてもよい。また、割当制御部802は、余りの利用量を、特定ユーザ以外の全ユーザでシェア(共用)可能に割り当てることにしてもよい。
契約情報600を例に挙げると、アニーリングマシンAMの利用上限は、「2,949,120,000」である。特定ユーザの使用可能量は、教授Xの利用量「1,474,560,000(=8K×180000)」と准教授Yの利用量「737,280,000(=4K×180000)」とを合計した利用量「2,211,840,000」となる。このため、余りの利用量は、上記式(1)から、「737,280,000」となる。また、優先度「低」のユーザについては、ユーザ単位が指定されている。この場合、割当制御部802は、余りの利用量「737,280,000」を、学生A、学生Bおよび学生Cそれぞれに均等となるように分配して割り当てる。ここでは、余りの利用量「737,280,000」を3(学生数)で割って得られる利用量「245,760,000」が、各学生A、学生Bおよび学生Cの使用可能量として割り当てられる。
また、契約情報700を例に挙げると、優先度「低」のユーザについては、シェアが指定されている。この場合、割当制御部802は、余りの利用量「737,280,000」を、学生A、学生Bおよび学生Cにシェア可能に割り当てる。
なお、特定ユーザ以外のユーザに割り当てられた使用可能量は、例えば、後述の図11、図12に示すような使用時間管理テーブル1100,1200に記憶される。
また、最適化問題演算装置201は、特定ユーザ以外のユーザに余りの利用量を割り当てるにあたり、特定ユーザ以外のユーザを優先度に応じてグルーピングすることにしてもよい。例えば、低優先度のユーザとして、優先度3が設定されたユーザと優先度4が設定されたユーザとが存在するとする。なお、優先度1,2が設定されたユーザは、高優先度のユーザとする。この場合、割当制御部802は、低優先度のユーザを、優先度3が設定されたユーザのグループと、優先度4が設定されたユーザのグループとに分割することにしてもよい。そして、割当制御部802は、優先度3,4に応じて、余りの利用量のうち、各グループに割り当てる割当量を決めることにしてもよい。例えば、割当制御部802は、優先度3のグループのほうが、優先度4のグループよりも割当量が多くなるように、余りの割当量を分配する。そして、割当制御部802は、各グループに分配した割当量を、各グループ内のユーザへ割り当てることにしてもよい。
受付部801は、複数のユーザのいずれかのユーザからの組合せ最適化問題を受け付ける。ここで、受け付ける組合せ最適化問題は、解くべき計算対象の問題である。具体的には、例えば、受付部801は、クライアント装置202からアニーリング計算サービスの利用要求を受信することにより、組合せ最適化問題を受け付ける。
アニーリング計算サービスの利用要求は、アニーリングマシンAMを使用して、組合せ最適化問題の演算を行うよう要求するものである。アニーリング計算サービスの利用要求には、例えば、契約ID、ユーザIDおよび組合せ最適化問題の情報が含まれる。契約IDは、アニーリング計算サービスの契約を識別する情報である。ユーザIDは、要求元のユーザを識別する情報である。組合せ最適化問題の情報には、例えば、問題に応じた初期値や動作条件が含まれる。
管理部803は、複数の最適化装置308それぞれの論理的な分割状態を規定するパーティションモードについての情報を保持する。ここで、複数の最適化装置308は、最適化問題演算装置201が有する最適化装置308であり、例えば、図3に示した最適化装置308($1)~308($M)である。
具体的には、例えば、管理部803は、各最適化装置308($j)に設定されたパーティションモード、当該パーティションモードで解くことができる問題の最大規模および最大精度を含む情報を保持する。より詳細に説明すると、例えば、管理部803は、図9に示すようなモード設定テーブル900を保持する。
ここで、モード設定テーブル900の記憶内容について説明する。モード設定テーブル900は、例えば、図3に示したメモリ302、ディスク304などの記憶装置に記憶される。
図9は、モード設定テーブル900の記憶内容の一例を示す説明図である。図9において、モード設定テーブル900は、ユニットID、パーティションモード、問題規模および精度のフィールドを有し、各フィールドに情報を設定することで、モード設定情報900-1~900-16をレコードとして記憶する。
ここで、ユニットIDは、組合せ最適化問題を解くユニットを識別する識別子である。ユニットは、例えば、最適化装置308($j)内のパーティションに対応する。最適化装置308($j)内のパーティションは、例えば、1以上のLFB405によって実現される。
具体的には、ユニット1は、最適化装置308($1)内のパーティションに対応する。ユニット2は、最適化装置308($2)内のパーティションに対応する。ユニット3-1,3-2は、最適化装置308($3)内の2つのパーティションに対応する。ユニット4-1~4-4は、最適化装置308($4)内の4つのパーティションに対応する。ユニット5-1~5-8は、最適化装置308($5)内の8つのパーティションに対応する。
パーティションモードは、パーティションモードのモード名を示す。パーティションモードaは、最適化装置308($j)を分割せず、1つのパーティションとして使用するモードである。パーティションモードaにおけるパーティションは、例えば、8個のLFB405によって実現される。
パーティションモードbは、最適化装置308($j)を論理的に2つのパーティションに分割するモードである。パーティションモードbにおける各パーティションは、例えば、4個のLFB405によって実現される。
パーティションモードcは、最適化装置308($j)を論理的に4つのパーティションに分割するモードである。パーティションモードcにおける各パーティションは、例えば、2個のLFB405によって実現される。
パーティションモードdは、最適化装置308($j)を論理的に8つのパーティションに分割するモードである。パーティションモードdにおける各パーティションは、例えば、1個のLFB405によって実現される。
問題規模は、パーティションモードで解くことができる問題(組合せ最適化問題)の最大規模を示す(単位:bit)。精度は、各パーティションモードで解くことができる問題(組合せ最適化問題)の最大精度を示す。
例えば、モード設定情報900-1によれば、最適化装置308($1)のパーティションモードが、パーティションモードaであることを特定することができる。また、最適化装置308($1)内のパーティションに対応するユニット1の問題規模「8K」および精度「16bit」を特定することができる。
なお、図示は省略するが、モード設定テーブル900内の各モード設定情報には、例えば、各ユニット(パーティション)に対応するハードウェアリソースを特定する情報(例えば、LFBの識別番号)が含まれる。
図8の説明に戻り、決定部804は、受け付けた組合せ最適化問題の規模と、管理部803が保持する情報とに基づき、組合せ最適化問題を振り分ける最適化装置308を決定する。また、決定部804は、受け付けた組合せ最適化問題の規模と要求精度と、管理部803が保持する情報とに基づき、組合せ最適化問題を振り分ける最適化装置308を決定することにしてもよい。
具体的には、例えば、まず、決定部804は、受け付けた組合せ最適化問題の規模、要求精度を取得する。より詳細に説明すると、例えば、決定部804は、ライブラリ402(図4参照)から、受け付けた組合せ最適化問題を変換した変換後の問題のスピンビット数(規模)および重み係数を表すビット数(要求精度)を取得する。
つぎに、決定部804は、例えば、モード設定テーブル900を参照して、取得した組合せ最適化問題の規模および/または要求精度に応じて演算可能ユニットを特定する。ここで、演算可能ユニットは、組合せ最適化問題の演算を行う候補となるユニットである。そして、決定部804は、特定した演算可能ユニットのいずれかのユニットを含む最適化装置308($j)を、組合せ最適化問題を振り分ける最適化装置308に決定する。
この際、決定部804は、組合せ最適化問題の振り分け先として、最適化装置308($j)内のユニットを決定してもよい。すなわち、決定部804は、組合せ最適化問題の振り分け先として、最適化装置308($j)を決定するだけでなく、その最適化装置308($j)内のユニットまで決定することにしてもよい。ただし、最適化装置308($j)内のいずれのユニットに組合せ最適化問題を振り分けるかは、最適化装置308($j)の制御部404(図4参照)によって判断させることにしてもよい。
より詳細に説明すると、例えば、決定部804は、モード設定テーブル900を参照して、組合せ最適化問題の規模以上の規模の問題を解くことができるパーティションモードに対応するユニットを、演算可能ユニットとして特定する。そして、決定部804は、特定した演算可能ユニットのうち、解くことができる問題の最大規模が最小のユニットから優先して、組合せ最適化問題を振り分けるユニットに決定してもよい。
また、決定部804は、モード設定テーブル900を参照して、組合せ最適化問題の要求精度以上の精度の問題を解くことができるパーティションモードに対応するユニットを特定してもよい。そして、決定部804は、特定したユニットを、組合せ最適化問題を振り分けるユニットに決定してもよい。
また、決定部804は、モード設定テーブル900を参照して、組合せ最適化問題の規模以上の規模の問題を解くことができ、かつ、組合せ最適化問題の要求精度以上の精度の問題を解くことができるパーティションモードに対応するユニットを、演算可能ユニットとして特定してもよい。そして、決定部804は、特定した演算可能ユニットのうち、解くことができる問題の最大規模が最小のユニットから優先して、組合せ最適化問題を振り分けるユニットに決定してもよい。
なお、モード設定テーブル900内のモード設定情報は、例えば、最適化問題演算装置201において生成されることにしてもよい。具体的には、例えば、決定部804が、ライブラリ402から、各最適化装置308($j)のパーティションモードで解くことができる問題の最大規模(スピンビット数)および最大精度(重み係数のビット数)を取得する。そして、決定部804が、取得した結果に基づいて、各最適化装置308($j)のモード設定情報を生成することにしてもよい。
ライブラリ402は、あらかじめ用意された関数を呼び出すことにより、最適化装置308($j)に設定されたパーティションモードの情報を取得することができる。例えば、ライブラリ402は、getMaxNumBit()関数を呼び出すことにより、最適化装置308($j)のパーティションモードで解くことができる問題の最大規模を取得することができる。また、ライブラリ402は、getWeightRange()関数を呼び出すことにより、最適化装置308($j)のパーティションモードで解くことができる問題の最大精度を取得することができる。
また、管理部803は、複数の最適化装置308それぞれの実行状況についての情報を保持することにしてもよい。具体的には、例えば、管理部803は、各最適化装置308($j)で実行中の問題や、各最適化装置308($j)に対応する処理待ちキュー(待ち行列)についての情報を保持することにしてもよい。
そして、決定部804は、管理部803が保持する、複数の最適化装置308それぞれの実行状況についての情報にさらに基づき、組合せ最適化問題を振り分ける最適化装置308を決定することにしてもよい。具体的には、例えば、決定部804は、特定した演算可能ユニットのうち、問題を実行していない空きのユニットを含む最適化装置308($j)を、組合せ最適化問題を振り分ける最適化装置308に決定してもよい。
また、特定した演算可能ユニットに空きのユニットが存在しない場合には、決定部804は、演算可能ユニットを含む最適化装置308のうち、処理待ちキューに溜まっている問題の数が最小の最適化装置308($j)を、組合せ最適化問題を振り分ける最適化装置308に決定してもよい。
実行制御部805は、決定された最適化装置308で組合せ最適化問題の演算を実行させる。具体的には、例えば、実行制御部805は、組合せ最適化問題の振り分け先として決定されたユニットを含む最適化装置308($j)の制御部404に対して、当該ユニットを指定して組合せ最適化問題の演算を実行させる。
より詳細に説明すると、例えば、実行制御部805は、問題に応じた初期値および動作条件を最適化装置308($j)に入力する。初期値は、例えば、エネルギー値E、ローカルフィールドhi、スピンビットqi、温度パラメータTの初期値および重み係数Wなどを含む。また、動作条件は、1つの温度パラメータでの状態の更新回数N1、温度パラメータの変更回数N2および温度パラメータの下げ幅などを含む。
最適化装置308($j)において、制御部404は、入力された初期値および動作条件を、各LFEのレジスタおよびSRAMに設定する。なお、制御部404は、使用されないLFEがある場合、当該LFEのSRAMに、Wとして、例えば全て0を設定する。
実行制御部805は、最適化装置308($j)に演算開始フラグ(例えば、演算開始フラグ=1)を入力する。制御部404は、演算開始フラグの入力を受け付け、実行制御部805から指定されたユニット(LFB405)による演算を開始する。ユニットの指定は、例えば、ユニットに対応するパーティションを特定する情報(LFBの識別番号など)を入力することにより行われる。
また、決定部804は、分割解法の使用の有無を判断することにしてもよい。ここで、分割解法とは、分割ソルバ等を使用して問題を分割し、規模の小さい問題にして解く手法である。分割解法としては、既存のいかなる技術を用いることにしてもよい。
具体的には、例えば、決定部804は、組合せ最適化問題の規模が、複数の最適化装置308で解くことができる問題の最大規模より大きいか否かを判断することにしてもよい。ここで、組合せ最適化問題の規模が解くことができる最大規模より大きい場合、決定部804は、分割解法を使用すると判断する。一方、組合せ最適化問題の規模が解くことができる最大規模以下の場合、決定部804は、分割解法を使用しないと判断する。
すなわち、組合せ最適化問題の規模が、複数の最適化装置308で解くことができる問題の最大規模より大きい場合、このままの状態では、組合せ最適化問題を解くことができない。そこで、最適化問題演算装置201は、分割解法を使用して、組合せ最適化問題を分割して解くことにしてもよい。
決定部804は、分割解法を使用すると判断した場合、組合せ最適化問題を分割する。そして、決定部804は、分割した分割後の問題の規模または要求精度と、複数の最適化装置308それぞれの論理的な分割状態を規定するパーティションモードについての情報とに基づき、分割後の問題を振り分ける最適化装置308を決定する。
この場合、実行制御部805は、決定された最適化装置308で、分割後の問題の演算を実行させる。組合せ最適化問題の解は、分割後の問題の解を統合したものとなる。これにより、組合せ最適化問題の規模が、複数の最適化装置308で解くことができる問題の最大規模より大きい場合であっても、組合せ最適化問題を解くことができる。
また、決定部804は、スケーリングの使用の有無を判断することにしてもよい。ここで、スケーリングとは、問題を解くことができる最大精度の範囲内に係数を調整して解くことである。具体的には、例えば、決定部804は、組合せ最適化問題の要求精度が、複数の最適化装置308で解くことができる問題の最大精度の範囲内であるか否かを判断することにしてもよい。
ここで、組合せ最適化問題の要求精度が解くことができる最大精度の範囲外の場合、決定部804は、スケーリングを使用すると判断する。一方、組合せ最適化問題の要求精度が解くことができる最大精度の範囲内の場合、決定部804は、スケーリングを使用しないと判断する。
すなわち、組合せ最適化問題の要求精度が、複数の最適化装置308で解くことができる問題の最大精度の範囲外の場合、このままの状態では、組合せ最適化問題を解くことができない。そこで、最適化問題演算装置201は、スケーリングを使用して、組合せ最適化問題の係数を調整して解くことにしてもよい。
具体的には、例えば、実行制御部805は、例えば、組合せ最適化問題の振り分け先として決定された最適化装置308(ユニット)で解くことができる問題の最大精度の範囲内にスケーリング(N倍)した問題を解いた後に、エネルギーは元の問題に合うように再計算(1/N倍)したものを返すことにしてもよい。
例えば、パーティションモードaの場合、最大精度が「16bit」であれば、問題の二次項の係数に「3276700」が指定されると、このままの状態では解くことができない。この場合、実行制御部805は、例えば、1/100にスケールダウンして、二次項の係数が32767の問題として解いた後に、エネルギーは元の問題に合うように再計算(100倍)したものを返す。
これにより、組合せ最適化問題の要求精度が、最適化装置308で解くことができる問題の最大精度の範囲外であっても、組合せ最適化問題を解くことができる。
また、管理部803は、複数のユーザそれぞれの使用可能量および累積利用量を管理する。ここで、ユーザの使用可能量は、割当制御部802によってユーザに利用可能に割り当てられたアニーリングマシンAMの利用量である。ユーザの累積利用量は、組合せ最適化問題の演算に使用したアニーリングマシンAMの利用量の累積値である。
具体的には、例えば、管理部803は、組合せ最適化問題の演算を実行させた最適化装置308($j)のパーティションモードに対応する量子ビット数と、組合せ最適化問題の演算にアニーリングマシンAMを使用した時間とに基づいて、アニーリングマシンAMの利用量を算出する。組合せ最適化問題の演算にアニーリングマシンAMを使用した時間は、例えば、最適化装置308($j)で演算が実行された組合せ最適化問題の実行履歴情報から特定される。
ここで、図10を用いて、実行履歴情報のデータ構造について説明する。実行履歴情報は、例えば、最適化問題演算装置201において計算対象の問題(組合せ最適化問題)を受け付けるたびに生成されて、メモリ302、ディスク304などの記憶装置に記憶される。また、実行履歴情報は、問題の演算の実行状況に応じて適宜更新される。
図10は、実行履歴情報のデータ構造の一例を示す説明図である。図10において、実行履歴情報1000は、ジョブID、テナント名、ソルバ名、同期・非同期、ハードウェア情報、パーティションモード、問題の規模、精度、計算開始時刻、計算完了時刻、待ち時間、計算時間およびステータスを有する。
ジョブIDは、ジョブを識別する識別子である。ジョブは、計算対象の問題(組合せ最適化問題)に相当する。テナント名は、テナントの名称である。テナントは、ユーザに相当する。ソルバ名は、問題を解く際に用いられるソルバの名称である。同期・非同期は、同期モードまたは非同期モードを示す。
ハードウェア情報は、ジョブ(問題の演算)を振り分けたハードウェアの情報である。ハードウェア情報には、例えば、最適化装置308の装置IDやユニットIDが設定される。パーティションモードは、ジョブ(問題の演算)を振り分けたハードウェアのパーティションモードである。
問題の規模は、問題の規模である(単位:bit)。精度は、問題の要求精度である(単位:bit)。計算開始時刻は、ジョブ(問題の演算)の実行を開始した時刻である。計算完了時刻は、ジョブ(問題の演算)の実行が完了した時刻である。計算開始時刻および計算完了時刻は、例えば、UTC(Universal Time Coordinated)によって表される。
待ち時間は、他の処理(他の問題)の完了待ちで、処理待ちキューで待ち合わせている時間である。処理待ちキューは、ジョブの振り分け先の最適化装置308に対応するキューである。計算時間は、ジョブの実行に要した時間、すなわち、問題を解くのに要した時間である。計算時間は、計算開始時刻から計算完了時刻までの時間である。
ステータスは、ジョブの実行状況を示す。例えば、ステータス「正常」は、ジョブの実行結果(問題の解)が正常に得られたことを示す。ステータス「異常」は、ジョブの実行結果が正常に得られなかったことを示す。ステータス「実行中」は、ジョブを実行中であることを示す。
なお、待ち時間は、例えば、リアルタイムに更新される。また、計算開始時刻は、ジョブの実行が開始されると設定される。計算完了時刻および計算時間は、ジョブの実行が終了すると設定される。
実行履歴情報1000によれば、どの問題が、どのハードウェアに割り振られ、どのような実行状況であるかを特定することができる。例えば、情報処理システム200において、最適化問題演算装置201で受け付けた組合せ最適化問題ごとの実行履歴情報1000を採取することで、ユーザごとのハードウェアの利用履歴等を特定可能となる。
組合せ最適化問題の演算にアニーリングマシンAMを使用した時間は、例えば、実行履歴情報1000に含まれる計算時間に相当する。
例えば、組合せ最適化問題の演算を実行させた最適化装置308($j)のパーティションモードに対応する量子ビット数を「8K」とし、組合せ最適化問題の演算にアニーリングマシンAMを使用した時間を「100[秒]」とする。この場合、アニーリングマシンAMの利用量は、「8K×100[秒]」となる。
そして、管理部803は、算出したアニーリングマシンAMの利用量を、組合せ最適化問題を受け付けたユーザに対応する累積利用量に加算する。ここで、ユーザは、アニーリング計算サービスの利用要求の要求元であるユーザである。ユーザは、例えば、アニーリング計算サービスの利用要求に含まれる契約IDおよびユーザIDから特定される。
より詳細に説明すると、例えば、管理部803は、図11、図12に示すような使用時間管理テーブル1100,1200を用いて、複数のユーザそれぞれの使用可能量および累積利用量を管理する。ここで、使用時間管理テーブル1100,1200の記憶内容について説明する。使用時間管理テーブル1100,1200は、例えば、図3に示したメモリ302、ディスク304などの記憶装置により実現される。
図11は、使用時間管理テーブルの記憶内容の一例を示す説明図(その1)である。図11において、使用時間管理テーブル1100は、図6に示した契約情報600に対応する各ユーザの使用可能量および累積利用量を管理する。使用時間管理テーブル1100は、契約ID、ユーザID、優先度、使用可能量および使用時間(秒・量子ビット)のフィールドを有し、各フィールドに情報を設定することで、使用時間管理情報1100-1~1100-5をレコードとして記憶する。
ここで、契約IDは、契約を一意に識別する識別情報である。ユーザIDは、ユーザを一意に識別する識別情報である。優先度は、アニーリング計算サービスを利用する複数のユーザにおける各ユーザの相対的な優先度合いを示す。使用可能量は、ユーザごとの使用可能量であり、ユーザに利用可能に割り当てられたアニーリングマシンAMの利用量である。使用時間(秒・量子ビット)は、ユーザごとの累積利用量である。
例えば、アニーリング計算サービスの利用要求に含まれる契約IDおよびユーザIDを「C1」および「学生A」とする。また、今回の使用時間、すなわち、アニーリング計算サービスの利用要求に応じて使用されたアニーリングマシンAMの利用量を「819,200(=8K×100)」とする。
この場合、管理部803は、使用時間管理テーブル1100を参照して、契約ID「C1」およびユーザID「学生A」に対応する使用時間管理情報1100-3を特定する。そして、管理部803は、使用時間管理情報1100-3の使用時間(秒・量子ビット)に、今回の使用時間「819,200(=8K×100)」を加算する。
これにより、学生Aの累積利用量を更新(60,000⇒879,200)することができる。
図12は、使用時間管理テーブルの記憶内容の一例を示す説明図(その2)である。図12において、使用時間管理テーブル1200は、図7に示した契約情報700に対応する各ユーザの使用可能量および累積利用量を管理する。使用時間管理テーブル1200は、契約ID、ユーザID、優先度、使用可能量および使用時間(秒・量子ビット)のフィールドを有し、各フィールドに情報を設定することで、使用時間管理情報1200-1~1200-5をレコードとして記憶する。
例えば、アニーリング計算サービスの利用要求に含まれる契約IDおよびユーザIDを「C2」および「学生C」とする。また、今回の使用時間、すなわち、アニーリング計算サービスの利用要求に応じて使用されたアニーリングマシンAMの利用量を「8,192,00(=8K×100)」とする。
この場合、管理部803は、使用時間管理テーブル1200を参照して、契約ID「C2」およびユーザID「学生C」に対応する使用時間管理情報1200-5を特定する。ここで、ユーザID「学生C」のユーザは、優先度「低」のユーザである。また、契約情報700では、優先度「低」のユーザについては、シェアが指定されている。
このため、管理部803は、例えば、使用時間管理テーブル1200を参照して、優先度「低」に対応する使用時間管理情報1200-3~1200-5を特定する。そして、管理部803は、各使用時間管理情報1200-3~1200-5の使用時間(秒・量子ビット)に、今回の使用時間「819,200(=8K×100)」を加算する。
これにより、アニーリングマシンAMの利用上限から優先度「高」のユーザ(教授X、准教授Y)の使用可能量を減じた余りの利用量をシェア(共用)している学生A、学生Bおよび学生Cの累積利用量を更新(737,280,000⇒738,099,200)することができる。
また、管理部803は、複数のユーザのいずれかのユーザの累積利用量が、当該ユーザに利用可能に割り当てられた利用量を超えた場合、警告情報を出力する。ここで、警告情報は、ユーザの累積利用量が、当該ユーザに対応するアニーリングマシンAMの利用上限を超えたことを示す情報である。
ユーザに利用可能に割り当てられた利用量は、例えば、使用時間管理テーブル1100,1200を用いて管理されるユーザの使用可能量である。ユーザの使用可能量は、ユーザが特定ユーザ以外のユーザの場合、上記式(1)を用いて求めた余りの利用量を、特定ユーザ以外のユーザにどのように割り当てたかによって異なる。
例えば、余りの利用量を、特定ユーザ以外のユーザそれぞれに均等となるように分配して割り当てたとする。この場合、ユーザの使用可能量は、例えば、余りの利用量を、特定ユーザ以外のユーザ数で割って得られる利用量となる。余りの利用量を、特定ユーザ以外の全ユーザでシェア可能に割り当てたとする。この場合、ユーザの使用可能量は、特定ユーザ以外の全ユーザで共有する余りの利用量となる。
具体的には、例えば、管理部803は、使用時間管理テーブル(例えば、使用時間管理テーブル1100,1200)を参照して、ユーザの使用時間(累積利用量)が使用可能量を超えたか否かを判断する。ここで、ユーザの使用時間が使用可能量を超えていない場合、管理部803は、警告情報を出力しない。
一方、ユーザの使用時間が使用可能量を超えている場合、管理部803は、警告情報を出力する。より詳細に説明すると、例えば、管理部803は、クライアント装置202に、後述の図13に示すような警告画面1300を表示することにしてもよい。クライアント装置202は、例えば、アニーリング計算サービスの利用要求の送信元である。
なお、ユーザの使用時間が使用可能量を超えていなくても、ユーザの使用時間と使用可能量との差分が所定値以下の場合には、管理部803は、所定のアラートを出力することにしてもよい。所定のアラートは、例えば、ユーザの使用時間が使用可能量を超えそうである旨の情報である。この場合、最適化問題演算装置201は、例えば、受付可能な計算対象となる問題の規模を制限することにしてもよい。
(警告画面の画面例)
つぎに、図13を用いて、クライアント装置202に表示される警告画面の画面例について説明する。
図13は、警告画面の画面例を示す説明図である。図13において、警告画面1300は、ユーザの使用時間が使用可能量を超えている場合に、クライアント装置202に表示される画面である。ここでは、余りの利用量を、特定ユーザ以外の全ユーザでシェア可能に割り当てた場合を想定する。
警告画面1300には、警告メッセージ1301が表示されている。警告メッセージ1301は、レベル3に属するユーザの使用時間(累積利用量)が、レベル3のリミット(使用可能量)を超えたため、アニーリング計算サービスを利用できない旨のメッセージである。
警告画面1300によれば、ユーザは、自身を含むレベル3に属するユーザが、今月はこれ以上サービスを利用できないことを把握することができる。各ユーザが属するレベルは、例えば、優先度に応じて設定される。例えば、図7に示した契約情報700において、「教授X⇒准教授Y⇒学生A,B,C」の順に優先度が高いとする。この場合、教授Xがレベル1となり、准教授Yがレベル2となり、学生A,B,Cがレベル3となる。
警告画面1300には、他のレベルの情報を表示することにしてもよい。例えば、警告画面1300には、レベル1のリミットは超えていないため、レベル1のユーザはアニーリング計算サービスを利用できる旨のメッセージが含まれていてもよい。この場合、例えば、教授Xは、学生たちはサービスを利用できなくなっているが、自身はまだサービスを利用可能であることを把握することができる。
(最適化問題演算装置201の割当制御処理手順)
つぎに、図14を用いて、最適化問題演算装置201の割当制御処理手順について説明する。
図14は、最適化問題演算装置201の割当制御処理手順の一例を示すフローチャートである。図14のフローチャートにおいて、まず、最適化問題演算装置201は、クライアント装置202から契約情報を受信したか否かを判断する(ステップS1401)。ここで、最適化問題演算装置201は、契約情報を受信するのを待つ(ステップS1401:No)。
最適化問題演算装置201は、契約情報を受信した場合(ステップS1401:Yes)、アニーリングマシンAMのパーティションモードの情報(最大規模)を取得する(ステップS1402)。そして、最適化問題演算装置201は、受信した契約情報を参照して、一契約あたりの使用可能総量を算出する(ステップS1403)。
一契約あたりの使用可能総量は、アニーリングマシンAMの利用上限に相当する。使用可能総量は、例えば、アニーリングマシンAMで利用可能な全量子ビット数(最大規模)と、契約で顧客が指定した使用時間とを乗算して得られる。
つぎに、最適化問題演算装置201は、受信した契約情報を参照して、高優先度ユーザの使用量を算出する(ステップS1404)。高優先度ユーザの使用量は、契約情報で指定される特定ユーザに対応する量子ビット数と使用時間とに基づいて規定される特定ユーザの使用可能量に相当する。
そして、最適化問題演算装置201は、算出した使用可能総量が高優先度使用量よりも大きいか否かを判断する(ステップS1405)。高優先度使用量は、算出した高優先度ユーザの使用量である。ここで、使用可能総量が高優先度使用量以下の場合(ステップS1405:No)、最適化問題演算装置201は、ユーザ設定を修正して(ステップS1406)、ステップS1404に戻る。
ユーザ設定とは、特定ユーザに対応する量子ビット数と使用時間とであり、例えば、契約情報に設定された高優先度ユーザに対応する量子ビット数と使用時間とである。ユーザ設定の修正は、クライアント装置202のユーザの操作入力により行われる。
また、ステップS1405において、使用可能総量が高優先度使用量よりも大きい場合(ステップS1405:Yes)、最適化問題演算装置201は、使用可能総量から高優先度ユーザの使用量を減じた余りの使用可能量を算出する(ステップS1407)。余りの使用可能量は、上記式(1)を用いて求められる余りの利用量に相当する。
つぎに、最適化問題演算装置201は、受信した契約情報を参照して、算出した余りの使用可能量を、低優先度ユーザでシェアするか否かを判断する(ステップS1408)。低優先度ユーザは、複数のユーザのうちの特定ユーザ以外のユーザである。
ここで、低優先度ユーザでシェアしない場合(ステップS1408:No)、最適化問題演算装置201は、余りの使用可能量を低優先度ユーザの人数で割って、低優先度ユーザ一人あたりの使用可能量を算出する(ステップS1409)。そして、最適化問題演算装置201は、使用時間管理テーブルに、算出した高優先度ユーザの使用量を設定するとともに、算出した低優先度ユーザ一人あたりの使用可能量を設定して(ステップS14010)、本フローチャートによる一連の処理を終了する。
一方、低優先度ユーザでシェアする場合には(ステップS1408:Yes)、最適化問題演算装置201は、使用時間管理テーブルに、算出した高優先度ユーザの使用量を設定するとともに、余りの使用可能量を、全低優先度ユーザの使用可能量として設定して(ステップS1411)、本フローチャートによる一連の処理を終了する。
これにより、利用上限が設定されたアニーリングマシンAMを共用する複数のユーザのうち、高優先度のユーザについては、当該ユーザが使用を希望する分の利用量を割り当てることができる。また、低優先度のユーザについては、アニーリングマシンAMの利用上限から高優先度のユーザが使用を希望する分の利用量を減じた余りの利用量を割り当てることができる。
(最適化問題演算装置201のサービス使用処理手順)
つぎに、図15を用いて、最適化問題演算装置201のサービス使用処理手順について説明する。
図15は、最適化問題演算装置201のサービス使用処理手順の一例を示すフローチャートである。図15のフローチャートにおいて、まず、最適化問題演算装置201は、クライアント装置202からアニーリング計算サービスの利用要求を受信したか否かを判断する(ステップS1501)。
ここで、最適化問題演算装置201は、アニーリング計算サービスの利用要求を受信するのを待つ(ステップS1501:No)。最適化問題演算装置201は、アニーリング計算サービスの利用要求を受信した場合に(ステップS1501:Yes)、使用時間管理テーブルを参照して、該当ユーザの使用時間管理情報を取得する(ステップS1502)。
例えば、最適化問題演算装置201は、使用時間管理テーブルを参照して、アニーリング計算サービスの利用要求に含まれる契約IDおよびユーザIDに対応する使用時間管理情報を、該当ユーザの使用時間管理情報として取得する。
つぎに、最適化問題演算装置201は、取得した使用時間管理情報を参照して、該当ユーザの使用時間と使用可能量とを特定する(ステップS1503)。そして、最適化問題演算装置201は、該当ユーザの使用時間が使用可能量を超えているか否かを判断する(ステップS1504)。
ここで、該当ユーザの使用時間が使用可能量を超えていない場合(ステップS1504:No)、最適化問題演算装置201は、最適化問題演算処理を実行する(ステップS1505)。最適化問題演算処理の具体的な処理手順については、図16および図17を用いて後述する。
つぎに、最適化問題演算装置201は、アニーリングマシンAMの今回の使用量を算出する(ステップS1506)。今回の使用量は、例えば、組合せ最適化問題の演算を実行させた最適化装置308($j)のパーティションモードに対応する量子ビット数と、組合せ最適化問題の演算にアニーリングマシンAMを使用した時間とを乗算することにより算出される。
そして、最適化問題演算装置201は、算出した今回の使用量を、使用時間管理テーブル内の該当ユーザの使用時間に加算して(ステップS1507)、本フローチャートによる一連の処理を終了する。また、ステップS1504において、該当ユーザの使用時間が使用可能量を超えている場合(ステップS1504:Yes)、最適化問題演算装置201は、組合せ最適化問題の演算を実行させずに、クライアント装置202に警告情報を出力して(ステップS1508)、本フローチャートによる一連の処理を終了する。
これにより、アニーリング計算サービスの利用要求に応じて、アニーリングマシンAMを使って、組合せ最適化問題の演算を実行させることができる。この際、ユーザの累積利用量が、ユーザに利用可能に割り当てられた利用量を超えている場合には、組合せ最適化問題の演算を実行させずに、その旨をユーザに知らせることができる。
つぎに、図16および図17を用いて、図15に示したステップS1505の最適化問題演算処理の具体的な処理手順について説明する。
図16および図17は、最適化問題演算処理の具体的処理手順の一例を示すフローチャートである。図16のフローチャートにおいて、まず、最適化問題演算装置201は、モード設定テーブル900を参照して、全ユニットの情報(問題規模)を取得する(ステップS1601)。ユニットの情報(問題規模)は、ユニットで解くことができる問題の最大規模(スピンビット数)を示す情報である。
つぎに、最適化問題演算装置201は、組合せ最適化問題の規模を特定する(ステップS1602)。組合せ最適化問題の情報は、例えば、図15に示したステップS1501において受信されたアニーリング計算サービスの利用要求に含まれる。
そして、最適化問題演算装置201は、取得した全ユニットの情報(問題規模)に基づいて、特定した組合せ最適化問題の規模が、全ユニットの問題規模のうちの最大規模より大きいか否かを判断する(ステップS1603)。ここで、組合せ最適化問題の規模が最大規模より大きい場合(ステップS1603:Yes)、最適化問題演算装置201は、分割解法使用モードが設定されているか否かを判断する(ステップS1604)。
なお、分割解法使用モードとは、分割解法により問題を分割して解くモードである。分割解法使用モードは、あらかじめ任意に設定可能である。
ここで、分割解法使用モードが設定されている場合(ステップS1604:Yes)、最適化問題演算装置201は、分割ソルバ等により、受け付けた組合せ最適化問題を分割して(ステップS1605)、ステップS1602に戻る。この結果、ステップS1602において、分割後の問題が計算対象の組合せ最適化問題として受け付けられる。
一方、分割解法使用モードが設定されていない場合(ステップS1604:No)、最適化問題演算装置201は、ユーザに対してエラーを返して(ステップS1606)、本フローチャートによる一連の処理を終了する。
また、ステップS1603において、組合せ最適化問題の規模が最大規模より大きくない場合(ステップS1603:No)、最適化問題演算装置201は、図17に示すステップS1701に移行する。
図17のフローチャートにおいて、まず、最適化問題演算装置201は、モード設定テーブル900を参照して、組合せ最適化問題の規模に応じた演算可能ユニットを特定する(ステップS1701)。具体的には、例えば、最適化問題演算装置201は、組合せ最適化問題の規模以上の規模の問題を解くことができるユニットのうち、解くことができる問題の最大規模が最小のユニットを、演算可能ユニットとして特定する。
つぎに、最適化問題演算装置201は、特定した演算可能ユニットのうち選択されていない未選択のユニットを選択する(ステップS1702)。そして、最適化問題演算装置201は、選択したユニットが演算を実行中であるか否かを判断する(ステップS1703)。
ここで、選択したユニットが演算を実行中の場合(ステップS1703:Yes)、最適化問題演算装置201は、特定した演算可能ユニットのうち選択されていない未選択のユニットがあるか否かを判断する(ステップS1704)。ここで、未選択のユニットがある場合(ステップS1704:Yes)、最適化問題演算装置201は、ステップS1702に戻る。
一方、未選択のユニットがない場合(ステップS1704:No)、最適化問題演算装置201は、選択したユニットの演算が終了するまで待機して(ステップS1705)、ステップS1706に移行する。
また、ステップS1703において、選択したユニットが演算を実行中でない場合(ステップS1703:No)、最適化問題演算装置201は、選択したユニットを、組合せ最適化問題の振り分け先のユニットに決定する(ステップS1706)。
つぎに、最適化問題演算装置201は、決定した振り分け先のユニットで組合せ最適化問題を解く(ステップS1707)。そして、最適化問題演算装置201は、クライアント装置202に組合せ最適化問題の演算結果を返して(ステップS1708)、最適化問題演算処理を呼び出したステップに戻る。
これにより、組合せ最適化問題の規模に応じた適切なハードウェアリソースを使用して演算を行うことができ、組合せ最適化問題を効率的に解くことができる。
なお、最適化問題演算装置201は、組合せ最適化問題を解くにあたり、組合せ最適化問題の要求精度を考慮することにしてもよい。例えば、最適化問題演算装置201は、組合せ最適化問題の要求精度が、選択したユニットの最大精度の範囲内であるか否かを判断する。
ここで、組合せ最適化問題の要求精度が最大精度の範囲内の場合、最適化問題演算装置201は、選択したユニットで組合せ最適化問題を解く。一方、組合せ最適化問題の要求精度が最大精度の範囲外の場合、最適化問題演算装置201は、自動スケーリングモードが設定されているか否かを判断する。
なお、自動スケーリングモードとは、最大精度の範囲内にスケーリングして問題を解くモードである。自動スケーリングモードは、あらかじめ任意に設定可能である。
ここで、自動スケーリングモードが設定されていない場合、最適化問題演算装置201は、ユーザに対してエラーを返す。一方、自動スケーリングモードが設定されている場合、最適化問題演算装置201は、組合せ最適化問題を、選択したユニットの最大精度の範囲内にスケーリング(N倍)する。
つぎに、最適化問題演算装置201は、選択したユニットでスケーリングした問題を解く。そして、最適化問題演算装置201は、元の問題に合うようにエネルギーは再計算(1/N倍)して、クライアント装置202に演算結果を返す。
以上説明したように、実施の形態にかかる最適化問題演算装置201によれば、量子ビット数と使用時間とに基づいて規定される、アニーリングマシンAMの利用上限に対して、複数のユーザのうちの1以上の特定ユーザに対応する量子ビット数と使用時間との指定を受け付けることができる。特定ユーザは、例えば、複数のユーザのうち他のユーザよりも高い優先度が設定されたユーザである。そして、最適化問題演算装置201によれば、指定された量子ビット数と使用時間とに基づいて規定される利用量を特定ユーザに利用可能に割り当てるとともに、アニーリングマシンAMの利用上限から当該利用量を減じた余りの利用量を、複数のユーザのうちの特定ユーザ以外のユーザに利用可能に割り当てることができる。
これにより、利用上限が設定されたアニーリングマシンAMを共用する複数のユーザのうち、特定ユーザが使用を希望する分の利用量を、特定ユーザに割り当てることができる。また、特定ユーザ以外のユーザについては、アニーリングマシンAMの利用上限から特定ユーザが使用を希望する利用量を減じた余りの利用量を割り当てることができる。
また、最適化問題演算装置201によれば、余りの利用量を、特定ユーザ以外のユーザそれぞれに均等となるように分配して割り当てることができる。
これにより、特定ユーザ以外のユーザにアニーリングマシンAMを平等に使わせることができる。この割当手法は、例えば、大学などにおいて、教育目的のために学生一人当たりに最低限の利用量を確保したい場合などに有効である。
また、最適化問題演算装置201によれば、余りの利用量を、特定ユーザ以外の全ユーザでシェア(共用)可能に割り当てることができる。
これにより、特定ユーザ以外の全ユーザで余りの利用量をシェア(共用)することができる。このため、例えば、ユーザごとの使い方の違いにより生じる利用量のばらつきを吸収して、余りの利用量を効率的に使用することができる。
また、最適化問題演算装置201によれば、複数のユーザのいずれかのユーザからの組合せ最適化問題を受け付け、受け付けた組合せ最適化問題の規模と、複数の最適化装置308それぞれの論理的な分割状態を規定するパーティションモードについての情報とに基づき、組合せ最適化問題を振り分ける最適化装置308を決定することができる。そして、最適化問題演算装置201によれば、決定した最適化装置308で組合せ最適化問題の演算を実行させることができる。
これにより、パーティションモードが異なる複数の最適化装置308のうち、問題の規模に応じたパーティションモードに設定された最適化装置308により、組合せ最適化問題の演算を行うことができる。このため、問題の規模に応じて、演算の際に利用されるハードウェアリソースの範囲を適切に選択でき、演算性能を高めて演算処理の高速化を図ることができる。
また、最適化問題演算装置201によれば、組合せ最適化問題の演算を実行させた最適化装置308のパーティションモードに対応する量子ビット数と、組合せ最適化問題の演算にアニーリングマシンAMを使用した時間とに基づいて、アニーリングマシンAMの利用量を算出し、算出した利用量を該当ユーザに対応する累積利用量に加算することができる。該当ユーザは、組合せ最適化問題を受け付けたユーザである。
これにより、アニーリングマシンAMの利用量を、組合せ最適化問題の演算に使用した量子ビット数と使用時間から計算可能にして、各ユーザがどれだけアニーリングマシンAMを利用したのかを適切に管理することができる。
また、最適化問題演算装置201によれば、ユーザの累積利用量が、ユーザに利用可能に割り当てられた利用量を超えた場合、ユーザに対応するアニーリングマシンAMの利用上限を超えたことを示す警告情報を出力することができる。
これにより、契約単位のアニーリングマシンAMの利用上限のうち、ユーザごとに割り当てられた分の利用量をユーザが使い切った場合に、その旨をユーザに知らせることができる。
また、最適化問題演算装置201によれば、複数の最適化装置308それぞれの論理的な分割状態を規定するパーティションモードの少なくともいずれかのパーティションモードについて、特定ユーザに対応して、当該パーティションモードに対応する量子ビット数と使用時間との指定を受け付けることができる。
これにより、特定ユーザが使用を希望するアニーリングマシンAMの使用時間を、パーティション単位に指定可能にすることができる。
これらのことから、実施の形態にかかる情報処理システム200および最適化問題演算装置201によれば、利用上限の設定されたアニーリングマシンの利便性の向上を図ることができる。例えば、アニーリング計算サービスの一契約あたりの使用可能総量を、アニーリングマシンAMの利用目的などに応じて使い分けることができる。また、低優先度のユーザが長時間使い続けて、高優先度のユーザがアニーリングマシンAMを使用できなくなったり、待ち時間が長くなったりするのを防ぐことができる。
大学を例に挙げると、教育目的で学生たちにもアニーリングマシンAMを使わせるような使い方をする場合に、学生たちが多くの時間を使い過ぎて、研究目的で教授などが使用できなくなったり、待ち時間が長くなったりする事態を回避することができる。
なお、本実施の形態で説明した割当制御方法は、あらかじめ用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本割当制御プログラムは、ハードディスク、フレキシブルディスク、CD-ROM、DVD、USBメモリ等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また、本割当制御プログラムは、インターネット等のネットワークを介して配布してもよい。
上述した実施の形態に関し、さらに以下の付記を開示する。
(付記1)量子ビット数と使用時間とに基づいて規定される、アニーリングマシンの利用上限に対して、複数のユーザのうちの1以上の特定ユーザに対応する量子ビット数と使用時間との指定を受け付け、
指定された前記量子ビット数と前記使用時間とに基づいて規定される利用量を前記特定ユーザに利用可能に割り当てるとともに、前記アニーリングマシンの利用上限から前記利用量を減じた余りの利用量を、前記複数のユーザのうちの前記特定ユーザ以外のユーザに利用可能に割り当てる、
処理をコンピュータに実行させることを特徴とする割当制御プログラム。
(付記2)前記割り当てる処理は、
前記余りの利用量を、前記特定ユーザ以外のユーザそれぞれに均等となるように分配して割り当てる、ことを特徴とする付記1に記載の割当制御プログラム。
(付記3)前記割り当てる処理は、
前記余りの利用量を、前記特定ユーザ以外の全ユーザで共用可能に割り当てる、ことを特徴とする付記1または2に記載の割当制御プログラム。
(付記4)前記アニーリングマシンは、論理的に複数のパーティションに分割可能な、組合せ最適化問題を解く複数の演算ユニットを含み、
前記複数のユーザのいずれかのユーザからの組合せ最適化問題を受け付け、
受け付けた前記組合せ最適化問題の規模と、前記複数の演算ユニットそれぞれの論理的な分割状態を規定するパーティションモードについての情報とに基づき、前記組合せ最適化問題を振り分ける演算ユニットを決定し、
決定した前記演算ユニットで前記組合せ最適化問題の演算を実行させる、
処理を前記コンピュータに実行させることを特徴とする付記1~3のいずれか一つに記載の割当制御プログラム。
(付記5)前記組合せ最適化問題の演算を実行させた前記演算ユニットのパーティションモードに対応する量子ビット数と、前記組合せ最適化問題の演算に前記アニーリングマシンを使用した時間とに基づいて、前記アニーリングマシンの利用量を算出し、
算出した前記利用量を前記いずれかのユーザに対応する累積利用量に加算する、
処理を前記コンピュータに実行させることを特徴とする付記4に記載の割当制御プログラム。
(付記6)前記いずれかのユーザの累積利用量が、前記いずれかのユーザに利用可能に割り当てられた利用量を超えた場合、前記いずれかのユーザに対応する前記アニーリングマシンの利用上限を超えたことを示す警告情報を出力する、
処理を前記コンピュータに実行させることを特徴とする付記5に記載の割当制御プログラム。
(付記7)前記出力する処理は、
前記いずれかのユーザからの組合せ最適化問題を受け付けた際に、前記いずれかのユーザの累積利用量が、前記いずれかのユーザに利用可能に割り当てられた利用量を超えている場合、前記組合せ最適化問題の演算を実行させずに、前記警告情報を出力する、ことを特徴とする付記6に記載の割当制御プログラム。
(付記8)前記受け付ける処理は、
前記複数の演算ユニットそれぞれの論理的な分割状態を規定するパーティションモードの少なくともいずれかのパーティションモードについて、当該パーティションモードに対応する量子ビット数と使用時間との指定を受け付ける、ことを特徴とする付記4に記載の割当制御プログラム。
(付記9)前記特定ユーザは、前記複数のユーザのうちの他のユーザよりも高い優先度が設定されたユーザである、ことを特徴とする付記1~8のいずれか一つに記載の割当制御プログラム。
(付記10)量子ビット数と使用時間とに基づいて規定される、アニーリングマシンの利用上限に対して、複数のユーザのうちの1以上の特定ユーザに対応する量子ビット数と使用時間との指定を受け付け、
指定された前記量子ビット数と前記使用時間とに基づいて規定される利用量を前記特定ユーザに利用可能に割り当てるとともに、前記アニーリングマシンの利用上限から前記利用量を減じた余りの利用量を、前記複数のユーザのうちの前記特定ユーザ以外のユーザに利用可能に割り当てる、
処理をコンピュータが実行することを特徴とする割当制御方法。
(付記11)量子ビット数と使用時間とに基づいて規定される、アニーリングマシンの利用上限に対して、複数のユーザのうちの1以上の特定ユーザに対応する量子ビット数と使用時間との指定を受け付ける受付部と、
前記受付部によって指定を受け付けた前記量子ビット数と前記使用時間とに基づいて規定される利用量を前記特定ユーザに利用可能に割り当てるとともに、前記アニーリングマシンの利用上限から前記利用量を減じた余りの利用量を、前記複数のユーザのうちの前記特定ユーザ以外のユーザに利用可能に割り当てる割当制御部と、
を有することを特徴とする情報処理装置。