(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-08-14
(45)【発行日】2024-08-22
(54)【発明の名称】プログラム、計算機システム、及び計算機
(51)【国際特許分類】
G06N 10/00 20220101AFI20240815BHJP
G06F 9/50 20060101ALI20240815BHJP
【FI】
G06N10/00
G06F9/50 150C
G06F9/50 150E
(21)【出願番号】P 2021565598
(86)(22)【出願日】2020-12-15
(86)【国際出願番号】 JP2020046819
(87)【国際公開番号】W WO2021125189
(87)【国際公開日】2021-06-24
【審査請求日】2023-06-13
(31)【優先権主張番号】P 2019228865
(32)【優先日】2019-12-19
(33)【優先権主張国・地域又は機関】JP
(73)【特許権者】
【識別番号】000004178
【氏名又は名称】JSR株式会社
(74)【代理人】
【識別番号】110001771
【氏名又は名称】弁理士法人虎ノ門知的財産事務所
(72)【発明者】
【氏名】渕脇 純太
(72)【発明者】
【氏名】大西 裕也
(72)【発明者】
【氏名】滝本 嘉夫
【審査官】千葉 久博
(56)【参考文献】
【文献】特開2013-4377(JP,A)
【文献】特開2011-18198(JP,A)
【文献】特表2019-520645(JP,A)
【文献】国際公開第2019/064055(WO,A1)
【文献】国際公開第2018/212789(WO,A1)
【文献】国際公開第2005/122052(WO,A1)
【文献】山崎 清仁,特集 エンジニアのための量子コンピュータ入門 第3部第3章 注目の量子コンピュータ用ライブラリあれこれ,Interface,日本,2019年03月01日,Vol.45, No.3,Pages 103-107,ISSN: 0387-9569
(58)【調査した分野】(Int.Cl.,DB名)
G06N 10/00
G06F 9/50
(57)【特許請求の範囲】
【請求項1】
与えられた処理を、量子アルゴリズムにより、または古典アルゴリズムと量子アルゴリズムとの併用アルゴリズムにより行う場合に、前記与えられた処理を実行する計算機を選択する処理を古典計算機に実行させるプログラムであって、
前記与えられた処理を前記量子アルゴリズムを用いて実行するのに必要な、または前記与えられた処理を前記併用アルゴリズムを用いて実行する場合における前記量子アルゴリズムの部分における、必要な量子ビット又は要求量子体積の大きさを算出する算出ステップと、
前記算出ステップにより算出された前記量子ビット又は前記要求量子体積に基づいて、前記与えられた処理を実行する前記計算機を選択する選択ステップと、
前記選択ステップにより選択された前記計算機が量子計算機を含む場合に、前記量子計算機に送信する、前記量子計算機が前記量子アルゴリズムを開始する指示に関する制御信号を生成する制御ステップ
とを前記古典計算機に実行させ
、
前記与えられた処理を、複数の小処理に分割する分割のしかたを決定する分割決定ステップと、
決定された前記分割のしかたに基づいて、前記与えられた処理を、前記複数の小処理に分割する分割ステップとを、前記古典計算機に実行させ、
前記選択ステップは、前記分割ステップにより分割された前記複数の小処理のうちそれぞれについて、前記計算機を選択し、
前記制御ステップは、前記分割ステップにより分割された前記複数の小処理のうちそれぞれについて、前記制御信号を生成する、プログラム。
【請求項2】
前記制御ステップは、前記選択ステップにより選択された前記計算機が量子計算機を含む場合に、前記量子計算機が前記量子アルゴリズムの開始時に生成する量子状態を生成するのに必要な情報を前記制御信号として生成する、請求項1に記載のプログラム。
【請求項3】
前記与えられた処理は、与えられた化学構造に対して量子化学計算を行う処理である、請求項1に記載のプログラム。
【請求項4】
前記与えられた化学構造は、化学構造のリストを記憶する記憶部から読み出された化学構造である、請求項3に記載のプログラム。
【請求項5】
前記算出ステップは、前記複数の小処理のうちそれぞれについて前記量子ビット又は前記要求量子体積の大きさを算
出する、請求項1に記載のプログラム。
【請求項6】
前記選択ステップは、前記算出ステップにより算出された前記量子ビットまたは前記要求量子体積と、利用可能な計算機リソースの能力、特性及び空き具合のうち少なくとも一つとに応じて、前記計算機を選択する、請求項
1又は5に記載のプログラム。
【請求項7】
前記選択ステップは、前記算出ステップにより算出された前記量子ビットまたは前記要求量子体積と、利用可能な計算機リソースの能力、特性及び空き具合のうち少なくとも一つとに応じて、更に前記計算機を実行する実行タイミングまたは実行順序を選択する、請求項
6に記載のプログラム。
【請求項8】
前記選択ステップは、前記量子ビットが、前記計算機で利用可能な量子ビットを上回らないように、または前記要求量子体積が、前記計算機の要求量子体積を上回らないように、前記計算機を選択する、請求項1~
7のいずれか一つに記載のプログラム。
【請求項9】
前記算出ステップにより算出された前記量子ビット又は前記要求量子体積の大きさを表示部に表示させる表示制御ステップを更に前記古典計算機に実行させる、請求項1~
8のいずれか一つに記載のプログラム。
【請求項10】
前記算出ステップにより算出された前記量子ビット又は前記要求量子体積に基づいて、前記処理を実行可能な計算機のリストを生成する生成ステップと、
前記生成ステップにより生成された前記処理を実行可能な計算機のリストを表示部に表示させる表示制御ステップとを更に前記古典計算機に実行させる、請求項1~9のいずれか一つに記載のプログラム。
【請求項11】
前記表示部は、前記古典計算機が配置される端末であるプロバイダ側端末とは異なる端末であって、ユーザが操作可能な端末であるユーザ端末に配置される、請求項
9又は10に記載のプログラム。
【請求項12】
前記選択ステップは、古典計算機と量子計算機との両方の計算機の中から、前記量子ビット又は前記要求量子体積に基づいて、前記処理を実行する計算機を選択する、請求項1~
11のいずれか一つに記載のプログラム。
【請求項13】
前記併用アルゴリズムは、VQE(variational quantum eigensolver)法である、請求項1~
12のいずれか一つに記載のプログラム。
【請求項14】
与えられた処理を、量子アルゴリズムにより、または古典アルゴリズムと量子アルゴリズムとの併用アルゴリズムにより行う場合に、前記与えられた処理を実行する計算機を複数の計算機の中から選択する処理を実行する古典計算機と、前記複数の計算機とからなる計算機システムであって、
前記複数の計算機は、少なくとも1つの量子計算機を含み、
前記古典計算機は、
前記与えられた処理を前記量子アルゴリズムを用いて実行するのに必要な、または前記与えられた処理を前記併用アルゴリズムを用いて実行する場合における前記量子アルゴリズムの部分における、必要な量子ビット又は要求量子体積の大きさを算出する算出部と、
前記算出部が算出した前記量子ビット又は前記要求量子体積に基づいて、前記与えられた処理を実行する前記計算機を選択する振り分け部と、
前記振り分け部が選択した前記計算機が前記量子計算機を含む場合に、前記量子計算機が前記量子アルゴリズムを開始する指示
に関する制御信号を前記量子計算機に送信する送信部と
、
前記与えられた処理を、複数の小処理に分割する分割のしかたを決定する分割決定部と、
決定された前記分割のしかたに基づいて、前記与えられた処理を、前記複数の小処理に分割する分割部と
を備え
、
前記振り分け部は、前記分割部により分割された前記複数の小処理のうちそれぞれについて、前記計算機を選択し、
前記送信部は、前記分割部により分割された前記複数の小処理のうちそれぞれについて、前記制御信号を生成する、計算機システム。
【請求項15】
前記算出部が算出した前記量子ビット若しくは前記要求量子体積の大きさ、又は前記振り分け部が選択した前記計算機に係る情報を送信する機能を備える請求項
14に記載の計算機システム。
【請求項16】
前記算出部が算出した前記量子ビット若しくは前記要求量子体積の大きさ、又は前記振り分け部が選択した前記計算機に係る情報をユーザに表示する表示部を更に備える、請求項
14に記載の計算機システム。
【請求項17】
前記算出部が算出した前記量子ビット若しくは前記要求量子体積の大きさ、又は前記振り分け部が選択した前記計算機に係る情報及び、構造式又は原子座標又は化学構造を表す文字列または化合物を特定する情報をユーザに表示する表示部を更に備える、請求項
16に記載の計算機システム。
【請求項18】
前記古典計算機は、前記算出部の機能を有する第1の古典計算機と、前記第1の古典計算機とネットワークを通じて接続され、前記振り分け部及び前記送信部の機能を有する第2の古典計算機とを備える、請求項
14に記載の計算機システム。
【請求項19】
与えられた処理を、量子アルゴリズムにより、または古典アルゴリズムと量子アルゴリズムとの併用アルゴリズムにより行う場合に、前記与えられた処理を実行する計算機を複数の計算機の中から選択する処理を実行する古典計算機であって、
前記与えられた処理を前記量子アルゴリズムを用いて実行するのに必要な、または前記与えられた処理を前記併用アルゴリズムを用いて実行する場合における前記量子アルゴリズムの部分における、必要な量子ビット又は要求量子体積の大きさを算出する算出部と、
前記算出部が算出した前記量子ビット又は前記要求量子体積に基づいて、前記与えられた処理を実行する前記計算機を選択する振り分け部と、
前記振り分け部が選択した前記計算機が量子計算機を含む場合に、前記量子計算機が前記量子アルゴリズムを開始する指示
に関する制御信号を前記量子計算機に送信する送信部と
、
前記与えられた処理を、複数の小処理に分割する分割のしかたを決定する分割決定部と、
決定された前記分割のしかたに基づいて、前記与えられた処理を、前記複数の小処理に分割する分割部と
を備え
、
前記振り分け部は、前記分割部により分割された前記複数の小処理のうちそれぞれについて、前記計算機を選択し、
前記送信部は、前記分割部により分割された前記複数の小処理のうちそれぞれについて、前記制御信号を生成する、計算機。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、プログラム、計算機システム及び計算機に関する。
【背景技術】
【0002】
古典計算機とは異なる計算パラダイムの下で計算を行う計算機として量子計算機がある。量子計算機は、例えば量子もつれ状態等の初期生成された量子状態に対して、ショアの素因数分解アルゴリズムやグローバーの探索アルゴリズム等の所定の量子アルゴリズムのもとでユニタリ行列を作用させ、生成された量子状態を基に計算結果を生成する計算機である。
【0003】
量子計算のシミュレーション及び実行環境は、例えば、Azure(登録商標) Quantum、AWS(登録商標) Braket、IBM Q-Experience(登録商標)などの、クラウドサービスの形で提供されている。これらのクラウドサービスでは、例えば、量子アルゴリズムの古典コンピュータ上でのテスト及びシミュレーション環境が与えられ、また作成した量子アルゴリズムを、ゲート方式の超伝導コンピュータ、量子アニーリング超伝導コンピュータ、イオントラップコンピュータ等の量子ハードウェア上で実行することができる。
【0004】
ここで、量子計算機と古典計算機の違いを例えば分子軌道計算を行う場合で説明すると、量子計算機は、古典計算機と比較して、原子数Nに対する計算の増大速度がゆるやかな一方で、大きな量子ビット数の量子計算機を作成するのが難しいため、量子ビット数による制限が課せられる。従って、与えられた処理の大きさによって、古典計算機と量子計算機のどちらで計算を行うかを使い分けるのが望ましい場合がある。
【0005】
また、すべての計算を量子計算機で行うのではなく、古典計算機と量子計算機の両方を用いて計算を行う併用アルゴリズムが知られている。例えば、VQE(Variational Quantum Eigensolver)は、変分法をベースにして、量子計算機により所定の試行波動関数を生成した上でハミルトニアンの期待値を測定し、測定結果を基に古典計算機で処理を行うことで、変分法ベースで、古典計算機の中に量子計算機を組み込むアルゴリズムである。
【0006】
また、量子ビットの異なる複数の量子計算機を用いて計算を行う場合が考えられる。
【先行技術文献】
【非特許文献】
【0007】
【文献】Kandala, A., Mezzacapo, A., Temme, K. et al., Nature, 2017年、549巻、p242-246
【発明の概要】
【発明が解決しようとする課題】
【0008】
本発明は、古典計算機と量子計算機とが、または複数の量子計算機が混在する場合において、処理の最適化を行うことを目的とする。
【課題を解決するための手段】
【0009】
上述した課題を解決し、目的を達成するために、本発明に係るプログラムは、与えられた処理を、量子アルゴリズムにより、または古典アルゴリズムと量子アルゴリズムとの併用アルゴリズムにより行う場合に、当該与えられた処理を実行する計算機を選択する処理を古典計算機に実行させるプログラムであって、算出ステップと、選択ステップと、制御ステップとを当該古典計算機に実行させる。算出ステップは、与えられた処理を量子アルゴリズムを用いて実行するのに必要な、または与えられた処理を前記併用アルゴリズムを用いて実行する場合における量子アルゴリズムの部分における、必要な量子ビット又は要求量子体積の大きさを算出する。選択ステップは、算出ステップにより算出された量子ビット又は要求量子体積に基づいて、与えられた処理を実行する計算機を選択する。制御ステップは、選択ステップにより選択された計算機が量子計算機を含む場合に、量子計算機に送信する、量子計算機が量子アルゴリズムを開始する指示に関する制御信号を生成する。
【0010】
また、本発明に係る計算機システムは、与えられた処理を、量子アルゴリズムにより、または古典アルゴリズムと量子アルゴリズムとの併用アルゴリズムにより行う場合に、当該与えられた処理を実行する計算機を複数の計算機の中から選択する処理を実行する古典計算機と、複数の計算機とからなる。この複数の計算機は、少なくとも1つの量子計算機を含む。古典計算機は、算出部と、振り分け部と、送信部とを備える。算出部は、与えられた処理を量子アルゴリズムを用いて実行するのに必要な、または与えられた処理を併用アルゴリズムを用いて実行する場合における量子アルゴリズムの部分における、必要な量子ビット又は要求量子体積の大きさを算出する。振り分け部は、算出部が算出した量子ビット又は要求量子体積に基づいて、与えられた処理を実行する計算機を選択する。送信部と、振り分け部が選択した計算機が量子計算機を含む場合に、量子計算機が量子アルゴリズムを開始する指示を量子計算機に送信する。
【0011】
また、本発明に係る計算機は、与えられた処理を、量子アルゴリズムにより、または古典アルゴリズムと量子アルゴリズムとの併用アルゴリズムにより行う場合に、与えられた処理を実行する計算機を複数の計算機の中から選択する処理を実行する古典計算機である。算出部は、与えられた処理を量子アルゴリズムを用いて実行するのに必要な、または与えられた処理を併用アルゴリズムを用いて実行する場合における量子アルゴリズムの部分における、必要な量子ビット又は要求量子体積の大きさを算出する。振分け部は、算出部が算出した量子ビット又は要求量子体積に基づいて、与えられた処理を実行する計算機を選択する。送信部は、振り分け部が選択した計算機が量子計算機を含む場合に、量子計算機が量子アルゴリズムを開始する指示を量子計算機に送信する。
【発明の効果】
【0012】
本発明によれば、古典計算機と量子計算機とが、または複数の量子計算機が混在する場合において、処理の最適化を行うことができる。
【図面の簡単な説明】
【0013】
【
図1】
図1は、本発明の実施形態に係る計算機システムの概略を表す図である。
【
図2A】
図2Aは、実施形態に係る背景について説明する図である。
【
図2B】
図2Bは、実施形態に係る背景について説明する図である。
【
図3】
図3は、第1の実施形態に係るプログラムが実行する処理の流れを示したフローチャートである。
【
図4】
図4は、第1の実施形態の第1の変形例に係るプログラムが実行する処理の流れを示したフローチャートである。
【
図5】
図5は、第2の実施形態に係るプログラムが実行する処理の流れを示したフローチャートである。
【
図6】
図6は、
図5におけるステップS200の処理について詳細に説明したフローチャートである。
【発明を実施するための形態】
【0014】
以下、添付図面を参照しながら、本発明の実施形態に係るプログラム、計算機システム及び計算機を説明する。
【0015】
(第1の実施形態)
図1は、本発明の実施形態に係る計算機システム1の概略を表す図である。計算機システム1は、他の計算機の制御を行うための従来型の古典計算機100と、量子計算を用いず従来型の方法で計算を行う古典計算機200a、200b、200c…と、量子計算を用いて計算を行う量子計算機300a、300b、300c…を含む。ここで、古典計算機100及び200a、200b、200cは、例えばチューリングマシンとして表現できる通常の意味での計算機、例えばノイマン型の計算機である。
【0016】
なお、計算機システム1の構成としては、古典計算機200a、200b、200c…と、量子計算機300a、300b、300c…とのうち2以上の計算機を有していればよく、量子計算機のみを有する場合、古典計算機と量子計算機とのうち両方を有する場合の、いずれの場合であってもよい。
【0017】
古典計算機100は、他の計算機(古典計算機200a、200b、200c…、量子計算機300a、300b、300c)の制御を行うための計算機であり、処理回路10と、記憶部20と、ディスプレイ30と、入力装置40とを備える。処理回路10は、算出機能10aと、選択機能10bと、制御機能10cと、分割決定機能10dと、分割機能10eと、表示制御機能10fと、生成機能10gを備える。
【0018】
処理回路10は、プログラムを記憶部20から読み出して実行することで、算出機能10a、選択機能10b等の機能を実現するプロセッサ(例えば、CPU(Central Processing Unit)、GPU(Graphical Processing Unit)、ASIC(Application Specific Integrated Circuit)、PLD(Programmable Logic Device)等)である。すなわち、算出機能10a、選択機能10b、制御機能10c、分割決定機能10d、分割機能10e、表示制御機能10f、生成機能10g等による処理機能は、当該プロセッサにより実行可能なプログラムの形態で記憶部20に記憶される。これにより、プログラムが読み出された状態の処理回路10は、算出機能10a、選択機能10b、制御機能10c、分割決定機能10d、分割機能10e、表示制御機能10f、生成機能10g等の機能を有し、算出機能10aにより算出ステップを、選択機能10bにより選択ステップを、制御機能10cにより制御ステップを、分割決定機能10dにより分割決定ステップを、分割機能10eにより分割ステップを、表示制御機能10fにより表示ステップを、生成機能10gにより生成ステップを、古典計算機100に実行させる。すなわち、算出機能10a、選択機能10b、制御機能10c、分割決定機能10d、分割機能10e、表示制御機能10f、生成機能10gは、それぞれ算出部、振り分け部(選択部)、制御部、分割決定部、分割部、表示制御部、生成部に対応する。なお、処理回路10が有する各機能の処理の詳細については後述する。また、制御機能10cは、種々の情報を送信する機能を備える送信部の一例ともなる。
【0019】
記憶部20は、RAM(Random Access Memory)、ROM(Read Only Memory)、フラッシュメモリ、ハードディスク等の記憶領域であり、処理回路10が実行する各種プログラム及び当該各種プログラムの実行結果等を記憶する。
【0020】
ディスプレイ30は、各種情報を表示する。例えば、ディスプレイ30は、CPUの処理結果や、ユーザから各種操作を受け付けるためのGUI(Graphical User Interface)等を表示する。ディスプレイ30は、例えば液晶ディスプレイ、有機EL(Electro Luminescence)ディスプレイ又はブラウン管ディスプレイで構成される。なお、例えばタッチパネルのような形態で、入力装置40とディスプレイ30とが一体に構成されても良い。
【0021】
入力装置40は、ユーザが各種の操作を行うためのデバイスである。入力装置40は、例えばマウス、キーボード、タッチパネル又はハードウェアキーで構成される。
【0022】
なお、実施形態は上述の例に限られない。実施形態によっては、記憶部20、ディスプレイ30、入力装置40等は、古典計算機100の必須の構成要素ではなく、すなわち古典計算機100は記憶部20、ディスプレイ30、入力装置40等を含まなくてもよい。また、別の例として、記憶部20、ディスプレイ30、入力装置40等は、例えば、ネットワークを介して古典計算機100の外に配置され、処理回路10とデータのやりとりが行われてもよい。また、古典計算機100は、2以上の古典計算機から構成されてもよい。例えば、古典計算機は、算出機能10aを有する第1の古典計算機と、第1の古典計算機とネットワークを通じて接続され、振り分け機能(選択機能10b)及び送信部としての制御機能10cを有する第2の古典計算機とを備えても良い。
【0023】
古典計算機100が、他の計算機の制御を行うための計算を行う計算機であるのに対して、古典計算機200a、古典計算機200b、古典計算機200c…は、量子化学計算等、与えられた処理そのものを実行するための計算機である。例えば古典計算機200aは、古典計算機100と同様に、処理回路10と同様の処理回路10xと、記憶部20と同様の記憶部20xとを備える。なお、処理回路10の有するすべての機能を、処理回路10xが有している必要はない。以下同様に、古典計算機200b、200c…も、処理回路10と同様の処理回路と、記憶部20と同様の記憶部を備える。
【0024】
量子計算機300a、300b、300cは、量子状態を用いて計算を行う量子計算機である。例えば、量子計算機300aは、初期量子状態を生成する量子情報生成部50と、複数の量子ゲート60と、量子ゲート制御部70と、測定部80とを備える。
【0025】
量子計算機の典型的な動作の例を説明すると、処理回路10は、送信部としての制御機能10cにより、初期状態の量子状態を生成するための制御信号を量子計算機300aに送信する。初期状態の量子状態を生成するための制御信号を古典計算機100から取得した量子計算機300aは、量子情報生成部50により、例えば量子エンタングルメント状態等の初期量子状態を生成する。
【0026】
量子ゲート60は、生成された量子状態に作用し、量子状態を変化させる。量子ゲート60の量子状態に対する作用は、ユニタリ行列の形で表すことができる。また、量子ゲート制御部70は、量子ゲート60の動作、すなわち当該ユニタリ行列を変化させる。測定部80は、量子ゲート60を通過した量子状態を測定する。これにより、量子計算機300aは、測定部80が測定した測定結果を出力データとして得ることができる。
【0027】
また、計算機システム1は、ユーザからの情報の入力を受け付け、またはユーザに情報の表示を行うユーザ端末400を備えてもよい。一例として、ユーザ端末400は、ディスプレイ30や入力装置40と同様に、ユーザ端末側に、ディスプレイ30z及び入力装置40zを備えても良い。
【0028】
続いて、実施形態に係る背景について簡単に説明する。
【0029】
古典計算機とは異なる計算パラダイムの下で計算を行う計算機として量子計算機がある。量子計算機は、例えば、初期生成された量子もつれ状態等の量子状態に対して、ショアの素因数分解アルゴリズムやグローバーの探索アルゴリズム等の所定の量子アルゴリズムのもとでユニタリ行列を作用させ、生成された量子状態を測定して計算結果を生成する計算機である。
【0030】
量子計算のシミュレーション及び実行環境は、例えば、Azure(登録商標) Quantum、AWS(登録商標) Braket、IBM Q-Experience(登録商標)などの、クラウドサービスの形で提供されている。これらのクラウドサービスでは、例えば、量子アルゴリズムの古典コンピュータ上でのテスト及びシミュレーション環境が与えられ、また作成した量子アルゴリズムを、ゲート方式の超伝導コンピュータ、量子アニーリング超伝導コンピュータ、イオントラップコンピュータ等の量子ハードウェア上で実行することができる。
【0031】
ここで、量子計算機と古典計算機の違いについて、例えば、分子軌道計算等の計算を例に取ると、
図2Aに示されるように、古典計算機では、原子数Nが大きくなると計算時間が急激に増大する。例えば、原子数Nに対して、計算時間がN
6に比例として増大する。一方で、
図2Bに示されるように、量子計算機では、原子数Nに対して計算時間がそれほど大きく増大しない。例えば、原子数Nに対して、計算時間がNに比例する時間で抑えられる。ただし、大きな量子ビットの量子計算機を作成するのは現状難しく、量子ビット数による制限がある。従って、与えられた処理の大きさによって、古典計算機と量子計算機のどちらで計算を行うかを使い分けるのが望ましい場合がある。
【0032】
また、大きな量子ビットの量子計算機を作成する困難さを考慮して、すべての計算を量子計算機による量子アルゴリズムで行うのではなく、古典計算機により実行される古典アルゴリズムと量子計算機により実行される量子アルゴリズムの両方を用いて計算を行う併用アルゴリズムが知られている。併用アルゴリズムとしては、例えばVQE(Variational Quantum Eigensolver)が挙げられる。VQEは、変分法をベースにして、量子計算機により所定の試行波動関数を生成した上でハミルトニアンの期待値を測定し、測定結果を基に古典計算機で処理を行うことで、変分法ベースで、古典計算機の中に量子計算機を組み込むアルゴリズムである。
【0033】
また、古典計算機と量子計算機の両方を用いた併用アルゴリズムを用いる場合の他に、与えられた処理を、古典計算機が担当する処理と、量子計算機が担当する処理とに分割し、各処理をそれぞれの計算機が実行することにより並列計算を行う場合が考えられる。また、与えられた処理を量子ビット数の異なる複数の量子計算機で分担して行う場合、与えられた処理をそれぞれの量子計算機が担当する処理に分割し、各処理をそれぞれの計算機が実行することにより並列計算を行う場合が考えられる。
【0034】
実施形態は、かかる背景に基づくものであって、少なくとも1つの量子計算機を含む複数の計算機で処理を行う場合における処理を最適化しようとするものである。
【0035】
図3は、第1の実施形態に係るプログラムが実行する処理の流れを示したフローチャートである。なお、以下の例としては、与えられた計算処理の例として、化合物の分子軌道計算を行う場合について説明する。
【0036】
はじめに、ステップS100において、処理回路10は、化合物の構造等の情報を記憶部より取得し、与えられた処理、例えば与えられた化学構造に対して量子化学計算を行う処理を行う準備を行う。すなわち、処理回路10は、化学構造のリストを記憶する記憶部20から読み出された化学構造を、当該与えられた化学構造とし、量子化学計算を行う処理を行う準備を行う。
【0037】
続いて、ステップS110において、処理回路10は、算出機能10aにより、必要な量子ビット(qubit)又は要求量子体積の大きさを算出する。すなわち、実施形態に係るプログラムは、ステップS110において、与えられた処理、例えば与えられた化学構造に対して量子化学計算を行う処理を、量子アルゴリズムを用いて実行するのに必要な、または与えられた処理を併用アルゴリズムを用いて実行する場合における量子アルゴリズムの部分における、必要な量子ビット又は要求量子体積の大きさを算出する算出ステップを古典計算機100に実行させる。ここで、要求量子体積は、要求される量子体積(quantum volume)の大きさ、すなわち、行うことのできる量子計算の規模、すなわち、空間的サイズ及び時間を表す。量子体積は、単純な量子ビット数に、発生するエラーの大きさを加味して算出される指標である。
【0038】
なお、ステップS110において処理回路10が算出する必要な量子ビット又は要求量子体積の算出に当たっては、処理回路10は、算出機能10aにより、若干の余裕度を持たせて必要な量子ビット又は要求量子体積の値を算出してもよく、また算出するのが望ましい。ここで、当該余裕度は、計算の種類や要求される計算速度、計算機の能力、キューの混雑状況などに応じて任意に設定可能である。
【0039】
必要な量子ビット又は要求量子体積の大きさを算出する方法として、例えば、処理回路10は、算出機能10aにより、原子数と、当該原子数の分子軌道計算を行うのに必要な量子ビットまたは要求量子体積との関係を表すテーブルと、原子数とに基づいて、必要な量子ビット又は要求量子体積の大きさを算出する。当該テーブルは、例えば、計算量を正確に見積もることができる程度に原子数が小さい場合における原子数と必要な量子ビットまたは要求体積との関係式を、原子数が大きい場合に外挿することにより作成される。
【0040】
続いて、ステップS120において、与えられた処理を、量子アルゴリズムによりまたは古典アルゴリズムと量子アルゴリズムとの併用アルゴリズムにより、または古典アルゴリズムと量子アルゴリズムの両者を併用して処理を行う場合に、第1の実施形態に係るプログラムは、与えられた処理を実行する計算機を選択する選択ステップを、選択機能10bにより古典計算機100に実行させる。具体的には、処理回路10は、選択機能10bにより、ステップS110において算出された量子ビットまたは要求量子体積に基づいて、与えられた処理を実行する計算機を選択する。
【0041】
ここで、処理を行う候補となる計算機が複数の量子計算機である場合には、与えられた処理を実行する計算機を選択する選択ステップは、複数の量子計算機の中から、ステップS110において算出された量子ビットまたは要求量子体積に基づいて、与えられた処理を実行する量子計算機を選択するステップとなる。
【0042】
また、処理を行う候補となる計算機が1以上の量子計算機と1以上の古典計算機である場合には、与えられた処理を実行する計算機を選択する選択ステップは、古典計算機と量子計算機との両方の計算機の中から、ステップS110において算出された量子ビットまたは要求量子体積に基づいて、古典計算機と量子計算機とのうち、与えられた処理を実行する計算機を選択するステップとなる。この場合、一例として、処理回路10は、選択機能10bにより、量子ビットまたは要求量子体積が、候補となる量子計算機により実現できる量子ビットまたは要求量子体積の範囲内であれば、量子計算機を、与えられた処理を実行する計算機として選択し、量子ビットまたは要求量子体積が、候補となる量子計算機により実現できる量子ビットまたは要求量子体積の範囲を超えている場合、古典計算機を、与えられた処理を実行する計算機として選択する。
【0043】
例えば、量子計算機300aの量子ビット数が100量子ビットであり、ステップS110において算出された量子ビット数が80量子ビットである場合、ステップS120において、処理回路10は、選択機能10bにより、量子計算機300aを、与えられた処理を実行する計算機として選択する。量子計算機300aは、量子アルゴリズムにより、当該与えられた処理を実行する。一方、量子計算機300aの量子ビット数が100量子ビットであり、ステップS110において算出された量子ビット数が120量子ビットである場合、ステップS120において、処理回路10は、選択機能10bにより、古典計算機200aを、与えられた処理を実行する計算機として選択する。与えられた処理が分子軌道計算の場合、古典計算機200aは、例えばHartree-Fock法、DFT法、CCSD(T)法等により、分子軌道計算を実行する。
【0044】
また、古典アルゴリズムと量子アルゴリズムとの併用アルゴリズムを用いる場合、与えられた処理を実行する計算機を選択する選択ステップは、ステップS110において算出された量子ビットまたは要求量子体積に基づいて、与えられた処理を実行する量子計算機を選択し、また、量子計算機の選択とは別途、古典アルゴリズムを実行する古典計算機を選択するステップとなる。
【0045】
これらの選択ステップにおいて、ステップS110で算出された量子ビットが、選択される計算機で利用可能な量子ビットを上回らないような、またはステップS110で算出された要求量子体積が、選択される計算機で実現可能な要求量子体積を上回らないように、処理回路10は、選択機能10bにより、量子計算機の選択を行う。
【0046】
なお、かかる選択ステップにおいて、システム中に量子ビット又は量子体積の異なる複数の量子計算機が存在する場合、選択ステップはその中から対象化合物の計算に必要な量子ビット又は量子体積を下回らず、かつ最も近い量子ビット又は体積を有する量子計算機を優先的に選択することが好ましい。
【0047】
なお、選択ステップにおいて、処理回路10は、選択機能10bにより、算出された量子ビットまたは要求量子体積の他に、利用可能な計算機リソースの能力、特性、空き具合などをも加味して、計算機の選択を行ってもよい。一例として、処理回路10は、選択機能10bにより、計算機リソースの能力が高く、特性が与えられた処理に適した特性であり、または比較的空いている計算機を処理を実行する計算機として選択する。
【0048】
また、選択ステップにおいて、処理回路10は、選択機能10bにより、計算機の選択のみならず、計算機を実行する実行タイミングや実行順序をあわせて選択してもよい。
【0049】
また、ステップS120の処理の実行とあわせて、処理回路10は、表示制御機能10fにより、算出機能10aにより算出された量子ビット若しくは要求量子体積の大きさ、選択機能10bにより選択された計算機に係る情報及び、構造式又は原子座標又は化学構造を表す文字列または化合物を特定する情報を表示部に適宜表示する。ここで、表示部は、ディスプレイ30であってもよいし、古典計算機100が配置される端末であるプロバイダ側端末とは異なる端末であって、ユーザが操作可能な端末であるユーザ端末400であってもよい。
【0050】
また、処理回路10は、制御機能10cにより、算出機能10aにより算出された量子ビット若しくは量子体積の大きさ、又は選択機能10bにより選択された計算機に係る情報を、他の計算機やユーザ端末400、計算機システム1の外部の端末等に送信する機能を備えても良い。
【0051】
続いて、ステップS130において、実施形態に係るプログラムは、ステップS120において選択された計算機が量子計算機を含む場合に、量子計算機に送信する制御信号を生成する制御ステップを、送信部としての選択機能10bにより、古典計算機100に実行させる。ここで、当該制御信号は、量子計算機が量子アルゴリズムを開始する指示に関する制御信号であり、例えば、量子計算機が量子アルゴリズムを開始時に生成する量子状態を生成するのに必要な情報である。例えば、量子アルゴリズムを開始時に生成する量子状態が、α1|0>+α2|1>で表せるとすると、係数α1、α2が、量子計算機が量子アルゴリズムを開始時に生成する量子状態α1|0>+α2|1>を生成するのに必要な情報となる。続いて、処理回路10は、送信部としての制御機能10cにより、量子計算機に、量子計算機が量子アルゴリズムの開始時に生成する量子状態を生成するのに必要な情報を制御信号として送信する。
【0052】
続いて、ステップS140において、古典計算機100から取得した制御信号に基づいて、量子計算機は、量子計算を実行する。また、古典計算機により計算を実行する場合、古典計算機100から取得した制御信号に基づいて、古典計算機は、通常の計算を実行する。また、古典計算機による計算と量子計算機による計算の併用アルゴリズムにより計算を実行する場合、古典計算機100から取得した制御信号に基づいて、古典計算機と量子計算機とが、計算を行う。古典計算機100は、送信部としての制御機能10cにより、複数の計算機に対して制御信号を送信し、複数の計算機のうちそれぞれが、それぞれが受信した制御信号を基に、それぞれの処理を行う。
【0053】
以下の実施形態では、古典計算機200a、200b、200c…及び量子計算機300a、300b、300c…が、古典アルゴリズムと量子アルゴリズムの併用アルゴリズムであるVQE(Variational Quantum Eigensolver)法を用いて分子軌道計算を行う場合について説明する。
【0054】
VQE法は、変分パラメータをθとして、系のハミルトニアンHに対する試行波動関数ψ(θ)に係る期待値<ψ(θ)|H|ψ(θ)>が常に基底状態のエネルギーEを上回るという変分原理を利用して、分子軌道計算を行うアルゴリズムの中に、量子計算機による計算を組み込んだ方法である。
【0055】
ここで、量子計算機300a等は、ある変分パラメータθに対して、変分法の対象となる量子状態ψ(θ)を、量子アルゴリズムを用いて量子状態として生成する。また、量子計算機300a等は、量子情報生成部50により、分子軌道計算等を行う系のハミルトニアンHを、量子計算機上に生成される量子状態ψ(θ)に対するハミルトニアンとして量子計算機上で表現する。しかる後、測定部80は、量子計算機上に生成される量子状態ψ(θ)に対する当該ハミルトニアンの期待値<ψ(θ)|H|ψ(θ)>を測定する。これにより、量子計算機300aは、与えられた変分パラメータθのもとでの、系のハミルトニアンHの、生成された量子状態ψ(θ)における期待値を、測定値として得ることができる。
【0056】
一方、古典計算機200a等は、その他の部分の処理、例えば、変分パラメータθを選択する処理、ハミルトニアンの期待値が最小となる変分パラメータθを算出する処理、変分パラメータθの値に基づいて、どのような量子状態ψ(θ)を選択するかを決定する処理などの処理を担当し、変分パラメータθの最適化を行う。これにより、古典計算機200a等と量子計算機300a等が共同して、量子化学計算等を行うことができる。
【0057】
以上のように、第1の実施形態に係るプログラムによれば、古典計算機と量子計算機とが、または複数の量子計算機が混在する場合において、処理を行う計算機を適切に選択することができ、その結果、処理の最適化を行うことができる。
【0058】
(第1の実施形態の第1の変形例)
【0059】
第1の実施形態では、算出ステップにおいて算出された量子ビット又は要求量子体積の大きさに基づいて、与えられた処理を実行する計算機をプログラムが自動的に選択する場合について説明した。実施形態はこれに限られず、第1の実施形態の第1の変形例においては、プログラムが、算出した量子ビット又は要求量子体積の大きさをディスプレイ30に表示させ、ディスプレイ30に表示された量子ビットまたは要求量子体積の大きさを見たユーザからのフィードバックを受け付けてもよい。
【0060】
かかる状況が、
図4に示されている。なお、ステップS100、ステップS110、ステップS130及びステップS140については、
図2ですでに説明した処理と同様の処理であるので、重ねての説明は省略する。
【0061】
ステップS121において、第1の実施形態の第1の変形例に係るプログラムは、処理回路10の表示制御機能10fにより、算出ステップS110により算出された量子ビット又は要求量子体積の大きさを表示部に表示させる表示制御ステップを、古典計算機100に更に実行させる。
【0062】
続いて、ステップS122において、第1の実施形態の第1の変形例に係るプログラムは、古典計算機100に、処理回路10により、ステップS121において算出された量子ビット又は要求量子体積に基づいて、処理を実行可能な計算機のリストを生成する生成ステップを実行させる。
【0063】
続いて、ステップS123において、当該プログラムは、古典計算機100に、処理回路10の表示制御機能10fにより、ステップS122において生成された処理を実行可能な計算機のリストを表示部に表示させる表示制御ステップを実行させる。
【0064】
続いて、ステップS124において、当該プログラムは、古典計算機100に、処理回路10の制御機能10cにより、化合物名等の入力データを修正するか否かの入力をユーザから受け付ける。
【0065】
処理回路10は、制御機能10cにより、入力データを修正する旨の入力をユーザから受け付けた場合、(ステップS125 Yes)、処理はステップS100に戻る。一方、入力データを修正しない場合(ステップS125 No)、処理はステップS123に移る。
【0066】
続いて、ステップS126において、第1の実施形態の第1の変形例に係るプログラムは、古典計算機100に、処理回路10の制御機能10cにより、与えられた処理を実行する計算機の入力を手動で受け付けるステップを実行させる。
【0067】
続いて、ステップS127において、第1の実施形態の第1の変形例に係るプログラムは、古典計算機100に、処理回路10の選択機能10bにより、ステップS126でユーザから受け付けた入力に基づいて、与えられた処理を実行する計算機を選択させるステップを実行させる。
【0068】
また、第1の実施形態と同様に、第1の実施形態の第1の変形例に係るプログラムは、古典計算機100に、ステップS130及びステップS140と同様の処理を実行させる。
【0069】
以上のように、第1の実施形態に係るプログラムによれば、古典計算機と量子計算機とが、または複数の量子計算機が混在する場合において、必要に応じて、ユーザからの入力を受け付けることで、処理を行う計算機を適切に選択することができ、その結果、処理の最適化を行うことができる。
【0070】
(第2の実施形態)
第1の実施形態では、与えられた処理を、複数の小処理に分割せず、一つの計算機においてすべての処理を行う場合について説明した。第2の実施形態では、与えられた処理を、複数の小処理に分割し、複数の小処理のそれぞれごとに選択された計算機で、古典計算機又は量子計算機が処理を行う場合について説明する。
【0071】
図5及び
図6に、かかる状況が示されている。
図5は、第2の実施形態に係るプログラムが古典計算機100に実行させる処理の流れを示したフローチャートであり、
図6は、
図5におけるステップS200の処理について詳細に説明したフローチャートである。
【0072】
まずはじめに、第2の実施形態に係るプログラムは、ステップS200において、古典計算機100に、処理回路10の分割決定機能15dにより、与えられた処理を、複数の小処理に分割する分割の仕方を決定する分割決定ステップを実行させる。
【0073】
図6を用いて、ステップS200の分割決定ステップについて詳細に説明する。
図6全体の処理が、
図5のステップS200に対応する。
【0074】
はじめに、第2の実施形態に係るプログラムは、ステップS201において、古典計算機100に、各計算機の計算性能を取得させる。
【0075】
続いて、第2の実施形態に係るプログラムは、ステップS202において、古典計算機100に、処理回路10の分割決定機能10dにより、ステップS201で取得した計算性能に基づいて、与えられた処理を複数の小処理に仮分割させるステップを実行させる。
【0076】
続いて、第2の実施形態に係るプログラムは、ステップS203において、古典計算機100に、仮分割された複数の小処理それぞれについて、量子ビットまたは要求量子体積の大きさを算出させるステップを実行させる。
【0077】
続いて、仮分割が、所定の条件を満たしており適切な分割である場合(ステップS204 Yes)、処理はステップS206に進み、処理回路10は、当該仮分割が、適切な分割方法であると決定し、処理回路10は、当該分割を、適切な分割方法であると決定する。
【0078】
一方、仮分割が、適切な分割でない場合(ステップS204 No)、第2の実施形態に係るプログラムは、ステップS205において、古典計算機100に、新たな分割方法で仮分割を行われるステップを実行させ、その後処理はステップS202へと戻る。
【0079】
このようなステップS201~ステップS206により、第2の実施形態に係るプログラムは、上述したステップS200に係る処理を、古典計算機100に実行させる。
【0080】
続いて、
図5に戻り、第2の実施形態に係るプログラムは、ステップS210において、古典計算機100に、処理回路10の分割機能10eにより、ステップS200において決定された分割の仕方に基づいて、与えられた処理を、複数の小処理に分割するステップを実行させる。
【0081】
なお、実施形態は、ステップS200及びステップS210の処理を経るまでもなく、与えられた処理が、複数の小処理からなるものである場合であってもよく、かかる場合は、ステップS200及びステップS210の操作は必要に応じて省略される。
【0082】
続いて、第2の実施形態に係るプログラムは、ステップS220において、古典計算機100に、処理回路10の算出機能10aにより、複数の小処理それぞれについて、量子ビット又は要求量子体積の大きさを算出させる算出ステップを実行させる。
【0083】
続いて、第2の実施形態に係るプログラムは、ステップS230において、古典計算機100に、複数の小処理それぞれについて、算出された量子ビット又は要求量子体積と、利用可能な計算機リソースの能力、特性、空き具合等に応じて、計算を行う計算機を選択させる選択ステップを実行させる。例えば、第2の実施形態に係るプログラムは、古典計算機100に、計算能力の高い計算機、与えられた処理の性質と、計算機の特性がマッチする計算機、比較的空いている計算機を、計算を行う計算機として優先的に選択させる。
【0084】
続いて、第2の実施形態に係るプログラムは、ステップS240において、古典計算機100に、処理回路10の選択機能10bにより、更に、複数の小処理それぞれについて、算出された量子ビット又は要求量子体積と、利用可能な計算機リソースの能力、特性、空き具合等に応じて、計算機を実行する実行タイミングまたは実行順序を選択させる。一例として、第2の実施形態に係るプログラムは、計算機の処理負荷が特定の計算機に集中しないように、計算機を実行する実行タイミングまたは実行順序を選択させる。
【0085】
続いて、第2の実施形態に係るプログラムは、ステップS250において、古典計算機100に、処理回路10の制御機能10cにより、量子計算機が量子アルゴリズムの開始時に生成する量子状態を生成するのに必要な情報を制御信号として生成させる制御ステップを実行させる。
【0086】
処理回路10は、送信部としての制御機能10cにより、生成された制御信号を、ステップS230で選択した計算機に送信させる。
【0087】
続いて、ステップS260において、量子計算機が量子計算を実行する。
【0088】
以上のように、第2の実施形態に係るプログラムによれば、古典計算機と量子計算機とが、または複数の量子計算機が混在する場合において、与えられた処理が複数の処理からなる場合において、適切に処理が分割され、分割された処理ごとに処理を行う計算機が適切に選択されることで、処理の最適化を行うことができる。
【0089】
このように、本発明の実施形態によれば、古典計算機と量子計算機とが、または複数の量子計算機が混在する場合において、処理を最適化することができる。
【0090】
なお、本発明の実施形態は、例として提示されたものにすぎず、種々の置き換え、変更等を行うことができる。
【符号の説明】
【0091】
10 処理回路
10a 算出機能
10b 選択機能
10c 制御機能
10d 分割決定機能
10e 分割機能
10f 表示制御機能
10g 生成機能
20 記憶部
30 ディスプレイ
40 入力装置
200a 古典計算機
300a 量子計算機
400 ユーザ端末