(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024152097
(43)【公開日】2024-10-25
(54)【発明の名称】量子回路軽量化プログラム、情報処理装置及び量子回路軽量化方法
(51)【国際特許分類】
G06N 10/40 20220101AFI20241018BHJP
【FI】
G06N10/40
【審査請求】未請求
【請求項の数】5
【出願形態】OL
(21)【出願番号】P 2023066045
(22)【出願日】2023-04-14
(71)【出願人】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】110002918
【氏名又は名称】弁理士法人扶桑国際特許事務所
(72)【発明者】
【氏名】今村 智史
(57)【要約】
【課題】ノイズに起因するエラーによるVQEの誤差を低減する。
【解決手段】処理部12は、複数のRzゲートと複数のRzゲートのそれぞれに付随する複数のCNOTゲートとを含み、VQEに使用される第1量子回路13aを表す、第1量子回路情報と、角度パラメータごとのRzゲート数を取得し、第1量子回路情報と、Rzゲート数に基づいて、第1量子回路13aに含まれる複数のRzゲートから削除対象のRzゲートを特定し、特定したRzゲートと、特定したRzゲートに付随するCNOTゲートとを第1量子回路13aから削除した第2量子回路13bを表す第2量子回路情報を生成し、第2量子回路情報を出力する。
【選択図】
図1
【特許請求の範囲】
【請求項1】
複数のRzゲートと前記複数のRzゲートのそれぞれに付随する複数のCNOTゲートとを含み、VQEに使用される第1量子回路を表す、第1量子回路情報と、角度パラメータごとのRzゲート数を取得し、
前記第1量子回路情報と、前記Rzゲート数に基づいて、前記第1量子回路に含まれる前記複数のRzゲートから削除対象のRzゲートを特定し、
特定したRzゲートと、前記特定したRzゲートに付随するCNOTゲートとを前記第1量子回路から削除した第2量子回路を表す第2量子回路情報を生成し、
前記第2量子回路情報を出力する、
処理をコンピュータに実行させる量子回路軽量化プログラム。
【請求項2】
量子デバイスの物理量子ビットの接続状態を表す物理量子ビット接続情報をさらに取得し、
前記物理量子ビット接続情報に基づいて、前記第1量子回路を前記接続状態に対応する第3量子回路に変換した場合に前記複数のCNOTゲートから得られるスワップゲートの数を、前記複数のRzゲートのそれぞれに対して算出し、
算出した前記スワップゲートの数が多いRzゲートを優先的に、前記削除対象のRzゲートとして特定する、
請求項1に記載の量子回路軽量化プログラム。
【請求項3】
前記第1量子回路において、前記角度パラメータが同一のRzゲートに対しては、量子ビットに対して先に作用するRzゲートほど優先的に、前記削除対象のRzゲートとして特定する、請求項1に記載の量子回路軽量化プログラム。
【請求項4】
複数のRzゲートと前記複数のRzゲートのそれぞれに付随する複数のCNOTゲートとを含み、VQEに使用される第1量子回路を表す、第1量子回路情報を記憶する記憶部と、
前記第1量子回路情報と、角度パラメータごとのRzゲート数を取得し、前記第1量子回路情報と、前記Rzゲート数に基づいて、前記第1量子回路に含まれる前記複数のRzゲートから削除対象のRzゲートを特定し、特定したRzゲートと、前記特定したRzゲートに付随するCNOTゲートとを前記第1量子回路から削除した第2量子回路を表す第2量子回路情報を生成し、前記第2量子回路情報を出力する処理部と、
を有する情報処理装置。
【請求項5】
複数のRzゲートと前記複数のRzゲートのそれぞれに付随する複数のCNOTゲートとを含み、VQEに使用される第1量子回路を表す、第1量子回路情報と、角度パラメータごとのRzゲート数を取得し、
前記第1量子回路情報と、前記Rzゲート数に基づいて、前記第1量子回路に含まれる前記複数のRzゲートから削除対象のRzゲートを特定し、
特定したRzゲートと、前記特定したRzゲートに付随するCNOTゲートとを前記第1量子回路から削除した第2量子回路を表す第2量子回路情報を生成し、
前記第2量子回路情報を出力する、
処理をコンピュータが実行する量子回路軽量化方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、量子回路軽量化プログラム、情報処理装置及び量子回路軽量化方法に関する。
【背景技術】
【0002】
量子化学計算は、分子の構造や性質を電子状態から解析するために、解析対象の分子のエネルギーを算出する手法である。量子化学計算アルゴリズムの1つとして、VQE(Variational Quantum Eigensolver)がある。VQEは、エラー訂正のない中規模の量子デバイス(NISQ(Noisy Intermediate-Scale Quantum)と呼ばれることもある)において実行可能な、変分アルゴリズムの候補の1つでもある。
【0003】
VQEでは、回転ゲートの回転角をパラメータとしてもつ量子回路を用いて、分子の電子状態を表す試行波動関数が表現される。このような量子回路または試行波動関数は、ansatzとも呼ばれることもある。そして、このような量子回路を用いて分子のエネルギーの算出が行われる。このエネルギーが最小になるように古典処理によるパラメータの最適化、量子回路によるエネルギーの算出処理が繰り返される。VQEの精度と計算量は、ansatzの種類に大きく依存する。高精度な計算が可能なansatzとして、UCCSD(Unitary Coupled Cluster Singles and Doubles) ansatzがある。
【0004】
従来、パウリ項のマージ、量子リソースの再埋め込み、またはマージソートを行うことで、量子リソースの削減を行う量子回路最適化技術が提案されている(たとえば、特許文献1参照)。
【先行技術文献】
【特許文献】
【0005】
【発明の概要】
【発明が解決しようとする課題】
【0006】
ところで、NISQではノイズに起因するエラーによってVQEの誤差が増大する場合がある。量子ゲートのうちCNOTゲートのエラー率は特に大きいため、ノイズによる誤差の増大幅は、量子回路にCNOTゲートが多いほど大きい。
【0007】
1つの側面では、本発明は、ノイズに起因するエラーによるVQEの誤差を低減することを目的とする。
【課題を解決するための手段】
【0008】
1つの実施態様では、複数のRzゲートと前記複数のRzゲートのそれぞれに付随する複数のCNOTゲートとを含み、VQEに使用される第1量子回路を表す、第1量子回路情報と、角度パラメータごとのRzゲート数を取得し、前記第1量子回路情報と、前記Rzゲート数に基づいて、前記第1量子回路に含まれる前記複数のRzゲートから削除対象のRzゲートを特定し、特定したRzゲートと、前記特定したRzゲートに付随するCNOTゲートとを前記第1量子回路から削除した第2量子回路を表す第2量子回路情報を生成し、前記第2量子回路情報を出力する、処理をコンピュータに実行させる量子回路軽量化プログラムが提供される。
【0009】
また、1つの実施態様では、情報処理装置が提供される。
また、1つの実施態様では、量子回路軽量化方法が提供される。
【発明の効果】
【0010】
1つの側面では、ノイズに起因するエラーによるVQEの誤差が低減できる。
【図面の簡単な説明】
【0011】
【
図1】第1の実施の形態の情報処理装置を説明するための図である。
【
図3】ノイズなしシミュレーションとノイズありシミュレーションについての、CNOTゲート数と誤差との関係を示す図である。
【
図5】第2の実施の形態の情報処理装置のハードウェア例を示すブロック図である。
【
図6】情報処理装置の機能例を示すブロック図である。
【
図7】物理量子ビットの接続例とトランスパイル前後の量子回路の例を示す図である。
【
図8】量子回路軽量化方法の処理手順の一例を示すフローチャートである。
【
図9】Rz/CNOTグループの特定手順の一例を示すフローチャートである。
【
図10】削除対象のRzゲートの特定手順の一例を示すフローチャートである。
【
図11】CNOTゲートの削除リストへの追加手順の一例を示すフローチャートである。
【
図12】rz_per_paramと誤差とCNOTゲート数との相関の一例を示す図である。
【
図13】第2の実施の形態の量子回路軽量化方法による効果の一例を示す図である。
【発明を実施するための形態】
【0012】
以下、発明を実施するための形態を、図面を参照しつつ説明する。
(第1の実施の形態)
図1は、第1の実施の形態の情報処理装置を説明するための図である。
【0013】
また、
図2は、第1量子回路の一例を示す図である。
第1の実施の形態の情報処理装置10は、後述の処理により量子回路の軽量化を行うことで、ノイズに起因するエラーによるVQEの誤差を低減する。情報処理装置10は、クライアント装置でもよいしサーバ装置でもよい。情報処理装置10は、コンピュータと呼ばれてもよい。
【0014】
情報処理装置10は、記憶部11および処理部12を有する。記憶部11は、RAM(Random Access Memory)などの揮発性半導体メモリでもよいし、HDD(Hard Disk Drive)やフラッシュメモリなどの不揮発性ストレージでもよい。処理部12は、たとえば、CPU(Central Processing Unit)、GPU(Graphics Processing Unit)、DSP(Digital Signal Processor)などのプロセッサである。ただし、処理部12が、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)などの電子回路を含んでもよい。プロセッサは、たとえば、RAMなどのメモリ(記憶部11でもよい)に記憶されたプログラムを実行する。プロセッサの集合が、マルチプロセッサまたは単に「プロセッサ」と呼ばれてもよい。
【0015】
記憶部11は、VQEに使用される第1量子回路13aを表す第1量子回路情報を記憶する。記憶部11は、第2量子回路を表す第2量子回路情報を記憶してもよい。第2量子回路は、第1量子回路13aを後述の処理で軽量化したものである。記憶部11は、後述の角度パラメータごとのRzゲート数を記憶してもよい。
【0016】
図1には、第1量子回路13aの一部が示されている。第1量子回路13aの全体は、
図2に表されている。
図1、
図2に示されている第1量子回路13aの例は、4つの量子ビットq
0~q
3で表される水素(H
2)分子のUCCSD ansatzである。
図2では、量子ビットq
0~q
3に対する各種量子ゲートによる量子操作が、左上から右下まで四段に渡って示されている。各段の右端は、次段の左端と繋がっている。
【0017】
第1量子回路13aにおいて、“U3”は、ブロッホ球のある量子状態に対して、θ、φ、λの3つの角度パラメータに基づく回転操作を行うU3ゲートである。“S”は、ブロッホ球のある量子状態に対して、φ=π/2の回転操作を行うSゲートである。上付きのダガーが付された“S”は、ブロッホ球のある量子状態に対して、φ=-π/2の回転操作を行うSダガーゲートである。“H”は、ブロッホ球のある量子状態に対して、Z軸とX軸の間の45°の傾きの軸を回転中心として180°の回転操作を行うアダマールゲートである。“Rz”は、ブロッホ球のある量子状態に対して、Z軸の周りにθの回転操作を行うRzゲートである。“+”は、制御量子ビットが|1>であれば対象量子ビットの値を反転させるCNOTゲートである。CNOTゲートは、2量子ビット間の量子もつれを生成するものである。
【0018】
図1、
図2では、Rzゲートの角度パラメータが、パラメータP0,P1,P2で表されている。
図2の例では、パラメータP0を用いて回転操作を行うRzゲートは2つ、パラメータP1を用いて回転操作を行うRzゲートも2つ、パラメータP2を用いて回転操作を行うRzゲートは8つである。
【0019】
図1、
図2に示されているように、RzゲートにはCNOTゲート群が付随している。パラメータP0の2つのRzゲートには、それぞれ2つのCNOTゲートが付随し、パラメータP1の2つのRzゲートにも、それぞれ2つのCNOTゲートが付随している。パラメータP2の8つのRzゲートには、それぞれ6つのCNOTゲートが付随している。
【0020】
処理部12は、第1量子回路13aを表す、第1量子回路情報と、角度パラメータごとのRzゲート数を取得する。処理部12は、第1量子回路情報と角度パラメータごとのRzゲート数を、たとえば、記憶部11から取得する。処理部12は、情報処理装置10の外部から入力される、第1量子回路情報または角度パラメータごとのRzゲート数を取得してもよい。
【0021】
角度パラメータごとのRzゲート数は、ユーザによって指定される入力値である。
図1において角度パラメータごとのRzゲート数は、“rz_per_param”と表記されている。
【0022】
ノイズがない理想的なシミュレーション計算では、角度パラメータごとのRzゲートの数が多いほど角度パラメータの微調整が可能となるため、誤差は小さい。しかし、ノイズがある実際の量子デバイスでは、Rzゲートの数が多い場合、ノイズにより誤差が増大する傾向がある。Rzゲートの数が多い場合、Rzゲートに付随するCNOTゲートの数も多くなるためである。前述のようにCNOTゲートのエラー率は特に大きいため、ノイズによる誤差の増大幅は、量子回路にCNOTゲートが多いほど大きい。
【0023】
図3は、ノイズなしシミュレーションとノイズありシミュレーションについての、CNOTゲート数と誤差との関係を示す図である。ノイズありシミュレーションは、物理量子ビット間の接続が限定された量子デバイスに基づくノイズモデルを使用している。このような量子デバイス用の量子回路は、トランスパイル(後述の
図7参照)が行われることで、トランスパイル前の量子回路(たとえば、第1量子回路13a)よりCNOTゲート数が増える場合がある。このため、ノイズなしモデルよりもノイズありモデルのCNOTゲート数が多くなっている。
【0024】
図3の例では、LiH(水素化リチウム)のansatzが用いられている。用いた基底系はSTO-3Gである。dist=1.0は、リチウム原子と水素原子の原子間距離が1.0Åであることを示している。なお、誤差は、Full Configuration Interaction手法により得られたLiHの基底エネルギーと、VQEにより得られたLiHの基底エネルギーとの差である。
【0025】
図3の例では、UCCSD、PUCCD(Parallel Unitary Coupled Cluster Doubles)、SUCCD(Symmetric Unitary Coupled Cluster Doubles)、CHC(Compact Heuristic for Chemistry)の4種類のansatzが用いられている。
【0026】
量子化学計算では、誤差を化学的精度内に収めることが好ましい。誤差を化学的精度内に収めることは、誤差を1.6mHartreeより小さくすることに相当する。ノイズがないシミュレーションでは、CNOTゲート数が他のansatzよりも多いUCCSD ansatzを用いた場合、誤差は化学的精度に収まっている。しかし、ノイズありシミュレーションでは、CNOTゲート数が多いansatzほどノイズによる誤差の増大幅が大きい。
図3の例では、ノイズなしシミュレーションでは最も精度が高いUCCSD ansatzが、他のansatzよりも最も誤差が大きくなっている。
【0027】
このような誤差の増大をもたらすCNOTゲートは、前述のようにRzゲートの数が多くなるほど増える。
そこで、
図1に示した情報処理装置10において、処理部12は、以下のようにRzゲートの数を減らすことで、Rzゲートに付随するCNOTゲートの数を減らし、ノイズに起因するエラーによるVQEの誤差を低減する。
【0028】
処理部12は、取得した第1量子回路情報と、rz_per_paramに基づいて、第1量子回路13aから削除対象のRzゲートを特定する。たとえば、パラメータP0~P2のすべてについて、rz_per_param=1である場合、処理部12は、パラメータP0~P2のそれぞれに対して、1つ以外のRzゲートを削除対象のRzゲートとして特定する。
【0029】
そして、処理部12は、特定したRzゲートと、特定したRZゲートに付随するCNOTゲートとを第1量子回路13aから削除した第2量子回路13bを表す第2量子回路情報を生成する。
【0030】
図4は、第2量子回路の一例を示す図である。なお、
図1にも第2量子回路13bの一部が示されている。
図1、
図4の例では、
図2に示した第1量子回路13aのパラメータP0~P2のそれぞれに対して、1つ以外のRzゲートが削除対象として特定された場合の、RzゲートとCNOTゲートの削除例が示されている。
【0031】
ある角度パラメータのRzゲートが複数ある場合、処理部12は、たとえば、第1量子回路13aにおいて、量子ビットq0~q3に対してより先に作用するRzゲートほど優先的に削除対象とする。より後に作用するRzゲートほど計算結果に対しての重要度が高いと考えられるためである。ただし、処理部12は、別のルールにしたがって、優先的に削除対象とするRzゲートを特定してもよい。
【0032】
図1、
図4に示すように、上記の方法で軽量化された第2量子回路13bは、パラメータP0~P2のそれぞれに対して、1つのRzゲートをもつ。CNOTゲートの数は、第1量子回路13aでは56個であるのに対して、第2量子回路13bでは10個である。
【0033】
その後、処理部12は、第2量子回路13bを表す第2量子回路情報を出力する。処理部12は、第2量子回路情報を不揮発性ストレージに保存してもよいし、表示装置に表示してもよいし、他の情報処理装置に送信してもよい。
【0034】
以上のように、情報処理装置10の処理部12は、複数のRzゲートと複数のRzゲートのそれぞれに付随する複数のCNOTゲートとを含み、VQEに使用される第1量子回路13aを表す、第1量子回路情報を取得する。また、処理部12は、角度パラメータごとのRzゲート数を取得する。さらに処理部12は、第1量子回路情報と、上記Rzゲート数に基づいて、第1量子回路13aから削除対象のRzゲートを特定する。そして処理部12は、特定したRzゲートと、特定したRzゲートに付随するCNOTゲートとを第1量子回路13aから削除した第2量子回路13bを表す第2量子回路情報を生成し、第2量子回路情報を出力する。
【0035】
このような処理によりCNOTゲートの数を減らした第2量子回路が得られるため、第2量子回路をNISQなどの実際の量子デバイスに実装してVQEを実行したときに、ノイズに起因するエラーによる誤差が低減できる。これにより、精度のよい量子化学計算が可能になり、創薬や新材料開発などに貢献できる。
【0036】
(第2の実施の形態)
次に、第2の実施の形態を説明する。
図5は、第2の実施の形態の情報処理装置のハードウェア例を示すブロック図である。
【0037】
情報処理装置20は、クライアント装置でもよいしサーバ装置でもよい。情報処理装置20は、コンピュータと呼ばれてもよい。
情報処理装置20は、バスに接続されたCPU21、RAM22、HDD23、GPU24、入力インタフェース25、媒体リーダ26及び通信インタフェース27を有する。CPU21は、第1の実施の形態の処理部12に対応する。RAM22またはHDD23は、第1の実施の形態の記憶部11に対応する。
【0038】
CPU21は、プログラムの命令を実行するプロセッサである。CPU21は、HDD23に記憶されたプログラム及びデータをRAM22にロードし、プログラムを実行する。情報処理装置20は、複数のプロセッサを有してもよい。
【0039】
RAM22は、CPU21で実行されるプログラム及びCPU21で演算に使用されるデータを一時的に記憶する揮発性半導体メモリである。情報処理装置20は、RAM以外の種類の揮発性メモリを有してもよい。
【0040】
HDD23は、オペレーティングシステム(OS:Operating System)やミドルウェアやアプリケーションソフトウェアなどのソフトウェアのプログラムと、データとを記憶する不揮発性ストレージである。情報処理装置20は、フラッシュメモリやSSD(Solid State Drive)などの他の種類の不揮発性ストレージを有してもよい。
【0041】
GPU24は、CPU21と連携して画像処理を行い、情報処理装置20に接続された表示装置24aに画像を出力する。表示装置24aは、たとえば、CRT(Cathode Ray Tube)ディスプレイ、液晶ディスプレイ、有機EL(Electro Luminescence)ディスプレイまたはプロジェクタである。情報処理装置20に、プリンタなどの他の種類の出力デバイスが接続されてもよい。
【0042】
また、GPU24は、GPGPU(General Purpose Computing on Graphics Processing Unit)として使用されてもよい。GPU24は、CPU21からの指示に応じてプログラムを実行し得る。情報処理装置20は、RAM22以外の揮発性半導体メモリをGPUメモリとして有してもよい。
【0043】
入力インタフェース25は、情報処理装置20に接続された入力デバイス25aから入力信号を受け付ける。入力デバイス25aは、たとえば、マウス、タッチパネルまたはキーボードである。情報処理装置20に複数の入力デバイスが接続されてもよい。
【0044】
媒体リーダ26は、記録媒体26aに記録されたプログラム及びデータを読み取る読み取り装置である。記録媒体26aは、たとえば、磁気ディスク、光ディスクまたは半導体メモリである。磁気ディスクには、フレキシブルディスク(FD:Flexible Disk)及びHDDが含まれる。光ディスクには、CD(Compact Disc)及びDVD(Digital Versatile Disc)が含まれる。媒体リーダ26は、記録媒体26aから読み取られたプログラム及びデータを、RAM22やHDD23などの他の記録媒体にコピーする。読み取られたプログラムは、CPU21によって実行されることがある。
【0045】
記録媒体26aは、可搬型記録媒体であってもよい。記録媒体26aは、プログラム及びデータの配布に用いられることがある。また、記録媒体26a及びHDD23が、コンピュータ読み取り可能な記録媒体と呼ばれてもよい。
【0046】
通信インタフェース27は、ネットワーク27aを介して他の情報処理装置と通信する。通信インタフェース27は、スイッチやルータなどの有線通信装置に接続される有線通信インタフェースでもよいし、基地局やアクセスポイントなどの無線通信装置に接続される無線通信インタフェースでもよい。
【0047】
次に、情報処理装置20の機能について説明する。
図6は、情報処理装置の機能例を示すブロック図である。
情報処理装置20は、入力部31、第1量子回路情報記憶部32、削除対象Rz/CNOTゲート特定部33、グループリスト記憶部34、スワップ数リスト記憶部35、Rz保持リスト記憶部36、Rz削除リスト記憶部37、削除リスト記憶部38を有する。さらに、情報処理装置20は、Rz/CNOTゲート削除部39、第2量子回路情報記憶部40、出力部41を有する。
【0048】
上記各記憶部は、たとえば、RAM22またはHDD23を用いて実装される。入力部31、削除対象Rz/CNOTゲート特定部33、Rz/CNOTゲート削除部39、出力部41は、たとえば、CPU21及びプログラムを用いて実装される。
【0049】
入力部31には、軽量化対象の第1量子回路を表す第1量子回路情報と、前述のrz_per_paramなどの入力データが入力される。第1量子回路は、
図1、
図2に示したように、複数のRzゲートと複数のRzゲートのそれぞれに付随する複数のCNOTゲートとを含み、VQEに使用されるものである。入力部31はさらに、後述する物理量子ビット接続情報が入力データとして入力されてもよい。第1量子回路情報、rz_per_paramまたは物理量子ビット接続情報は、たとえば、記録媒体26aまたはネットワーク27aを介して入力される。rz_per_paramや物理量子ビット接続情報は、ユーザの入力デバイス25aによる操作により入力されてもよい。なお、情報処理装置10が第1量子回路情報を生成してもよい。
【0050】
第1量子回路情報記憶部32は、第1量子回路情報を記憶する。
削除対象Rz/CNOTゲート特定部33は、第1量子回路から削除する削除対象のRzゲートとCNOTゲートを特定する。
【0051】
グループリスト記憶部34は、第1量子回路に含まれる各Rzゲートとそれに付随するCNOTゲート群によるグループのリスト(以下、グループリストという)を記憶する。グループリストは、たとえば、{Rz-ID:[CNOT-ID,…],…}のように表せる。Rz-IDは、RzゲートのIDであり、CNOT-IDは、そのRzゲートに付随する複数のCNOTゲートのIDである。これらのIDは、第1量子回路情報から得られる。
【0052】
スワップ数リスト記憶部35は、物理量子ビット接続情報と、第1量子回路情報から得られる各Rzゲートに付随するスワップゲートの数のリスト(以下、スワップ数リストという)を記憶する。スワップ数リストは、たとえば、{Rz-ID:スワップゲート数,…}のように表せる。スワップゲートについては後述する。
【0053】
Rz保持リスト記憶部36は、角度パラメータごとに決定したRzゲートの保持数のリスト(以下、Rz保持リストという)を記憶する。Rz保持リストは、{パラメータID:カウンタ値,…}のように表せる。パラメータIDは、角度パラメータのIDである。カウンタ値は、Rzゲートの保持数をカウントするカウンタの値である。
【0054】
Rz削除リスト記憶部37は、削除対象のRzゲートのリスト(以下、Rz削除リストという)を記憶する。Rz削除リストは、削除対象としたRzゲートのIDにより表せる。
【0055】
削除リスト記憶部38は、削除対象のRzゲートとCNOTゲートのリスト(以下、削除リストという)を記憶する。削除リストは、削除対象としたRzゲートとCNOTゲートのIDにより表せる。
【0056】
Rz/CNOTゲート削除部39は、削除リストにしたがって、RzゲートとCNOTゲートを第1量子回路から削除した第2量子回路を表す第2量子回路情報を生成する。
第2量子回路情報記憶部40は、生成された第2量子回路情報を記憶する。
【0057】
出力部41は、第2量子回路情報を出力する。出力部41は、たとえば、第2量子回路情報を、表示装置24aに出力して表示させてもよい。出力部41は、第2量子回路情報を、ネットワーク27aを介して、他の情報処理装置に送信してもよい。
【0058】
図7は、物理量子ビットの接続例とトランスパイル前後の量子回路の例を示す図である。
図7の例では、4量子ビットの量子デバイス(4量子ビットデバイス)の物理量子ビットの接続例が示されている。量子ビットq
0は量子ビットq
1と接続され、量子ビットq
1はさらに量子ビットq
2に接続されている。量子ビットq
2は、さらに量子ビットq
3に接続されている。つまり、最近接の量子ビット間で、直接的な結合が働き、量子的な接続が行われている。
【0059】
また、
図7には、RzゲートとCNOTゲートを含む、トランスパイル前の4量子ビットの量子回路50の例が示されている。左側のRzゲートに付随する2つのCNOTゲートは、量子ビットq
0,q
1間の量子もつれを生成するものである。上記のような接続例の量子デバイスは、量子ビットq
0,q
1が量子的に接続されているので、量子ビットq
0,q
1間の量子もつれを生成するCNOTゲートを実装できる。
【0060】
しかし、量子回路50において、右側のRzゲートに付随する2つのCNOTゲートは、量子ビットq0,q3間の量子もつれを生成するものである。上記のような接続例の量子デバイスは、量子ビットq0,q3が量子的に接続されていないので、このままでは、量子ビットq0,q3間の量子もつれを生成するCNOTゲートを実装できない。そこで、量子回路50は、上記のような物理量子ビットの接続状態に対応する量子回路に変換(トランスパイルと呼ばれる)される。
【0061】
変換後の、量子回路51において、右側のRzゲートには、量子ビットq0,q1間の量子もつれを生成する2つのCNOTゲートが付随している。さらに、右側のRzゲートには、量子ビットq2,q3間の量子状態を入れ替えるスワップゲート51a,51bと、量子ビットq1,q2間の量子状態を入れ替えるスワップゲート51c,51dが付随している。スワップゲート51a~51dのそれぞれは、3つのCNOTゲートによって構成される。
【0062】
図7に示すような量子回路50において、左側のRzゲートを削除する場合、そのRzゲートに付随する2つのCNOTゲートを削除できる。一方、右側のRzゲートを削除する場合、量子回路50では、そのRzゲートに付随する2つのCNOTゲートを削除できる。しかし、変換後の量子回路51で考えた場合、右側のRzゲートを削除した場合、2+3×4=14個のCNOTゲートを削除できることになる。
【0063】
このため、情報処理装置20は、上記のような量子デバイスの物理量子ビットの接続状態を表す物理量子ビット接続情報に基づいて、トランスパイル後に付随するスワップゲート数が多くなるRzゲートを優先的に、削除対象として特定してもよい。
【0064】
次に、情報処理装置20による量子回路軽量化方法の処理手順を説明する。
図8は、量子回路軽量化方法の処理手順の一例を示すフローチャートである。
(ステップS10)量子回路の軽量化処理が開始すると、情報処理装置20の削除対象Rz/CNOTゲート特定部33は、入力データ(第1量子回路情報、rz_per_param)を取得する。物理量子ビット接続情報が入力された場合には、削除対象Rz/CNOTゲート特定部33は、その物理量子ビット接続情報も入力データとして取得する。
【0065】
(ステップS11)削除対象Rz/CNOTゲート特定部33は、削除リスト記憶部38に記憶されている削除リストを空に初期化する。
(ステップS12)削除対象Rz/CNOTゲート特定部33は、Rzゲートとそれに付随するCNOTゲート群によるグループを特定し、グループリストに記録する。物理量子ビット接続情報がある場合、削除対象Rz/CNOTゲート特定部33は、各グループのスワップゲート数を、スワップ数リストに記録する。ステップS12の処理の具体例については後述する。
【0066】
(ステップS13)削除対象Rz/CNOTゲート特定部33は、削除対象のRzゲートを特定し、削除リストに追加する。ステップS13の処理の具体例については後述する。
【0067】
(ステップS14)削除対象Rz/CNOTゲート特定部33は、削除対象のRzゲートと同グループのCNOTゲートを、削除リストに追加する。ステップS14の処理の具体例については後述する。
【0068】
(ステップS15)Rz/CNOTゲート削除部39は、削除リスト内のRzゲートとCNOTゲートを、第1量子回路から削除する。
(ステップS16)出力部41は、第1量子回路からRzゲートとCNOTゲートを削除することで得られた第2量子回路を表す第2量子回路情報を出力する。これにより、情報処理装置20の処理が終了する。
【0069】
図9は、Rz/CNOTグループの特定手順の一例を示すフローチャートである。
図9には、
図8に示したステップS12の処理手順の一例が示されている。
(ステップS20)削除対象Rz/CNOTゲート特定部33は、グループリストとスワップ数リストを空に初期化する。
【0070】
(ステップS21)削除対象Rz/CNOTゲート特定部33は、Rz-IDリストとCNOT-IDリストを取得する。Rz-IDリストは、第1量子回路に含まれるRzゲートのID(Rz-ID)のリストである。CNOT-IDリストは、第1量子回路に含まれるCNOTゲートのID(CNOT-ID)のリストである。Rz-IDリストとCNOT-IDリストは、第1量子回路情報に含まれる。
【0071】
(ステップS22)削除対象Rz/CNOTゲート特定部33は、Rz-IDリストが空であるか否かを判定する。削除対象Rz/CNOTゲート特定部33は、Rz-IDリストが空ではないと判定した場合、ステップS23の処理を行い、Rz-IDリストが空であると判定した場合、ステップS27の処理を行う。
【0072】
(ステップS23)削除対象Rz/CNOTゲート特定部33は、Rz-IDリストの先頭のID(Rz-ID)を取り出す。
(ステップS24)削除対象Rz/CNOTゲート特定部33は、第1量子回路情報に基づいて、取り出したRz-IDのRzゲートに隣接する、CNOTゲートまたはCNOTゲート群のID(CNOT-ID)を、CNOT-IDリストから取り出す。そして、削除対象Rz/CNOTゲート特定部33は、取り出したRz-IDと、CNOT-IDを、1つのグループに属するID群としてグループリストに追加する。
【0073】
(ステップS25)削除対象Rz/CNOTゲート特定部33は、物理量子ビット接続情報があるか否かを判定する。削除対象Rz/CNOTゲート特定部33は、物理量子ビット接続情報があると判定した場合、ステップS26の処理を行い、物理量子ビット接続情報がないと判定した場合、ステップS22の処理に戻る。
【0074】
(ステップS26)削除対象Rz/CNOTゲート特定部33は、ステップS23の処理で取り出されたRz-IDとスワップゲート数をスワップリストに記録する。スワップゲート数は、物理量子ビット接続情報と、ステップS24の処理でグループリストに追加されたCNOTゲートまたはCNOTゲート群に基づいて算出される。
【0075】
たとえば、
図7に示したような量子ビットq
0~q
3の接続状態を表す物理量子ビット接続情報が入力されたとする。軽量化前の第1量子回路が、
図7に示すような量子回路50であった場合、右側のRzゲートに付随するCNOTゲートは、量子ビットq
0,q
3間の量子もつれを生成するものである。隣接する量子ビット間の距離を1とすると、量子ビットq
0,q
3間の距離は3である。この距離から1を引いた値が、そのCNOTゲートに関してトランスパイル後に生成されるスワップゲートの数である。
【0076】
ステップS26の処理後、再びステップS22の処理が行われる。
(ステップS27)削除対象Rz/CNOTゲート特定部33は、物理量子ビット接続情報があるか否かを判定する。削除対象Rz/CNOTゲート特定部33は、物理量子ビット接続情報があると判定した場合、ステップS28の処理を行い、物理量子ビット接続情報がないと判定した場合、ステップS30の処理を行う。
【0077】
(ステップS28)削除対象Rz/CNOTゲート特定部33は、スワップ数リストをスワップゲート数で昇順ソートする。このため、トランスパイル後に付随するスワップゲートの数が少ないRzゲートのRz-IDほど、スワップ数リストの先頭に近くなる。
【0078】
(ステップS29)削除対象Rz/CNOTゲート特定部33は、ソート後のスワップ数リストのRz-IDをRz-IDリストとしてコピーする。
(ステップS30)削除対象Rz/CNOTゲート特定部33は、グループリストをRz-IDで降順ソートする。なお、第1量子回路において量子ビットにより先に作用するRzゲートほど、小さいRz-IDが割り当てられている。このため、量子ビットに、より後に作用するRzゲートのRz-IDほど、グループリストの先頭に近くなる。
【0079】
(ステップS31)削除対象Rz/CNOTゲート特定部33は、ソート後のグループリストのRz-IDをRz-IDリストとしてコピーする。
ステップS29またはステップS31の処理後、Rz/CNOTグループの特定処理(
図8のステップS12の処理)が終了する。
【0080】
以上の処理により、トランスパイル後に付随するスワップゲートの数が少ないRzゲートのRz-IDほど、Rzリストの先頭に近くなる。または、量子ビットに、より後に作用するRzゲートのRz-IDほど、Rzリストの先頭に近くなる。
【0081】
図10は、削除対象のRzゲートの特定手順の一例を示すフローチャートである。
図10には、
図8に示したステップS13の処理手順の一例が示されている。
(ステップS40)削除対象Rz/CNOTゲート特定部33は、Rz保持リストを空に初期化する。
【0082】
(ステップS41)削除対象Rz/CNOTゲート特定部33は、前述のステップS29またはステップS31の処理で得られたRz-IDリストが空であるか否かを判定する。削除対象Rz/CNOTゲート特定部33は、Rz-IDリストが空ではないと判定した場合、ステップS42の処理を行い、Rz-IDリストが空であると判定した場合、削除対象のRzゲートの特定処理を終える。
【0083】
(ステップS42)削除対象Rz/CNOTゲート特定部33は、Rzリストの先頭のID(Rz-ID)を取り出す。
(ステップS43)削除対象Rz/CNOTゲート特定部33は、先頭のIDのRzゲートが紐づく角度パラメータのID(パラメータID)を、第1量子回路情報から取得する。
図1に示したような第1量子回路13aが用いられる場合、まず、左側のRzゲートに紐づくパラメータP0のパラメータIDが取得される。
【0084】
(ステップS44)削除対象Rz/CNOTゲート特定部33は、取得したパラメータIDがRz保持リストにあるか否かを判定する。削除対象Rz/CNOTゲート特定部33は、取得したパラメータIDがRz保持リストにはないと判定した場合、ステップS45の処理を行う。削除対象Rz/CNOTゲート特定部33は、取得したパラメータIDがRz保持リストにあると判定した場合、ステップS47の処理を行う。
【0085】
(ステップS45)削除対象Rz/CNOTゲート特定部33は、取得したパラメータIDを、Rz保持リストに登録する。
(ステップS46)削除対象Rz/CNOTゲート特定部33は、取得したパラメータIDの角度パラメータに紐づけられたRzゲートの保持数をカウントする前述のカウンタの値を1に設定し、ステップS41の処理に戻る。
【0086】
(ステップS47)削除対象Rz/CNOTゲート特定部33は、取得したパラメータIDの角度パラメータに紐づけられたRzゲートのカウンタ値が、rz_per_paramよりも小さいか否かを判定する。削除対象Rz/CNOTゲート特定部33は、カウンタ値が、rz_per_paramよりも小さいと判定した場合、ステップS48の処理を行う。削除対象Rz/CNOTゲート特定部33は、カウンタ値が、rz_per_param以上であると判定した場合、ステップS49の処理を行う。
【0087】
(ステップS48)削除対象Rz/CNOTゲート特定部33は、カウンタ値を+1する。これにより、Rzゲートの保持数が+1増えたことになる。
(ステップS49)削除対象Rz/CNOTゲート特定部33は、削除リストにステップS42の処理で取り出されたRz-IDを追加する。
【0088】
ステップS48,S49の処理後、再びステップS41の処理が行われる。
以上の処理により削除リストには、全Rzゲート数から、rz_per_paramと第1量子回路13a内のパラメータ数の積を引いた数のRzゲートのRz-IDが追加される。
【0089】
ステップS42の処理にて、Rz-IDリストの先頭からRz-IDが取り出されていくため、削除リストに追加されるRz-IDは、Rz-IDリストの末尾にあるものほど削除リストに追加されやすい。前述のように、トランスパイル後に付随するスワップゲートの数が少ないRzゲートのRz-IDほど、Rzリストの先頭に近くなる。または、量子ビットに、より後に作用するRzゲートのRz-IDほど、Rzリストの先頭に近くなる。
【0090】
このため、トランスパイル後に付随するスワップゲートの数が多いRzゲートのRz-IDほど削除リストに追加されやすくなる。つまり、トランスパイル後に付随するスワップゲートの数が多いRzゲートほど優先的に削除対象となる。
【0091】
また、量子ビットに、より先に作用するRzゲートのRz-IDほど削除リストに追加されやすくなる。つまり、量子ビットに、より先に作用するRzゲートほど優先的に削除対象となる。
【0092】
図11は、CNOTゲートの削除リストへの追加手順の一例を示すフローチャートである。
図11には、
図8に示したステップS14の処理手順の一例が示されている。
(ステップS50)削除対象Rz/CNOTゲート特定部33は、削除リストをRz削除リストとしてコピーする。
【0093】
(ステップS51)削除対象Rz/CNOTゲート特定部33は、Rz削除リストが空であるか否かを判定する。削除対象Rz/CNOTゲート特定部33は、Rz削除リストが空ではないと判定した場合、ステップS52の処理を行い、Rz削除リストが空であると判定した場合、CNOTゲートの削除リストへの追加処理を終える。
【0094】
(ステップS52)削除対象Rz/CNOTゲート特定部33は、Rz削除リストの先頭のID(Rz-ID)を取り出す。
(ステップS53)削除対象Rz/CNOTゲート特定部33は、グループリストから、取り出したRz-IDに対応するCNOT-IDを取得し、削除リストに追加する。
【0095】
ステップS53の処理後、ステップS51からの処理が繰り返される。
なお、
図9~
図11に示した処理の順序は上記の例に限定されるわけではなく、適宜入れ替え可能である。
【0096】
以上のように、情報処理装置20の削除対象Rz/CNOTゲート特定部33は、複数のRzゲートと複数のRzゲートのそれぞれに付随する複数のCNOTゲートとを含み、VQEに使用される第1量子回路を表す第1量子回路情報を取得する。また、削除対象Rz/CNOTゲート特定部33は、角度パラメータごとのRzゲート数rz_per_paramを取得する。さらに削除対象Rz/CNOTゲート特定部33は、第1量子回路情報と、rz_per_paramに基づいて、たとえば、
図10に示したような処理により、第1量子回路から削除対象のRzゲートを特定する。そしてRz/CNOTゲート削除部39は、特定したRzゲートと、特定したRzゲートに付随するCNOTゲートとを第1量子回路から削除した第2量子回路を表す第2量子回路情報を生成し、出力部41は第2量子回路情報を出力する。
【0097】
このような処理によりCNOTゲートの数を減らした第2量子回路が得られるため、第2量子回路をNISQなどの実際の量子デバイスに実装してVQEを実行したときに、ノイズに起因するエラーによる誤差が低減できる。
【0098】
また、情報処理装置20の削除対象Rz/CNOTゲート特定部33は、量子デバイスの物理量子ビットの接続状態を表す物理量子ビット接続情報を取得する。削除対象Rz/CNOTゲート特定部33は、物理量子ビット接続情報に基づいて、トランスパイルを行った場合に複数のCNOTゲートから得られるスワップゲートの数を、複数のRzゲートのそれぞれに対して算出する。そして削除対象Rz/CNOTゲート特定部33は、算出したスワップゲートの数が多いRzゲートを優先的に、削除対象のRzゲートとして特定する。スワップゲートは3つのCNOTゲートで構成されるため、スワップゲートの数が多いRzゲートを削除対象とすることで、より多くのCNOTゲートを削除でき、ノイズに起因するエラーによる誤差をより低減できる。
【0099】
また、情報処理装置20の削除対象Rz/CNOTゲート特定部33は、第1量子回路において、量子ビットに対して先に作用するRzゲートほど優先的に、削除対象のRzゲートとして特定する。これにより、計算結果に対しての重要度が高いと考えられる、より後に作用するRzゲートを残せる。
【0100】
なお、rz_per_paramは、複数の角度パラメータに対して同じ値であってもよいし、異なる値であってもよい。rz_per_paramは、CNOTゲート数と誤差との相関に基づいて、ユーザが調整可能である。
【0101】
図12は、rz_per_paramと誤差とCNOTゲート数との相関の一例を示す図である。ノイズありシミュレーションとノイズなしシミュレーションについての、rz_per_paramと誤差とCNOTゲート数との相関の例が示されている。横軸はrz_per_paramを表し、縦軸は、CNOTゲート数と誤差を表している。
【0102】
図12の例では、水素原子が4つ鎖状に配列された分子(Hchain4)のUCCSDによるansatzが用いられている。用いた基底系はSTO-3Gである。dist=1.0は、各水素原子間の原子間距離が1.0Åであることを示している。なお、誤差は、Full Configuration Interaction手法により得られたHchain4の基底エネルギーと、VQEにより得られたHchain4の基底エネルギーとの差である。
【0103】
図12のように、ノイズなしシミュレーションの場合は、第1量子回路の軽量化の度合いが弱い(rz_per_paramが大きい)ほど誤差が小さい。これに対して、ノイズありシミュレーションの場合は、軽量化の度合いが強いほど誤差が小さい。これは、ノイズによるエラー率が高いCNOTゲートをより多く削除できるためである。
【0104】
なお、
図12に示されているように、ノイズなしシミュレーションの場合は、軽量化の度合いが最も強い場合(rz_per_param=1の場合)でも、誤差が化学的精度内に収まっている。
【0105】
情報処理装置20は、このような関係に基づいて、必要な精度が得られるようにrz_per_paramを調整可能である。
図13は、第2の実施の形態の量子回路軽量化方法による効果の一例を示す図である。
図13では、ノイズなしシミュレーションとノイズありシミュレーションについて、軽量化前の量子回路(第1量子回路)と、軽量化後の量子回路の誤差及びCNOTゲート数が比較されている。
図3と同様にLiHのansatzが用いられている。
【0106】
なお、軽量化後の量子回路は、前述の方法で得られた第2量子回路をトランスパイルしたものである。軽量化後の量子回路については、物理量子ビット接続情報がない場合と、物理量子ビット接続情報がある場合の2種類あげられている。また、
図13(A)は、UCCSDのansatzを用いた例、
図13(B)は、PUCCSD(Parallel Unitary Coupled Cluster Singles and Doubles)を用いた例である。
【0107】
図13(A)、(B)のように、軽量化前の量子回路(第1量子回路)に対して軽量化後の量子回路は、CNOTゲートが大幅に削減されている。これにより、ノイズによる誤差の増大が低減されている。なお、ノイズがない場合の軽量化による精度の悪化も抑えられている。
【0108】
なお、量子回路から冗長な量子ゲートの削除や複数量子ゲートのマージを行う量子回路最適化手法を、上記のような量子回路軽量化方法と組み合わせることもできる。その場合、軽量化後の量子回路(第2量子回路)に対して、量子回路最適化手法を適用すればよい。第2量子回路に対して量子回路最適化手法を適用すれば、第1量子回路に対して量子回路最適化手法を適用するよりも、削除される量子ゲート数が増え、トランスパイル後の回路がより一層軽量化することが期待できる。
【0109】
なお、前述のように、上記の処理内容は、情報処理装置20にプログラム(たとえば、量子回路軽量化プログラム)を実行させることで実現できる。
プログラムは、コンピュータ読み取り可能な記録媒体(たとえば、記録媒体26a)に記録しておくことができる。記録媒体として、たとえば、磁気ディスク、光ディスク、光磁気ディスク、半導体メモリなどを使用できる。磁気ディスクには、FD及びHDDが含まれる。光ディスクには、CD、CD-R(Recordable)/RW(Rewritable)、DVD及びDVD-R/RWが含まれる。プログラムは、可搬型の記録媒体に記録されて配布されることがある。その場合、可搬型の記録媒体から他の記録媒体(たとえば、HDD23)にプログラムをコピーして実行してもよい。
【0110】
以上、実施の形態に基づき、本発明の量子回路軽量化プログラム、情報処理装置及び量子回路軽量化方法の一観点について説明してきたが、これらは一例にすぎず、上記の記載に限定されるものではない。
【符号の説明】
【0111】
10 情報処理装置
11 記憶部
12 処理部
13a 第1量子回路
13b 第2量子回路