(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024074526
(43)【公開日】2024-05-31
(54)【発明の名称】復号装置、量子計算機、復号方法、及びプログラム
(51)【国際特許分類】
G06N 10/70 20220101AFI20240524BHJP
H03M 13/47 20060101ALI20240524BHJP
【FI】
G06N10/70
H03M13/47
【審査請求】未請求
【請求項の数】8
【出願形態】OL
(21)【出願番号】P 2022185745
(22)【出願日】2022-11-21
【新規性喪失の例外の表示】特許法第30条第2項適用申請有り 2022年4月1日に日本電信電話株式会社 ニュースリリースウェブサイトにて公開 2022年4月4日にHPCA 2022 (オンライン開催)にて公開 2022年5月17日にIEEE digital libraryウェブサイトにて公開
【国等の委託研究の成果に係る記載事項】(出願人による申告)平成30年度、国立研究開発法人科学技術振興機構、未来社会創造事業 研究課題名「低炭素AI処理基盤のための革新的超伝導コンピューティング」委託研究、産業技術力強化法第17条の適用を受ける特許出願
(71)【出願人】
【識別番号】000004226
【氏名又は名称】日本電信電話株式会社
(71)【出願人】
【識別番号】598121341
【氏名又は名称】慶應義塾
(71)【出願人】
【識別番号】504139662
【氏名又は名称】国立大学法人東海国立大学機構
(71)【出願人】
【識別番号】503359821
【氏名又は名称】国立研究開発法人理化学研究所
(74)【代理人】
【識別番号】100107766
【弁理士】
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【弁理士】
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100124844
【弁理士】
【氏名又は名称】石原 隆治
(72)【発明者】
【氏名】鈴木 泰成
(72)【発明者】
【氏名】近藤 正章
(72)【発明者】
【氏名】上野 洋典
(72)【発明者】
【氏名】田中 雅光
(72)【発明者】
【氏名】田渕 豊
【テーマコード(参考)】
5J065
【Fターム(参考)】
5J065AB01
5J065AC04
5J065AD03
5J065AE06
(57)【要約】
【課題】格子手術による格子の形状変形がある場合でも動作可能な復号装置を実現する。
【解決手段】論理量子ビットを構成する複数の量子ビットを備える量子プロセッサから得られた観測値に基づいて復号処理を実行する復号装置において、複数の復号処理部を備え、
各復号処理部は、前記量子プロセッサから周期的に取得した複数の補助量子ビットの観測値を2次元配列として保存するメモリを備え、各復号処理部がメモリの探索を行うことにより、エラーが生じたデータ量子ビットを特定する。
【選択図】
図4
【特許請求の範囲】
【請求項1】
論理量子ビットを構成する複数の量子ビットを備える量子プロセッサから得られた観測値に基づいて復号処理を実行する復号装置であって、
複数の復号処理部を備え、
各復号処理部は、前記量子プロセッサから周期的に取得した複数の補助量子ビットの観測値を2次元配列として保存するメモリを備え、
各復号処理部がメモリの探索を行うことにより、エラーが生じたデータ量子ビットを特定する
復号装置。
【請求項2】
前記論理量子ビットには、複数の補助量子ビットからなる列が複数個含まれ、各復号処理部は1つの列に対応し、前記メモリの2次元位置は、前記列における補助量子ビットの位置と、観測値を取得した時間位置とに対応する
請求項1に記載の復号装置。
【請求項3】
前記複数の復号処理部のうちの特定の復号処理部は、自身のメモリにおいて、所定値を持つ2次元位置から開始して、2次元位置を変更しながら探索を行い、探索対象の2次元位置が、前記論理量子ビットの領域外である場合に、前記所定値の2次元位置と、前記論理量子ビットのグリッド境界との間のデータ量子ビットを訂正する
請求項1に記載の復号装置。
【請求項4】
第1論理量子ビットに対応する複数の第1復号処理部と、第2論理量子ビットに対応する複数の第2復号処理部とを備え、前記複数の第2復号処理部における各第2復号処理部のメモリの内容を前記複数の第1復号処理部における対応する第1復号処理部のメモリにコピーすることにより、前記第1論理量子ビットと前記第2論理量子ビットとの間の格子手術を行う
請求項1に記載の復号装置。
【請求項5】
第1論理量子ビットに対応する複数の第1復号処理部と、第2論理量子ビットに対応する複数の第2復号処理部とを備え、前記複数の第1復号処理部と前記複数の第2復号処理部とを接続することにより、前記第1論理量子ビットと前記第2論理量子ビットとの間の格子手術を行う
請求項1に記載の復号装置。
【請求項6】
請求項1ないし5のうちいずれか1項に記載の前記復号装置と、前記量子プロセッサとを備える量子計算機。
【請求項7】
論理量子ビットを構成する複数の量子ビットを備える量子プロセッサから得られた観測値に基づいて復号処理を行う復号装置が実行する復号方法であって、
前記復号装置は、複数の復号処理部を備え、
各復号処理部は、前記量子プロセッサから周期的に取得した複数の補助量子ビットの観測値を2次元配列として保存するメモリを備え、
各復号処理部がメモリの探索を行うことにより、エラーが生じたデータ量子ビットを特定する
復号方法。
【請求項8】
コンピュータを、請求項1ないし5のうちいずれか1項に記載の復号装置として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、量子計算機における復号技術に関連するものである。
【背景技術】
【0002】
量子コンピュータは、量子力学の重ね合わせの原理を活用して計算を行う技術であり、素因数分解や量子化学計算などの問題を高速に解けることが期待されているため、その開発が世界で盛んに進められている。古典コンピュータを構成する素子である(古典)ビットは0または1の値をとる。一方、量子コンピュータを構成する素子である量子ビットは0と1に加えて、0と1の連続的な重ね合わせ状態をとることができる。この重ね合わせ状態を用いると、ビットの値が0の場合と1の場合の計算を同時に実行することが可能となるが、量子ビットを観測するとその値は0または1に確定し、重ね合わせ状態が壊れてしまう。
【0003】
量子ビットにはエラーが生じやすいため、量子コンピュータの計算を進めていくためにはそのエラーを訂正する必要がある。しかし、前述の量子ビットの性質により、通常の古典ビットのように量子ビットを直接観測してエラーの有無を調べることはできない。そこで、異なる役割を持つ複数の物理量子ビットを符号化して1つの論理量子ビットを構成する量子誤り訂正符号という枠組みが提案されている。代表的な量子誤り訂正符号の1つとして、表面符号(非特許文献1)が提案されている。
【0004】
表面符号を用いて誤りを訂正しながら量子計算を行うには、上記の表面符号で保護された論理量子ビットの間で論理演算を行わなければならない。複数の論理量子ビットに対する論理演算を行う上で最も効率的だと考えられているのが格子手術(非特許文献2)と呼ばれる手法である。
【先行技術文献】
【非特許文献】
【0005】
【非特許文献1】Fowler, Austin G., et al. "Surface codes: Towards practical large-scale quantum computation." Physical Review A 86.3 (2012): 032324.
【非特許文献2】Horsman, C., Fowler, A. G., Devitt, S., & Van Meter, R. (2012). "Surface code quantum computing by lattice surgery", New Journal of Physics, 14(12), 123011.
【非特許文献3】Holmes, A., Jokar, M. R., Pasandi, G., Ding, Y., Pedram, M., & Chong, F. T. (2020, May). "NISQ+: Boosting quantum computing power by approximating quantum error correction", In 2020 ACM/IEEE 47th Annual International Symposium on Computer Architecture (ISCA) (pp. 556-569). IEEE.
【非特許文献4】Ueno, Y., Kondo, M., Tanaka, M., Suzuki, Y., & Tabuchi, Y. (2021, December). "QECOOL: On-line quantum error correction with a superconducting decoder for surface code", In 2021 58th ACM/IEEE Design Automation Conference (DAC) (pp. 451-456). IEEE.
【発明の概要】
【発明が解決しようとする課題】
【0006】
非特許文献3、4には、高速・低消費電力で動作する単一磁束量子(SFQ: Single Flux Quantum)回路を用いた復号器が開示されている。しかし、従来のSFQ回路を用いた復号器では、復号対象の格子の形状を定めるハードウェア機構が存在しており、計算中に格子の形状が変化しないことを前提としている。従って、従来技術では、格子手術を用いて論理量子ビットに対する論理演算を行うことが難しい。
【0007】
本発明は上記の点に鑑みてなされたものであり、格子手術による格子の形状変形がある場合でも動作可能な復号装置を提供することを目的とする。
【課題を解決するための手段】
【0008】
開示の技術によれば、論理量子ビットを構成する複数の量子ビットを備える量子プロセッサから得られた観測値に基づいて復号処理を実行する復号装置であって、
複数の復号処理部を備え、
各復号処理部は、前記量子プロセッサから周期的に取得した複数の補助量子ビットの観測値を2次元配列として保存するメモリを備え、
各復号処理部がメモリの探索を行うことにより、エラーが生じたデータ量子ビットを特定する復号装置が提供される。
【発明の効果】
【0009】
開示の技術によれば、格子手術による格子の形状変形がある場合でも動作可能な復号装置を実現できる。
【図面の簡単な説明】
【0010】
【
図2】復号のためのマッチングを行うグラフの例を示す図である。
【
図3】本発明の実施の形態における量子計算機の構成図である。
【
図4】マッチング問題を解く3次元格子とULMの組を示す図である。
【
図8】格子手術により演算を行う際にマッチング問題を解くべき格子の形状の例を示す図である。
【
図9】ULMを用いた構成における格子手術の例を示す図である。
【
図10】ULMを用いた構成における格子手術の例を示す図である。
【
図11】ULMのハードウェア構成を説明するための図である。
【
図13】コントローラの処理のフローチャートである。
【
図14】復号装置のハードウェア構成例を示す図である。
【発明を実施するための形態】
【0011】
以下、図面を参照して本発明の実施の形態(本実施の形態)を説明する。以下で説明する実施の形態は一例に過ぎず、本発明が適用される実施の形態は、以下の実施の形態に限られるわけではない。
【0012】
以下では、まず、従来技術と課題をより詳細に説明し、その後に、本実施の形態に係る技術を説明する。なお、以下の説明において参照している非特許文献に開示された技術は公知であるが、非特許文献に開示された技術についての課題の説明は公知ではない。
【0013】
(従来技術について)
前述したように、量子ビットにはエラーが生じやすいため、量子コンピュータの計算を進めていくためにはそのエラーを訂正する必要がある。しかし、量子ビットの性質により、通常の古典ビットのように量子ビットを直接観測してエラーの有無を調べることはできない。そこで、異なる役割を持つ複数の物理量子ビットを符号化して1つの論理量子ビットを構成する量子誤り訂正符号という枠組みが提案されている。代表的な量子誤り訂正符号の1つである表面符号(非特許文献1)は、
図1のように規則正しく並んだデータ量子ビットと、観測用の補助量子ビットから構成される。データ量子ビットは論理量子ビットの重ね合わせ状態を表すために用いられ、直接観測されることはない。補助量子ビットの観測値は、隣接したデータ量子ビットに生じたエラーのパリティを与える。このパリティから、実際にデータ量子ビットに生じているエラーの種類と箇所を特定することを復号と呼ぶ。
【0014】
表面符号の復号処理は、エラーの検知信号に所定の処理を行い構成される
図2のような3次元格子中のノードをペアリングする、グラフのマッチング問題を解くことで実施できることが知られている(非特許文献2)。この時、ペアリングした頂点間の辺集合が推定されたエラーに対応する。すなわち、復号器と呼ばれるマッチング問題を解く古典コンピュータと量子ビットを組み合わせることで、誤り耐性量子コンピュータを構成できる。また、実際の量子コンピュータでは補助量子ビットの観測にもエラーが生じる場合がある。補助量子ビットの観測を複数回行い、得られた全ての観測値を元に復号処理を行うことで、観測エラーにも対処可能できる。
【0015】
誤りを訂正しながら量子計算を行うには、上記の表面符号で保護された論理量子ビットの間で論理演算を行わなければならない。複数の量子ビットに対する論理演算を行う上で最も効率的だと考えられているのが格子手術(非特許文献2)である。この手法では計算の途中に動的にパリティ検査の対象を切り替えて複数の表面符号を切り貼りすることで、所望の論理演算を実現する。従って、格子手術を用いた計算での復号処理は計算中に動的に変化する格子の形状に対応してグラフのマッチング問題を解けるものでなくてはならない。
【0016】
量子ビットの実現方法はいくつか知られているが、その中でも超伝導量子ビットは集積可能性と設計自由度が高く、量子コンピュータ素子の第一候補として有望視されている。超伝導量子ビットは極低温環境でのみ動作するという制約を持つため、極低温環境をつくりだす希釈冷凍機の中で動作するのが一般的である。
【0017】
量子誤り訂正符号の復号器を室温に配置してしまうと量子ビットと復号器の間をつなぐ異なる温度環境間の膨大な配線が必要となってしまう。このため復号器も希釈冷凍機の内部に配置することが望ましい。極低温環境で許容される消費電力は非常に小さいため、通常の復号器を極低温環境で動作させることは現実的ではない。この問題を解決する方法の一つが高速・低消費電力で動作する単一磁束量子(SFQ: Single Flux Quantum)回路を用いた量子誤り訂正を行う復号器の実現である。これまでのところ、単一磁束量子を用いたエラー訂正を行うアーキテクチャとして、観測エラーを仮定しない設計(非特許文献3)と、観測エラーを仮定した設計(非特許文献4)が提案されている。
【0018】
(課題について)
従来のSFQ回路を用いた復号器の設計(非特許文献3,4)では、復号対象の格子の形状を定めるハードウェア機構が存在しており、計算中に格子の形状が変化しないことを前提としている。従って、格子手術を用いた論理量子ビットに対する論理演算と従来の設計は共存することができない。このため、誤り訂正をしながら論理演算を行う誤り耐性量子計算機においてオンラインでエラーを推定できる設計は存在しないという課題があった。
【0019】
以下、上記の課題を解決する装置構成と装置動作について詳細に説明する。なお、以下では、量子誤り訂正符号の例として表面符号を使用するが、本発明に係る技術の適用先は表面符号に限定されない。
【0020】
(装置全体構成)
図3に、本実施の形態における量子計算機300の全体構成例を示す。「量子計算機」を「量子コンピュータ」、「量子計算装置」などと呼んでもよい。
【0021】
図1に示すとおり、量子計算機300は、復号装置100と量子プロセッサ200を備える。復号装置100は、量子プロセッサ200に制御信号を送信し、量子プロセッサ200から計算結果(測定結果)を取得することで、誤り耐性量子計算を行う。復号装置100を復号器などと呼んでもよい。
【0022】
復号装置100は、非特許文献4に開示されている復号器と同様に、SFQ回路を用いた装置であり、極低温環境をつくりだす希釈冷凍機の中で動作させることを想定する。ただし、使用する量子ビットに応じて、極低温環境を必要としない場合などにおいては、復号装置100として、SFQ回路を用いた装置を使用することは必須ではなく、復号装置100として、室温で動作する古典コンピュータを使用してもよい。
【0023】
量子プロセッサ200は、量子2準位系を構成する量子ビットを複数備えている。本実施の形態では、量子ビットとして、超伝導量子ビットを使用する。ただし、本発明に係る技術(後述する複数のメモリを用いたアルゴリズム)を適用できる量子ビットは超伝導量子ビットに限定されるわけではなく、任意の量子ビットを使用可能である。例えば、イオントラップ、光子、量子ドット等を使用することも可能である。
【0024】
量子プロセッサ200における複数の量子ビットにより、前述した表面符号を構成している。そのため、量子プロセッサ200における複数の量子ビットは、2次元平面上で格子状に並んだ形になっており、これを量子ビットプレーン(qubit plane)と呼んでもよい。量子ビットプレーンに集積化された量子ビットは正方形のブロックに区切られる。各ブロックは1つの論理量子ビットを構成する。
図1に示した表面符号は1つの論理量子ビットの例である。
【0025】
図3に示すように、復号装置100は、制御部110、復号部120、測定部130を含む。復号部120は、複数のULM(united line module)を備える。制御部110をコントローラと呼んでもよい。測定部130は、論理量子ビットの測定を行う。なお、測定部130は、復号装置100の外部に備えられることとしてもよい。また、UMLを復号処理部と呼んでもよい。
【0026】
本実施の形態では、復号部120において、一列に並んだ補助量子ビットに対応するULMの間の信号伝播により、マッチング処理を行う。
【0027】
各ULMは観測値を2次元配列として保存するメモリを持っており、複数の補助量子ビットの観測値を、
図4に示すように保持することで、マッチング問題を解く3次元格子を一列に並んだULMの組に対応させる。
【0028】
ここで、
図4の左側の図について説明する。表面符号では、エラー検出用の補助量子ビットを用いて定期的にパリティ検査を行うことで、量子ビットに生じている誤りに関する情報を間接的に得ることができる。
【0029】
表面符号で補助量子ビットを用いてエラー検出を行うと、補助量子ビット一つにつき1ビットのエラーのパリティに関する情報が得られ、これを並べると「補助量子ビットの周辺にあるデータ量子ビットに生じたエラーの個数が偶数個か奇数個か」を表す2次元的なビットのマップが与えられる。ここで得られる値(観測値)はシンドローム値(又はシンドローム)と呼ばれる。「エラーの個数が偶数個か奇数個か」を表す値をパリティと呼んでもよい。シンドローム値が1(奇数)であるビットはホットシンドローム(hot syndrome)と呼ばれる。シンドローム値が0(偶数)であるビットはトリビアルシンドローム(Trivial syndrome)と呼ばれる。
【0030】
シンドローム値の測定(スタビライザ測定)は、ある周期(サイクル)で繰り返し行われる。この周期を符号サイクルと呼ぶ。1符号サイクルのシンドローム値を1層として、各符号サイクルのシンドローム値を積み上げることにより、
図4の左側のように、3次元格子のデータが得られる。3次元格子の各ノードは1つのシンドローム値に対応する。
【0031】
図4の左側の図では、位相反転エラー検出のための補助量子ビットに対応する3次元格子が示されており、
図4の右側の図では、それに対応するULMの配置が示されている。ビット反転エラー検出のための補助量子ビットに対応するULMの配置に関しては、配置の向きが変わるだけであり、基本的に位相反転エラー検出のための補助量子ビットに対応するULMの配置と同様である。
【0032】
図4では、記載の便宜上、位相反転エラー検出のための補助量子ビットに関する構成が示されている。本実施の形態に係る復号処理に関して、位相反転エラー検出のための補助量子ビットについての処理と、ビット反転エラー検出のための補助量子ビットについての処理は基本的に共通であり、同様の処理が並行して行われる。
【0033】
生じたエラーを訂正するには、シンドローム値からエラーを推定する復号を行う。上記のとおり、時系列とともに並べたシンドローム値のビットマップは
図4左側のように3次元的なグリッド(グラフ)となる。このグリッドのうちシンドロームの値が奇数(ホット)となっている箇所どうし、又は、シンドロームの値が奇数(ホット)となっている箇所とグリッド境界をペアリングする作業を考える。ペアリングした際にその経路となる辺(エッジ)は、生じたエラーと一対一に対応することが知られている。このことから、一番尤もらしいエラーを推定する復号作業は、こうしたペアリングを最小の辺の長さで行うことに相当し、この問題は最小重み完全マッチングと呼ばれる問題と一致する。
【0034】
本実施の形態では、上記の復号処理を、
図4の右側に示す複数のULMを用いて行う。
図4の右側に示すように、縦方向に並んだULMの上からi番目のULMは、表面符号での上からi番目の補助量子ビットの1列(本例では横向きの列)に対応する。
【0035】
各ULMのメモリ(Mem)のx軸方向は、補助量子ビットの1列における補助量子ビットの並びに対応し、t軸方向は、符号サイクル(時間位置)に対応する。例えば、最初の符号サイクルにおける、一番上の補助量子ビットの列における一番左の補助量子ビットの値は、一番上のULMのメモリにおける(t,x)=(0,0)の座標の値になる。
【0036】
UMLメモリ上では、観測値の表すパリティが偶の場合、0が保持される。つまり、Trivial syndromeとして0が保持される。また、観測値の表すパリティが奇の場合、1が保持される。つまり、Hot syndromeとして1が保持される。以降、ULMの各メモリの要素をMem[t][x]と表現する。
【0037】
(復号処理例1)
まず、復号処理例1として、1論理量子ビットの領域内でマッチングを行う場合の処理例を説明する。本処理におけるアルゴリズムの概要は下記のとおりである。なお、本アルゴリズムは、非特許文献4に開示されているQECOOLのアルゴリズムをベースとしている。
【0038】
補助量子ビットが測定されるたびに、その値が、該当ULMの該当Mem[t][x]に格納される。全てのULMの最も古い測定結果Mem[0][:]が0になると、すなわち、ボトムレイヤにおいてこれ以上の復号処理が必要ではなくなると、各Memの値は1ビットシフトされる。つまり、シフト前のMem[i+1][]の値が、シフト後はMem[i][]の値となる。なお、このような処理は、計算処理の一例である。
【0039】
復号処理においては、まず、hot syndromeのペアを探すための開始点となるroot hot syndromeを決定する。次に、ULM間における、Spike及びAcknowledgeと呼ばれる2種類の信号を用いて、他のhot syndromeを見つける。最後に、これらのhot syndromesをクリアし、hot syndromes間のデータ量子ビットを訂正し、次のroot hot syndromeを探す。
【0040】
上記の処理をより具体的に
図5~
図7を参照して説明する。下記の各ステップの説明は
図5、
図6の各Stepと対応している。また、
図7は、ステップ1~5の処理におけるデータ量子ビットの訂正箇所(グラフ上の辺)を示している。
【0041】
以下で説明するステップ1~5を、マッチング処理の中心となる格子の層を表すbの値を0から徐々に大きくしながら繰り返すことで、3次元格子全体のマッチング処理を行う。
【0042】
<ステップ1、2>
コントローラ(制御部110)が各ULMに上から順にTokenを渡していき、Tokenを受け取ったULMは、Mem[b][0],Mem[b][1],…,と1サイクルごとに順番にメモリの内容をチェックする。Mem[b][x]が1であれば、そのULMをroot ULM、Mem[b][x]をroot hot syndromeとしてマッチング処理を始める。Mem[b][x]が全てのxについて0であれば、ULMはTokenを次のULMに渡す。
【0043】
図5の例では、一番上のULMにおいてMem[0][1]=1なので、そのULMがroot ULMになり、Mem[0][1]がroot hot syndromeになる。
【0044】
<ステップ3,4>
root ULMは、他の全てのULMに対してSpike信号を自分宛に送るように要求する。各ULMは、Mem[b][x]をquery pointとして、サーチを行うことで最近の1を探す。具体的には下記のとおりである。
【0045】
root ULMは自身のメモリのうち、root hot syndromeからマンハッタン距離(ハミング距離)がδであるメモリ(Mem[b+δ][x],Mem[b][x-δ],Mem[b][x+δ])の内容をチェックする(ステップ3)。チェックしたメモリのいずれかに1が含まれていれば、それとroot hot syndromeとをマッチングし、対応するデータ量子ビットに訂正信号を送る。
【0046】
同時にその他のULMは自身のMem[b][x]からマンハッタン距離がδ-1の内容をチェックする。チェックしたメモリのいずれかに1が含まれていれば、root ULMに向けてSpike信号を送信する(ステップ4)。また、1を見つけたメモリの箇所Mem[t´][x´]を記憶しておく。
【0047】
各ULMはδを1から1サイクルごとに徐々に大きくしながら、Spike信号を送信するか受信するまでステップ3、4の操作を繰り返す。
【0048】
図5のStep 3では、root ULMは自身のメモリの(Mem[b+δ][x],Mem[b][x-δ],Mem[b][x+δ])には1が含まれないことを検知する。
図6のStep 4では、1が含まれているULM Z
1とULM Z
4がそれぞれSpike信号を送信する。
【0049】
<ステップ5>
Spike信号を受け取った通常のULMはメモリのチェックを中断し、root ULMに向けてSpike信号を中継する。root ULMが最初のSpike信号を受け取ると、当該Spike信号の送信源であるULMに向けてAcknowledge信号を送り返す。同時に、root hot syndromeの値を0にクリアし、適切な位置のデータ量子ビットを訂正する。なお、root ULMに最初に届いたSpike信号の送信源をTarget ULMと呼ぶ。
【0050】
通常のULMはAcknowledge信号を受け取ると、Spike信号と同様にTarget ULMに向けてAcknowledge信号を中継する。中継している間、各ULMは適切な位置のデータ量子ビットを訂正する。Target ULMがAcknowledge信号を受け取ると、ステップ3、4で記憶したMem[t´][x´]の値を0にクリアする。
【0051】
図6のstep 5では、root ULMは最初に受信したSpike信号の送信源であるULM Z
1に向けてAcknowledge信号を送り返す。
図7において、ULM Z
0のMem[0][1]に対応する補助量子ビットと、ULM Z
1のMem[0][2]に対応する補助量子ビットとを結ぶ2辺に対応するデータ量子ビットが訂正されている。
【0052】
以上のように、ULM間の2種類の信号の伝播に基づいて、root hot syndromeを最短距離にあるhot syndromeとマッチングすることで、表面符号の復号を行う。
【0053】
(復号処理例2)
復号処理例2として、論理ビット復号を行う際に境界とマッチングする場合の処理例を説明する。ここでは、前述のステップ3、4が変更になりそれをステップ3´、ステップ4´とする。
【0054】
<ステップ3´、4´>
前述の1論理量子ビットの復号の際のステップ3、4において、root ULMがメモリのチェックを行うとき、Mem[b][x-δ]又はMem[b][x+δ]がメモリの領域外を指していた場合には境界とマッチングを行うこととする。すなわち、root ULMが管轄している横1列のうち、位置xから左側または右側にあるデータ量子ビットを全て訂正することで復号を行う。
【0055】
つまり、Mem[b][x-δ]がメモリの領域外を指していた場合には、位置xから左側にあるデータ量子ビットを全て訂正することで復号を行い、Mem[b][x+δ]がメモリの領域外を指していた場合には、位置xから右側にあるデータ量子ビットを全て訂正することで復号を行う。なお、Mem[b][x-δ]又はMem[b][x+δ]がメモリの領域外を指す場合とは、δがその大きさになるまで、root hot syndromeと他のhot syndromeとの間でのマッチングが行われなかったことを意味する。
【0056】
上記の処理により、グリッド境界とのマッチングに従来の設計(非特許文献3,4)に見られたような追加のハードウェア的な機構が不要となり、メモリの内容を書き換えることで境界の動的な変更に対応することができる。
【0057】
(復号処理例3)
次に、復号処理例3として、隣接する2論理量子ビットを格子手術により結合・分離(Merge,split)する場合の処理例を説明する。
【0058】
格子手術により隣接する2論理量子ビットの演算を行う場合、そのエラー訂正のためにマッチング問題を解くべき格子の形状の例を
図8に示す。
図8に示すように、この例では、2つの論理量子ビットがMergeされている期間において、2つの論理量子ビットの間に格子(補助量子ビット)が存在する。
【0059】
本実施の形態では、Merge時のULMの挙動を工夫することにより、格子手術への対応を行う。以下のようにULMのメモリの内容を書き換える、またはULMの組を直列に結合した後に、前述の1論理量子ビットの復号の場合と同様にマッチング問題を解く。
図9、
図10を参照して、(a)X-stabilizer格子、(b)Z-stabilizer格子のそれぞれの場合について説明する。
【0060】
(a)X-stabilizer格子
1論理量子ビットのX-stabilizer格子の復号を行うULMの組は
図9のように縦1列に並んでいる。
図9の左側(結合前)に示す2つの論理量子ビットにおける縦に並んだULM ZLとULM ZRはそれぞれ、左側の論理量子ビット及び右側の論理量子ビットのZエラー訂正(位相反転エラー訂正)を行う。
【0061】
図9の左側(結合後)に示すように、左右に隣接する2つの論理量子ビットを結合する場合には、論理量子ビットに挟まれた追加の補助量子ビットの観測値および右の論理量子ビットの各ULM ZRのメモリの内容を対応する左側のULM ZLのメモリにコピーし、左側のULM ZLの組を前述の通り動作させることでマッチング問題を解く。
【0062】
なお、論理量子ビットに挟まれた追加の補助量子ビットの観測値および左の論理量子ビットの各ULM ZLのメモリの内容を対応する右側のULM ZRのメモリにコピーし、右側のULM ZRの組を前述の通り動作させることでマッチング問題を解くこととしてもよい。
【0063】
結合操作時において、2論理量子ビットのrough boundaryを接続するために、追加の補助量子ビットが配置されるため、
図9の右側(結合後)に示すとおり、ULM ZLのメモリにおけるデータ量は、1つの論理量子ビットにおけるデータ量×2に、1列分のデータ量が追加された量になる。
【0064】
(b)Z-stabilizer格子
1論理量子ビットのZ-stabilizer格子の復号を行うULMの組は
図10に示すように横1列に並んでいる。
図10の左側(結合前)に示す2つの論理量子ビットにおける横に並んだULM ZLとULM ZRはそれぞれ、左側の論理量子ビット及び右側の論理量子ビットのXエラー訂正(ビット反転エラー訂正)を行う。
【0065】
左右に隣接する2つの論理量子ビットを結合する場合、左右の論理量子ビットに対応するULMの組を直列に接続し、2組のULMの全体を前述の通り動作させることでマッチング問題を解く。
【0066】
つまり、Z-stabilizer格子の場合、符号距離dの2倍の数のULMの全体を前述の通り動作させる。なお、Z-stabilizer格子の場合、X-stabilizer格子の場合のような追加の補助量子ビットは必要ない。
【0067】
(ULMのハードウェア構成例)
図11を参照して、ULMの詳細構成例を説明する。
図11は、Zエラー訂正を行う構成を示しているが、Xエラー訂正の場合もULMの並ぶ方向が変わるだけであり、処理内容はZエラー訂正を行う場合と同様である。以下の説明は、Xエラー訂正の場合の構成にも当てはまる。
【0068】
図11(a)は、コントローラ110と、1つの論理量子ビット(表面符号)に対する複数ULMの配置イメージを示している。
【0069】
1つのUMLは、Xスタビライザを介して横1列のデータ量子ビットを管理する。縦に並ぶデータ量子ビットは、複数のUMLにより管理される。
【0070】
1つの論理量子ビットにおけるZエラー訂正(又はXエラー訂正)のためのULMのグループに対して1つのコントローラ110が備えられる。ただし、このような単位でコントローラ110を配置することは例である。例えば、複数の論理量子ビットに対して1つのコントローラ110が備えられてもよい。
【0071】
補助量子ビットが測定される度に、コントローラ110は、Push信号を配下の全てのULMに送信する。Push信号を受信した各ULMは観測値をメモリモジュールに格納する。
【0072】
メモリモジュールに有効なシンドロームデータが十分に格納されると、コントローラ110は全てのULMにRestart信号を送信することにより、復号処理を開始する。
【0073】
復号処理において、TokenがULMからコントローラ110に返され、現レイヤでのエラー訂正処理が完了すると、コントローラはPop信号をULMに送信し、メモリ内容をシフトさせる。これ以外の場合、コントローラはBaseline信号をブロードキャストし、現レイヤよりも1つ上のレイヤでの復号処理を開始する。
【0074】
前述したように非特許文献4等に開示されている従来技術では、復号対象の格子の形状を定めるハードウェア機構が存在していたため、格子手術における動的な境界変化に対応できない。それに対し、本実施の形態におけるメモリを用いた機構では、表面符号パッチ(論理量子ビット)におけるシンドローム値を適宜メモリに格納することで境界を動的に変更でき、格子手術を実現できる。
【0075】
図11(b)は、1つのULMの内部構成を示す。
図11(b)に示すように、ULMは、ステートマシン1(State machine)、メモリモジュール2(Memory module)、Spike出力モジュール3(Spike out module)、Ack出力モジュール4(Acknowledge out module)、及び、量子ビット訂正モジュール4(Qubit correction module)を有する。各モジュールの動作は下記のとおりである。
【0076】
(1) State machine
ステートマシン1(State machine)は、ULMの挙動を制御する。ステートマシン1(State machine)は、コントローラ110からのリセット信号、他のULMからの信号、及び、参照するメモリ値に基づいて状態遷移を行う。
【0077】
(2) Memory module
メモリモジュール2(Memory module)は、ULMにより管理される各補助量子ビットの観測値を時系列で保持する2次元メモリを有する。メモリモジュールは、前述したように、query pointから周囲に向けてメモリ位置を読むことで、サイクル毎の最小マンハッタン距離探索を実行する。
【0078】
メモリ値として1が見つかると、FindHotと呼ばれる信号をステートマシン1に送信することで、マッチングプロセスに進むことを通知する。また、メモリモジュール1は、対応する補助量子ビットの位置の情報を量子ビット訂正モジュール5(Qubit correction module)に送信することで、エラー訂正対象のデータ量子ビットを通知する。
【0079】
query pointは、ステートマシン1からのQuery信号により決定される。Query信号により、補助量子ビットの位置と、マッチングの開始レイヤを示すBaseレジスタが特定される。
図11(c)には、メモリモジュー2ルの動作の例が示されている。
【0080】
(3) Spike out module
Spike出力モジュール3(Spike out module)は、Spike信号を他のULMに送信する。送信方向は、FlagTokenと呼ばれる1ビットフラグにより決定される。
【0081】
(4) Acknowledge out module
Ack出力モジュール4(Acknowledge out module)は、直近のSpike信号を受信した場合のその送信源のULMにAcknowledge信号を送信する。
【0082】
(5) Qubit correction module
量子ビット訂正モジュール5(Qubit correction module)は、観測されたエラーに対してデータ量子ビットを訂正する。適切な量子ビットを訂正するために、量子ビット訂正モジュール5は、訂正すべき量子ビットの位置を保持するバッファを有する。量子ビット訂正モジュールは、CorrectHorizontalとCorrectVerticalの2種類の量子ビット訂正信号を生成する。CorrectHorizontalにより、スタビライザを介して横方向に接続されたデータ量子ビットを訂正し、CorrectVerticalにより2つのULM間でのデータ量子ビットを訂正する。
【0083】
ULMはSFQ回路により実装される。ただし、ULMの一部は、SFQ回路以外の回路でもよい。例えば、メモリモジュールは、hybrid Josephson-CMOS memory arrayでもよい。また、コントローラ110については、SFQ回路により実装されてもよいし、SFQ回路以外の回路で実装されてもよい。また、コントローラ110が、室温で動作する一般的なコンピュータ(古典コンピュータ)とソフトウェアにより構成されてもよい。
【0084】
(ULMの処理のフローチャート)
図12は、上述した構成を備える1つのULMの処理のフローチャートである。なお、フローチャートにおけるS1などの符号は、ステップを参照するためのものであり、符号の数字の順番が処理の順番を正確に表しているわけではない。
【0085】
S1で復号処理を開始すると、ULMは、Tokenを持っているか否かを判断し、YesであればS3に進み、NoであればS4に進む。S3において、ULMは、Mem[b][x]が1であるか否かを判断する。YesであればS6に進み、NoであればS5に進む。S5においてリセットを要求する。S6において、他のULMに対してSpike信号を要求する。S7においてΔ=0とする。
【0086】
その後、ULMは、Spike信号を受信しない限り、Δを1ずつ増加させてΔの位置のメモリをチェックする(S8、S10、S11)。メモリ値が1であればS10がNoとなり、S12において量子ビットを訂正してリセットを要求する。S8でSpike信号を受信すればS9において量子ビットを訂正し、Ackを送信する。
【0087】
S2においてNoの場合(Tokenを保持しない場合)、S4においてULMはSpike信号の要求を待つ。S14においてΔ=0とし、メモリ値が0、かつ、Spike信号を受信しない間、Δを1ずつ増加させてメモリ値をチェックする(S14、S18、S22)。
【0088】
S14においてメモリ値が1の場合、S15においてULMはSpike信号を送信し、S16でAckを待ち、Ackを受信したらS17で量子ビットを訂正してリセットを要求する。
【0089】
S18においてSpike信号を受信した場合、S19においてULMはSpike信号を送信(中継)し、S20でAckを待ち、Ackを受信したらS21で量子ビットを訂正してリセットを要求する。
【0090】
(コントローラの処理のフローチャート)
図13は、1組のULMを管理するコントローラ110のフローチャートである。なお、フローチャートにおけるS31などの符号は、ステップを参照するためのものであり、符号の数字の順番が処理の順番を正確に表しているわけではない。
【0091】
S31~S33において、コントローラ110はサイクル数Cを1とし、bを0とし、ULM番号であるiを0とする。
【0092】
コントローラ110は、S34において、m-bが閾値よりも大きいか否かを判断し、YesであればS35に進み、NoであればS36に進む。なお、mは測定されたサイクル数を示す。S36では測定を待つ。
【0093】
S35において、コントローラ110はTokenをリセットし、i番目のULMにTokenを与え、x=0として、S37においてULMに復号処理を行わせる。S38、S39、S40、S37において、コントローラ110は、xを1ずつ増加させながらULMに復号処理を行わせる。S40、S41、S42、S35、S37、S38で回るループでは、iを1ずつ増加させながら復号処理を行う。
【0094】
S43において、最下層が訂正されていなければレジスタをシフトしてS31に戻る。S43でYesであれば、bを1ずつ増やしながら、bが所定値に達するまでS33からの処理を行う。bが所定値に達したら(S46のNo)、Cが所定値に達するまでS32からの処理を実行する。Cが所定値に達したら(S48のNo)、処理を終了する。
【0095】
(復号装置100のハードウェア構成例)
上述した例では、復号装置100においてSFQ回路を使用することを想定している。ただし、復号処理のためのアルゴリズムは、室温で動作する一般的なコンピュータ(古典コンピュータ)でもプログラムとして実行可能である。そのため、例えば、極低温環境を必要としない量子ビットに対して表面符号を適用する場合には、復号装置100を、室温で動作する一般的なコンピュータと、復号処理のためのアルゴリズムを記述したプログラムとで実現できる。当該コンピュータは、物理的なコンピュータであってもよいし、クラウド上の仮想マシンであってもよい。
【0096】
上記プログラムは、例えば、コンピュータのメモリとコンピュータの処理により、複数ULMの動作をソフトウェア的に実現するものである。
【0097】
すなわち、復号装置100は、コンピュータに内蔵されるCPUやメモリ等のハードウェア資源を用いて、復号装置100で実施される処理に対応するプログラムを実行することによって実現することが可能である。上記プログラムは、コンピュータが読み取り可能な記録媒体(可搬メモリ等)に記録して、保存したり、配布したりすることが可能である。また、上記プログラムをインターネットや電子メール等、ネットワークを通して提供することも可能である。
【0098】
図14は、上記コンピュータのハードウェア構成例を示す図である。
図14のコンピュータは、それぞれバスBで相互に接続されているドライブ装置1000、補助記憶装置1002、メモリ装置1003、CPU1004、インタフェース装置1005、表示装置1006、入力装置1007、出力装置1008等を有する。
【0099】
当該コンピュータでの処理を実現するプログラムは、例えば、CD-ROM又はメモリカード等の記録媒体1001によって提供される。プログラムを記憶した記録媒体1001がドライブ装置1000にセットされると、プログラムが記録媒体1001からドライブ装置1000を介して補助記憶装置1002にインストールされる。但し、プログラムのインストールは必ずしも記録媒体1001より行う必要はなく、ネットワークを介して他のコンピュータよりダウンロードするようにしてもよい。補助記憶装置1002は、インストールされたプログラムを格納すると共に、必要なファイルやデータ等を格納する。
【0100】
メモリ装置1003は、プログラムの起動指示があった場合に、補助記憶装置1002からプログラムを読み出して格納する。CPU1004は、メモリ装置1003に格納されたプログラムに従って、復号装置100に係る機能を実現する。インタフェース装置1005は、ネットワークあるいは量子プロセッサ等に接続するためのインタフェースとして用いられる。表示装置1006はプログラムによるGUI(Graphical User Interface)等を表示する。入力装置1007はキーボード及びマウス、ボタン、又はタッチパネル等で構成され、様々な操作指示を入力させるために用いられる。出力装置1008は演算結果を出力する。
【0101】
(実施の形態に係る技術の効果等)
本実施の形態に係る技術により、希釈冷凍機の中で動作可能な単一磁束量子回路を用いて、格子手術による格子の形状の変形の下でも動作可能な量子誤り訂正の復号器を実現できる。これにより、格子手術による論理量子ビットに対する演算を行っている元でもエラー推定が可能な量子計算機を実現できる。具体的には、グラフのマッチングの処理を行や列ごとに分割し、論理量子ビットの境界とのマッチングに追加のハードウェア的な機構を不要としたことで、小さなオーバーヘッドで格子手術に伴う格子の変形に対応できる。
【0102】
(付記)
以上の実施形態に関し、更に以下の付記項を開示する。
(付記項1)
論理量子ビットを構成する複数の量子ビットを備える量子プロセッサから得られた観測値に基づいて復号処理を実行する復号装置であって、
複数の復号処理部を備え、
各復号処理部は、前記量子プロセッサから周期的に取得した複数の補助量子ビットの観測値を2次元配列として保存するメモリを備え、
各復号処理部がメモリの探索を行うことにより、エラーが生じたデータ量子ビットを特定する
復号装置。
(付記項2)
前記論理量子ビットには、複数の補助量子ビットからなる列が複数個含まれ、各復号処理部は1つの列に対応し、前記メモリの2次元位置は、前記列における補助量子ビットの位置と、観測値を取得した時間位置とに対応する
付記項1に記載の復号装置。
(付記項3)
前記複数の復号処理部のうちの特定の復号処理部は、自身のメモリにおいて、所定値を持つ2次元位置から開始して、2次元位置を変更しながら探索を行い、探索対象の2次元位置が、前記論理量子ビットの領域外である場合に、前記所定値の2次元位置と、前記論理量子ビットのグリッド境界との間のデータ量子ビットを訂正する
付記項1又は2に記載の復号装置。
(付記項4)
第1論理量子ビットに対応する複数の第1復号処理部と、第2論理量子ビットに対応する複数の第2復号処理部とを備え、前記複数の第2復号処理部における各第2復号処理部のメモリの内容を前記複数の第1復号処理部における対応する第1復号処理部のメモリにコピーすることにより、前記第1論理量子ビットと前記第2論理量子ビットとの間の格子手術を行う
付記項1ないし3のうちいずれか1項に記載の復号装置。
(付記項5)
第1論理量子ビットに対応する複数の第1復号処理部と、第2論理量子ビットに対応する複数の第2復号処理部とを備え、前記複数の第1復号処理部と前記複数の第2復号処理部とを接続することにより、前記第1論理量子ビットと前記第2論理量子ビットとの間の格子手術を行う
付記項1ないし4のうちいずれか1項に記載の復号装置。
(付記項6)
付記項1ないし5のうちいずれか1項に記載の前記復号装置と、前記量子プロセッサとを備える量子計算機。
(付記項7)
論理量子ビットを構成する複数の量子ビットを備える量子プロセッサから得られた観測値に基づいて復号処理を行う復号装置が実行する復号方法であって、
前記復号装置は、複数の復号処理部を備え、
各復号処理部は、前記量子プロセッサから周期的に取得した複数の補助量子ビットの観測値を2次元配列として保存するメモリを備え、
各復号処理部がメモリの探索を行うことにより、エラーが生じたデータ量子ビットを特定する
復号方法。
(付記項8)
コンピュータを、付記項1ないし5のうちいずれか1項に記載の復号装置として機能させるためのプログラムを記憶した非一時的記憶媒体。
【0103】
以上、本実施の形態について説明したが、本発明はかかる特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【符号の説明】
【0104】
100 復号装置
110 制御部(コントローラ)
120 復号部
130 測定部
1000 ドライブ装置
1001 記録媒体
1002 補助記憶装置
1003 メモリ装置
1004 CPU
1005 インタフェース装置
1006 表示装置
1007 入力装置
1008 出力装置