IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ イオンキュー インコーポレイテッドの特許一覧

<>
  • 特許-量子回路の最適化 図1
  • 特許-量子回路の最適化 図2A
  • 特許-量子回路の最適化 図2B
  • 特許-量子回路の最適化 図3
  • 特許-量子回路の最適化 図4
  • 特許-量子回路の最適化 図5
  • 特許-量子回路の最適化 図6
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-02-16
(45)【発行日】2024-02-27
(54)【発明の名称】量子回路の最適化
(51)【国際特許分類】
   G06N 10/00 20220101AFI20240219BHJP
【FI】
G06N10/00
【請求項の数】 20
(21)【出願番号】P 2021542569
(86)(22)【出願日】2020-02-21
(65)【公表番号】
(43)【公表日】2022-04-06
(86)【国際出願番号】 US2020019170
(87)【国際公開番号】W WO2020172504
(87)【国際公開日】2020-08-27
【審査請求日】2021-10-19
(31)【優先権主張番号】16/281,241
(32)【優先日】2019-02-21
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】520132894
【氏名又は名称】イオンキュー インコーポレイテッド
(74)【代理人】
【識別番号】100120891
【弁理士】
【氏名又は名称】林 一好
(74)【代理人】
【識別番号】100165157
【弁理士】
【氏名又は名称】芝 哲央
(74)【代理人】
【識別番号】100205659
【弁理士】
【氏名又は名称】齋藤 拓也
(74)【代理人】
【識別番号】100126000
【弁理士】
【氏名又は名称】岩池 満
(74)【代理人】
【識別番号】100185269
【弁理士】
【氏名又は名称】小菅 一弘
(72)【発明者】
【氏名】ヴァンディヴァー チャプリン
(72)【発明者】
【氏名】ユンソン ナム
【審査官】渡辺 順哉
(56)【参考文献】
【文献】米国特許出願公開第2006/0123363(US,A1)
【文献】MASLOV, Dmitri ほか,Quantum circuit simplification using templates,Proceedings of the Design, Automation and Test in Europe Conference and Exhibition,IEEE,2005年03月07日
(58)【調査した分野】(Int.Cl.,DB名)
G06N 10/00
(57)【特許請求の範囲】
【請求項1】
量子回路を最適化するコンピュータで実装された方法であって、
量子回路ゲートの第1のセットから、所定の機能を実行する量子回路ゲートの第2のセットを識別するステップと、
非一時的なコンピュータ可読媒体に格納されたテンプレートライブラリを探索して、量子ビットマッピングとゲートマッピングを実行して一致を見つけることにより、前記所定の機能を実行する量子回路ゲートのテンプレートを識別するステップであって、前記ゲートマッピングは、前記量子回路と量子回路ゲートの前記テンプレートとの間で、前記量子回路のグラフィカルな表現上で定義される量子回路ゲートのタイプと順序をマッチングさせることを含む、ステップと、
量子回路ゲートの前記識別されたセットを量子回路ゲートの前記識別されたテンプレートと置換するステップと、
を含む、方法。
【請求項2】
量子回路ゲートの前記見つかったテンプレートは、量子回路ゲートの前記識別されたセットよりも量子コストが低い、請求項1に記載のコンピュータで実装された方法。
【請求項3】
前記識別された量子回路ゲートの前記量子コストと、量子回路ゲートの前記見つかったテンプレートの前記量子コストとが、同じアルゴリズムを使用して計算される、請求項2に記載のコンピュータで実装された方法。
【請求項4】
前記テンプレートライブラリ内の前記テンプレートは、回路トポロジを修正するために並列ゲートを用いて生成される、請求項1に記載のコンピュータで実装された方法。
【請求項5】
前記方法が、量子回路コンパイルおよび追加の量子最適化とのパイプライン組み合わせで実行される、請求項1に記載のコンピュータで実装された方法。
【請求項6】
前記方法は、前記量子回路を受信すると、自動的に実行される、請求項1に記載のコンピュータで実装された方法。
【請求項7】
前記方法は、連続的に実行される、請求項6に記載のコンピュータで実装された方法。
【請求項8】
前記方法は、並行して実行される、請求項6に記載のコンピュータで実装された方法。
【請求項9】
非一時的なコンピュータ可読媒体であって、実行時に、デジタル計算プロセッサに、以下の機能、すなわち、
量子回路を受け取る機能と、
前記受け取った量子回路内から、前記デジタル計算プロセッサに結合された非一時的なコンピュータ可読記憶媒体に格納された事前に生成されたテンプレートライブラリからの少なくとも1つのパターンの少なくとも一部とマッチングする量子ゲートのパターンを識別する機能と、
量子ビットマッピングとゲートマッピングを実行して一致を見つけることにより、量子ゲートの置換パターンを求めて、前記テンプレートライブラリを探索する機能であって、前記ゲートマッピングは、前記量子回路と量子回路ゲートのテンプレートとの間で、前記量子回路のグラフィカルな表現上で定義される量子回路ゲートのタイプと順序をマッチングさせることを含む、機能と、
量子ゲートの前記置換パターンの量子コストが、量子ゲートの前記識別されたパターンの量子コストよりも低いことを決定する機能と、
量子ゲートの前記識別されたパターンを量子ゲートの前記置換パターンに置換する機能と、
を実行させる実行可能命令を格納する、非一時的なコンピュータ可読媒体。
【請求項10】
量子回路ゲートの前記識別されたパターンの前記量子コストと、量子回路ゲートの前記置換パターンの前記量子コストとが、抽象データ構造によって削減される、請求項9に記載の非一時的なコンピュータ可読媒体。
【請求項11】
量子回路ゲートの前記識別されたパターンの前記量子コストと、量子回路ゲートの前記置換パターンの前記量子コストとが、カスタマイズ可能なコスト関数に従って、それぞれの値が割り当てられる、請求項10に記載の非一時的なコンピュータ可読媒体。
【請求項12】
量子回路ゲートの前記置換パターンは、少なくとも1つの量子ゲートを含む、請求項9に記載の非一時的なコンピュータ可読媒体。
【請求項13】
量子ゲートの前記識別されたパターンがアイデンティティ操作で置換される、請求項9に記載の非一時的なコンピュータ可読媒体。
【請求項14】
前記テンプレートライブラリの探索は、GPU(グラフィックス処理ユニット)上で少なくとも部分的に実行され、CPU(中央処理ユニット)上で少なくとも部分的に実行される、請求項9に記載の非一時的なコンピュータ可読媒体。
【請求項15】
以前に生成されたテンプレートライブラリからパターンの少なくとも一部とマッチングする量子ゲートのパターンを識別するように構成された回路
を備える、オプティマイザであって、
非一時的なコンピュータ可読媒体に格納されたテンプレートライブラリは、プロセッサに、
量子ゲートの置換パターンを探索し、
量子ゲートの前記置換パターンを識別して、量子ビットマッピングとゲートマッピングを実行して、量子回路と量子回路ゲートのテンプレートとの間の一致を見つけることにより、量子ゲートの前記置換パターンの量子コストが、量子ゲートの前記識別されたパターンの量子コスト未満となるように、量子ゲートの前記識別されたパターンを置換し、
ここで、前記ゲートマッピングは、前記量子回路のグラフィカルな表現上で定義される量子回路ゲートのタイプと順序をマッチングさせることを含み、
量子ゲートの前記識別されたパターンを量子ゲートの前記置換パターンで置換するアルゴリズムを実行することを指示するように構成されている、
オプティマイザ。
【請求項16】
前記テンプレートライブラリは、量子回路ゲートの前記識別されたパターンの前記量子コストと、量子回路ゲートの前記置換パターンの前記量子コストをそれぞれ表す抽象データ構造を格納する、請求項15に記載のオプティマイザ。
【請求項17】
量子回路ゲートの前記識別されたパターンの前記量子コストと、量子回路ゲートの前記置換パターンの前記量子コストは、カスタマイズ可能なコスト関数に従って、それぞれの値が割り当てられる、請求項15に記載のオプティマイザ。
【請求項18】
量子ゲートのそれぞれのパターンの特定の特性が変更可能である、請求項15に記載のオプティマイザ。
【請求項19】
前記テンプレートライブラリ内のテンプレートは、回路トポロジを修正するために並列ゲートを用いて生成される、請求項15に記載のオプティマイザ。
【請求項20】
前記テンプレートライブラリ内のテンプレートは、量子回路深さを低減するために並列ゲートを用いて生成される、請求項15に記載のオプティマイザ。
【発明の詳細な説明】
【技術分野】
【0001】
本明細書で説明する実施形態は、一般に、古典的プロセスによって構築される量子回路の最適化に関する。
【背景技術】
【0002】
量子コンピュータは、データを処理するために、重合せや絡み合いなどの量子力学的現象を利用した計算システムである。データが2つの確定状態(「0」または「1」)のうちの一方で二進数(ビット)に符号化されるデジタルコンピュータとは異なり、量子計算は、データが量子ビット(以下、「キュービット」)に符号化されることを必要とし、キュービットに対して、単一の量子ビットは、2つの量子ビット状態のうちの「1」、「0」、または任意の量子重合せを表すことができる。一般に、N個の量子ビットをもつ量子コンピュータは、同時に最大2個の異なる状態の任意の重合せであってもよい。すなわち、量子ビットのペアは、4つの状態の任意の量子重合せであってもよく、3つの量子ビットは、8つの状態の任意の重合せであってもよい。
【0003】
大規模量子コンピュータは、デジタルコンピュータ(あるいは、本明細書では「古典的コンピュータ」と呼ぶ)よりも、はるかに迅速に、特定の問題を解決する。量子コンピュータの操作では、量子ビットを制御された初期状態に設定することによって、計算を初期化することができる。これらの量子ビットを操作することにより、量子アルゴリズムと呼ばれる、解くべき問題に対する解を表す量子論理ゲートの所定のシーケンスが実現される。Shorのアルゴリズム、Simonのアルゴリズムなどの量子アルゴリズムは、可能などんな古典的アルゴリズムよりも効率的に実行できる。
【発明の概要】
【発明が解決しようとする課題】
【0004】
特定の問題を解決する際の量子コンピュータの固有の利点に基づいて、その強みを効率的に費用対効果良く活用するように量子コンピュータをプログラミングすることが課題となっている。
【課題を解決するための手段】
【0005】
一実施形態では、量子回路を最適化する方法は、機能を実行するように意図された量子回路ゲートのセットを識別するステップと、テンプレートライブラリから、その機能も実行する量子回路ゲートのテンプレートを見つけるステップと、量子回路ゲートの識別されたセットを量子回路ゲートのテンプレートと置換するステップと、を含む。
【0006】
別の例示的な実施形態では、コンピュータ可読媒体は、実行時に、デジタル計算プロセッサに、量子回路の少なくとも部分を受け取ることと、量子回路のその受け取った部分から、事前に生成されたテンプレートライブラリからパターンの一部とマッチングする量子ゲートのパターンを識別することと、量子ゲートの置換パターンを求めて、テンプレートライブラリを探索することと、量子ゲートの置換パターンの量子コストが、量子ゲートの識別されたパターンの量子コストよりも低いことを決定することと、量子ゲートの識別されたパターンを量子ゲートの置換パターンに置換することを実行させる命令を格納する。
【0007】
さらに別の実施形態では、オプティマイザは、以前に生成されたテンプレートライブラリからパターンの少なくとも一部とマッチングする量子ゲートのパターンを識別する量子回路アナライザを含み、テンプレートライブラリは、アルゴリズムを実行して、量子ゲートの置換パターンを探索し、量子ゲートの置換パターンを識別して、量子ゲートの置換パターンの量子コストが、量子ゲートの識別されたパターンの量子コスト未満であると決定された場合に、量子ゲートの識別されたパターンを置換し、量子ゲートの識別されたパターンを量子ゲートの置換パターンで置換する。
【0008】
上述の発明の概要は、例示的なものにすぎず、決して限定的なものであることを意図するものではない。上述の例示的な態様、実施形態、および特徴に加えて、さらなる態様、実施形態、および特徴は、図面および以下の詳細な説明を参照することによって、明らかになるであろう。
【0009】
以下の詳細な説明では、実施形態は、例示としてのみ説明される。なぜなら、様々な変更および修正は、以下の詳細な説明から当業者には明らかになるからである。異なる図面における同じ参照番号の使用は、類似または同一の項目を示す。
【図面の簡単な説明】
【0010】
図1】本明細書に記載されるような、複数の要素を有するテンプレートの例示的な実施形態を表す量子回路図を示す。
図2A】本明細書に記載されるように、複数の要素を有する入力回路の例示的な実施形態を表す量子回路図を示す。
図2B】本明細書に記載される少なくともいくつかの実装に従って、テンプレートベースの最適化によって得られる最適化された回路を表す回路図を示す。
図3】本明細書に記載される少なくともいくつかの実施形態に従って配置された量子回路が最適化された例示的な古典的計算システムを表すブロック図を示す。
図4】本明細書で説明する少なくともいくつかの実施形態に従って配置された例示的な古典的計算システムオプティマイザを表すブロック図を示す。
図5】古典的計算環境において、本明細書で説明する少なくともいくつかの実施形態に従って配置された量子回路を最適化するための例示的な処理フローを示す。
図6】量子回路を最適化するプロセスおよびサブプロセスのいずれかが、コンピュータ可読媒体上に格納された実行可能命令として実装され得る例示的な計算実施形態を示す。
【発明を実施するための形態】
【0011】
以下の詳細な説明では、説明の一部を形成する添付の図面を参照する。図面において、同様の記号は、文脈が別段の指示をしない限り、典型的には、同様のコンポーネントを識別する。さらに、特に断らない限り、各連続する図面の説明では、文脈をより明確にして、現在の例示的な実施形態のより実質的な説明を提供するために、1つ以上の以前の図面からの特徴を参照することもある。さらに、詳細な説明、図面、および特許請求の範囲に記載される例示的な実施形態は、限定することを意味しない。本明細書に提示される主題の精神または範囲から逸脱することなく、他の実施形態を利用することができ、他の変更を行うことができる。本開示の態様は、本明細書で一般的に説明され、図面に示されるように、多種多様な異なる構成で配置され、置換され、組み合わされ、分離され、設計され得ることも、そのすべてが本明細書で明示的に企図されることも容易に理解されるであろう。
【0012】
本明細書に記載されるのは、量子回路が、例えばマッピング置換技術を使用する量子ゲートテンプレートのアルゴリズム合成によって単純化される、システム、装置、アプリケーション、プログラム、および方法のうちの1つ以上において具現化されるアプローチである。
【0013】
本明細書において、以下の用語は、それらの許容される意味に加えて、以下のように使用され得る。
【0014】
「古典的計算」、「古典的プログラム」、「デジタル計算」、「デジタルプログラム」、またはそれらの変化形は、二進数に変換されたデータの計算/処理を指すことができる。
古典的計算プロセッサには、中央処理ユニット(CPU)、グラフィカル処理ユニット(GPU)、テンソル処理ユニット(TPU)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイなど、それらの束縛されない置換(permutations)を含むことができるが、これらに限定されない。その非限定的な例は、並列化され、マルチコア古典的コンピュータ上で実行され得る古典的最適化関数、並列計算を実行するためのGPUを有する古典的コンピュータなどを含み得る。
【0015】
「量子計算」またはその変化量は、量子ビットに符号化されたデータの計算/処理を指すことができる。量子計算は、量子ビットを利用して計算を実行し、古典的計算よりも劇的に速い結果を生成するか、あるいは古典的計算では扱いにくい問題を扱いやすくすることができる結果を生成する。本明細書に記載される実施形態は、技術が進展するにつれて、さらに高速で、より効率的な量子計算システムでの実装を確かに意図している。
【0016】
「環境」とは、プログラムを実行する際に、例えば、ライブラリ、他のプログラム、他のハードウェアなどのユーティリティを利用することができるコンポーネントが見出される計算環境を指すことがある。したがって、本明細書では、古典的計算環境、量子計算環境などを参照することができる。
【0017】
「量子ゲート」は、制御された相互作用を指すことがあり、その相互作用は、量子計算システム内の量子ビットの状態および/または位相を操作し、したがって、システムの情報内容を変更する。
【0018】
「量子回路」は、一組の量子ビットに作用する一連の量子ゲート操作を指し得る。歴史的に、その名は、量子アルゴリズムが一連の量子論理ゲートとして表現され、伝統的な回路設計における古典論理ゲートに類似していることから来ている。
【0019】
量子情報処理(QIP)アルゴリズムは、量子回路を使用して表すことができる。抽象ゲート動作は、物理レベルで実施されるとき、量子ビット状態を操作するハードウェア固有の動作のセットにコンパイルされなければならないQIPアルゴリズムの設計および構築のために利用されてきた。この文脈では、論理ゲートは抽象的な設計指向オペレーションを指すことができ、物理ゲートはハードウェア固有の実装を指すことができる。
【0020】
一般に、論理ゲートには、アルゴリズムの機能性の複数の(一意でない)表現が存在し得る。所与の量子回路については、グローバル位相係数内に、同じ機能を表現する他の論理表現が存在し得る。これらの回路は、量子計算の目的のために互いに数学的に等価であり得るが、それらのそれぞれの性能特性は、実際のハードウェアで実施される場合には異なる場合がある。すなわち、同じ計算状態の進化を引き起こす複数の等価回路が存在する可能性があるが、いくつかの実際的な表現は、物理ゲートにマッピングされたときに、他の表現よりも良好に機能する可能性がある。
【0021】
「量子コスト」は、物理ゲートとしてマッピングされ実行される論理回路の予想される性能ペナルティを指すことがあり、したがって、性能が低いと見なされる量子回路の論理表現は、量子コストが高いと言われる。
【0022】
したがって、本明細書で開示され、列挙されるオプティマイザ実装は、1つ以上の回路表現を操作することによって、期待されるコストを削減する。本明細書で説明される装置、コンポーネント、システム、方法、およびプログラムは、抽象回路を、より低い量子コストを有し、したがって、量子処理により適した論理的に同一の表現に変換する、古典的計算オプティマイザに関する。
【0023】
論理ゲートが物理ゲートにマッピングされるプロセスは、コンパイラステップまたはコンパイルと呼ばれることがある。論理表現を選択するプロセスで、好ましいプロセス、すなわち、最低コストのプロセスは、最適化と呼ばれることがある。各論理ゲートシーケンスの量子コストは、コンパイルステップの方法に依存し得る。したがって、論理回路の最適化を検討する場合、一貫したコンパイルプロセス、したがって、最適化のために量子コスト関数の一貫した定義が仮定されてもよい。
【0024】
本明細書で説明する例示的な実施形態によれば、量子計算は、反復プロセスを実行することを含むことができ、そこで、1つ以上の量子回路は、量子計算環境で実行するために古典的計算環境で書き込むことができる。使用可能なこのような古典的計算環境の非限定的な例は、デスクトップコンピュータ、ラップトップコンピュータ、モバイルデバイス、仮想現実環境などを含む。量子回路は、ネットワーク、例えば、インターネットを介して、量子計算デバイスに提出することができ、そこで、例えば、メインフレーム計算デバイスのバッチ処理と同様に、1つ以上の量子回路は、他の量子回路とともに待ち行列に入れることができる。待ち行列に入れられた量子回路は、順番に実行されてもよい。
【0025】
上述のように、QIPアルゴリズムは、それにもかかわらず、同じ機能性を記述する異なる量子回路によって、様々に表現され得る。理論的には、誤差、デコヒーレンス、ノイズなどを伴わずに、同じアルゴリズムのこれらの様々な回路表現を実行することができる量子コンピュータは、忠実に、同一の結果を生み出す。しかしながら、実際には、物理量子計算システムは、ある表現の下では別の表現と比較して、より誤差が生じやすく、その結果、理想的な結果との一致度が変化し、結果が異なることがある。したがって、任意の量子プログラムのコンパイラで、論理ゲートを使用して設計され、量子コンピュータ上での実行のために提出されたものは、最初に論理回路をより低コストの表現に変換することによって、コスト削減の恩恵を受けることができる。
【0026】
したがって、本明細書に記載される実装は、主回路内のゲートのサブリスト、すなわち、パターンを見つけることを含み得る。その動作は、より良い物理的結果を達成するゲートのセットで、すなわち、量子コストを削減するゲートのセットで、パターンを置き換えることによって、改善することができるが、その論理的機能は、その他の点で同等である。これらの検索と置換パターンは、以前に生成されたテンプレートアイデンティティ、すなわち、テンプレートの表現である。
【0027】
本明細書において参照されるように、テンプレートは、理想的なシステムにおける量子システム状態に正味の影響を及ぼさないゲートのリストとみなすことができる。すなわち、アイデンティティ操作、例えば、2つの直列のNOTゲートは、非操作と等価である。
テンプレートは、グローバル位相内で、アイデンティティを形成するゲートのリストとみなすこともできる。複数の量子ビットにまたがる多数のゲートを有する非自明なテンプレートを事前に生成して利用し、入力回路を、より少ないゲートを有する同一回路への入力回路および/または計算効率がより良く、またはコスト効果の高い回路解決策へと低減することができる。テンプレートは、典型的には、ゲートのリングとして定義される。その理由は、ユニタリ演算子の積U…Uがアイデンティティに評価されるとき、積の任意の巡回置換もアイデンティティだからである。ここで、Uは第nの演算子を示し、n=1、2、…、nである。
【0028】
図1は、本明細書に記載されるような、複数の要素を有するテンプレートの一例を表す量子回路図100を示す。CNOTゲート110、120、130、140、および150は、NOTゲートを表す記号
【数1】
で表され、これらは、コントロールを表す黒丸に接続している。本明細書に記載され、列挙された実施形態および実装は、数量において、図1に示されたものに限定されない。
【0029】
テンプレート100は、アイデンティティ操作を評価する。すなわち、図1の非限定的な例示的実施形態では、CNOTゲート110、120、および130は、CNOTゲート140および150を含む回路の残りの部分の逆で置換することができる。これは、アイデンティティ操作の機能性の単純な拡張である。なぜなら、アイデンティティである2つの演算子の積は、一方の演算子が他方の演算子の逆数であることを意味するからである。
【0030】
例示的なテンプレート100は、3つの第一のCNOTゲートパターン110、120、および130にマッチングする量子ゲートパターンを有する任意の入力量子回路内のCNOTゲートの数を、1つ減らす役割を果たすことができ、ゲートパターンを、CNOTゲート140および150を含むサブ回路の逆に効果的に置換する。本明細書で記載され、列挙されるように、テンプレートベースの量子回路最適化の適用によって、入力量子回路においてパターンがより多く発生するほど、量子ゲート数がより少なくなる。量子ゲートの数は、量子コストの例とみなすことができる。
【0031】
入力量子回路は潜在的に多くの既知のゲートパターンを含み、タイムリーに管理することが必要なので、テンプレートベースの最適化における古典的計算効率に対するニーズは、必須である。既知のパターンを効率的に識別するために、量子回路の有向非巡回グラフ(DAG)表現は、選択した量子ビット線に沿ってゲート接続性パターンを露出するように作成することができる。
【0032】
所与のテンプレート回路にマッチングする入力回路内のサブ回路を識別するために、2つのマッピング、すなわち、量子ビットマッピングおよびゲートマッピングを実行する。
量子ビットマッピングは、入力回路とテンプレート回路との間で量子ビットラベルをマッチングさせることを含む。ゲートマッピングは、入力回路とテンプレート回路との間で、回路のDAG表現上で定義される量子ゲートのタイプと順序をマッチングさせることを含む。2つのマッピングが完了すると、識別を行うことができ、テンプレートベースの最適化を適用することができる。
【0033】
識別情報の一例として、また、上述の実施形態および実装を文脈化するために、例示的なイラスト1およびイラスト2を以下に示し、説明する。
【0034】
イラスト1:テンプレートから回路への量子ビットマッピング
【表1】
【0035】
イラスト2:ゲートパターンのマッチング
【表2】
【0036】
イラスト1およびイラスト2の例は、一般に、入力回路を走査し、格納されたテンプレートとのマッチングを識別し、量子コストを削減するために、格納されたテンプレートを識別されたパターンに置換することに関する。
【0037】
マッチングは、テンプレート量子ビットから回路量子ビットへの候補マッピングを構築するDAG探索として、実装することができる。テンプレートを入力回路のゲートにパターンマッチングさせるために、非決定性有限オートマトン、すなわちNFAは、置換前にゲートマッピングを評価することもできる。正規表現マッチングに基づくNFAを使用して、ゲートマッピングを計算することができる。
【0038】
図2Aは、CNOTゲート210a、240a、260a、270aを含む複数の要素を有する入力回路の一例を表す量子回路図200aを示す。ここで、R(a)は単一キュービットの角度a(R(a)220a)だけz回転したゲートに対応し、Hはアダマールゲート(H 230a)を示し、
【数2】
は単一キュービットNOTゲート250aに対応する。
【0039】
例示的テンプレート100とマッチングする回路200a内のサブ回路を識別するために、CNOTゲート240aは、非限定的な例では、シードゲートとみなすことができる。この例におけるシードゲートの選択に従って、量子ビットマッピングは、テンプレート100内の第一および第二の量子ビットが、それぞれ、例示的な入力回路200a内の第二および第三の量子ビットにマッピングされることを読み取る。シードゲート240aから右にDAG探索を行い、CNOTゲート240aのターゲットが適用される量子ビット線として回路200a内の上から第三の量子ビット線に沿うと、NOTゲート250aの次の量子ゲートに遭遇する。交換規則を使用して、CNOTゲート240aがNOTゲート250aと交換することを決定することができる。したがって、NOTゲート250aは識別されるべきパターンの一部ではないが、識別プロセスは終了しない。その理由は、例示的なテンプレート100によれば、マッチングしないゲート250aは、シードゲート240aがテンプレートパターン100を形成するために依然として使用できる可能性があるように交換され得ることが決定されているからである。回路200a内の同じ第三の量子ビット線に沿ってDAG探索を続けると、所望のパターン100に適合するCNOTゲート260aおよび270aが見つかり、一方、量子ビットマッピング、すなわち、テンプレート100内の第三で最後の量子ビットを回路200a内の第四で最後の量子ビットにマッピングすることに成功し、識別プロセスは終了することができる。その理由は、ゲート240a、260a、および270aの識別されたパターンが量子ビットマッピングおよびゲートマッピングの両方に従って、所望の多数(3つ)のテンプレート100とマッチングするからである。
【0040】
識別プロセスは、一度に1つのテンプレートに対して、または並行して複数のテンプレートに対して実行することができる。少なくともいくつかの例示的な実装によれば、識別プロセスは、テンプレート回路から入力回路への、またはその逆の候補マッピングを構築するDAG探索として実装され得る。すなわち、識別プロセスは、入力回路からのマッピングを既知のテンプレートセットに適用することによって実装することもできる。
【0041】
図2Bは、回路200a内の上記の識別されたパターンに対してテンプレート100を使用して、テンプレートベースの最適化を適用することによって得られた最適化された回路を表す回路図200bを示す。ゲート240a、260a、および270aの識別されたパターンは、ゲート220bおよび260bを含む低コスト回路と置換することができる。これによって、CNOTゲートの数を3から2に減らすことができる。CNOTゲート220bは、回路200bの第二および第四の量子ビット線に作用するので、回路200bの第二および第四の量子ビット線に作用しないゲートを通って交換することができる。ゲート230b、240b、および250bは、回路200bの第三の量子ビット線に適用され得る単一の量子ビットゲートである。したがって、CNOTゲート220bは、CNOTゲート210bとCNOTゲート260bとの間の任意の場所に配置することができる。
【0042】
使用され得る別の量子コスト測定基準は、量子回路深さである。タイミング、レーザ振幅および位相誤差、電界ドリフトおよび加熱などの系統誤差、および完全な状態デコヒーレンスに対する尤度などの特定の誤差は、いずれも時間の経過とともに増加するので、回路実行時間は量子計算性能において重要な考慮事項であることに留意されたい。したがって、各ゲートの量子コストの合計に加えて、回路性能の第二の発見的手法(heuristic)は、回路実行時間を著しく減少させること、あるいは最小化することさえ含み得る。実際の実行時間はハードウェアレベルのパラメータに依存するが、回路の開始から終端までの最も長い接続経路とみなすことができる回路深さは、実行時間を推定するために使用することができる。
【0043】
回路深さは、回路のDAG表現における最長経路を決定することによって計算することができ、長さは、各経路上で遭遇するゲートの数、経路に沿った量子コストの総和、または他の何らかの構成された値とみなされる。絡み合いゲートは、絡み合い量子ビットのそれぞれのペア間の量子ビット接続性、すなわち、回路図において量子ビット間の縦線を誘起し得るが、利用可能な完全に接続されたトポロジを有すると、特定の量子ビットは、現在の量子アルゴリズム設計において慣例的に行われている逐次絡み合いではなく、並列に絡み合ってもよい。1つ以上のペアワイズゲートを順方向に交換し、それらを1つ以上のペアワイズゲートと単一の並列操作にマージすることにより、回路深さを低減することができる。このような操作は、例えば、2つ以上の規則的な絡み合いゲートと、それに続く並列バージョンとを有するテンプレートとして表すことができる。さらに別の例として、最適化された回路210bを出力する回路210a上で実行された上述のテンプレートベースの最適化は、絡み合いゲート210bおよび220bが並列に実装され得ることを示す。事前最適化回路210aの2量子ビット回路深さは4であり、これは、事後最適化回路210bの事後最適化回路深さ2と比較することができ、したがって、回路深さを4から2に低減する。したがって、本明細書で明示的および暗示的に説明される解決策は、並列ゲートを介して回路深さ低減に適用され得る。
【0044】
テンプレートベースの最適化は、量子ビット接続性のトポロジを変更することができるので、例えば、最適化された回路が実装される基礎となるターゲット量子ハードウェアが、新しく導入された接続性をネイティブに実装することができる場合に、ゲートの数および回路深さの両方を含め、量子コストにおけるさらなる回路最適化を容易にするために、接続性トポロジを保存する量子回路オプティマイザと連携して使用することができる。すなわち、本明細書で記載され、列挙される最適化は、量子回路コンパイルおよび追加の量子回路最適化方法と組み合わせて、パイプラインで適用されてもよい。テンプレートベースのオプティマイザを含む異なる量子回路オプティマイザ間の複数の反復は、所与の最適化戦略について最適化された回路を出力するように、例えば、量子コストにわたるさらなる最適化が達成されなくなるまで実行されてもよい。
【0045】
トラップイオンの全対全接続性は、並列ゲートを含む量子回路、または並列ゲートを含むように変換され得る量子回路の効率的な実装を可能にする。並列ゲートは、2量子ビットの量子絡み合いゲートの一般化である。標準的な絡み合いゲート、例えば、Molmer-Sorensenまたは「MS」ゲートは、キュービットの単一ペア上で作動して、多重量子ビット状態の分離不可能な重ね合せを生成してもよい。このような演算は、量子アルゴリズムにおいて、古典的計算では実現不可能で複雑な問題領域を探索するために利用される。
【0046】
並列ゲートは、単一ペアではなく、複数のペアに同時に作用することができる。絡み合いゲートを並列に実装することに関連する課題は、他のすべてのペアが影響を受けないままにしながら、対象量子ビット上で動作することである。絡み合いを並列に実行することは、せいぜい、単一ペアの性能コストの一定倍のコストになることがある。したがって、並列ゲートは、回路実行のための集合量子リソース要求を低減する第二のオプティマイザ機能を提供する。さらに、トラップイオン量子コンピュータの全対全接続性は、複数の任意のペアの間の絡み合いゲートの同時実装を可能にする。
【0047】
例えば、図2Aおよび図2Bに実証された量子コストダウンに関連して、テンプレートライブラリを生成するための方法が、本明細書に記載され、列挙される。幅優先探索(BFS)を使用するジェネレータの例示的な実装は、以下のように描かれ、説明される。
【表3】
【0048】
上記の例に示されるように、テンプレートライブラリを生成するためのBFSは、テンプレートが生成されるべき量子ビットの数を選択することによって実行されてもよい。選択された数の量子ビットに対して、テンプレートライブラリを生成するために考慮されるように選択された可能なゲートのセットが生成される。テンプレートライブラリ生成のために選択されたゲートをベアゲート(bare gate)として参照すると、BFSは、ツリーのルートが空である第一の子レベルにおけるすべてのベアゲートを考慮することによって開始する。次に、ライブラリ生成は、ルートからリーフまで始まる分岐に従って定義されたすべての完了分岐をチェックし、分岐に沿って現れる順に、完了分岐の経路内のすべてのベアゲートの積が存在するかどうか、すなわち、アイデンティティをもたらすかどうかを判定する。対象分岐がアイデンティティを評価しない場合、探索は、分岐に沿って継続する。対象分岐がアイデンティティと評価された場合、探索は、分岐上で終了し、分岐に対応するベアゲートの積がテンプレートとしてテンプレートライブラリに記録される。所与のレベルのすべての分岐がチェックされたときに、終了されない分岐が残っている場合、次の子レベルがそれらの分岐に追加される。BFSは、さらなる探索のために残された分岐がもはや存在しなくなると終了し、すべての分岐がテンプレートライブラリの生成のために考慮される。
【0049】
一例では、上述のBFS方法を最適化して、BFSのランタイムコストを低減することができる。例えば、子レベルが追加されると、テンプレートベースの最適化は、BFSの時点でテンプレートライブラリに格納されているテンプレートを有するすべての完了分岐に適用される場合がある。分岐のいずれかがテンプレートベースの最適化、例えばTを許可する場合、分岐は、そのような分岐が次善のテンプレートを表すので、探索から削除されてもよい。すなわち、分岐に沿った探索が継続する場合、この分岐は、U…Um+1…Um+Mm+M+1…Uの形式のテンプレートにつながる。ここで、Um+1…Um+Mは、識別されたテンプレートTである。したがって、より短く最適なテンプレートU…Um+M+1…Uは、入力量子回路のテンプレートベースの最適化の適用中に、最初にテンプレートUm+1…Um+Mを考慮し、次いで、U…Um+M+1…Uを考慮することによって、次善のテンプレートを置換することができる。これは、BFSにおける計算オーバーヘッドを劇的に減少させる。
【0050】
BFSは、任意の数の量子ビットのテンプレートを探索するために、任意の回数繰り返されてもよい。より大きな数の量子ビット探索を助けるために、以前のより小さな数の量子ビット探索ツリーをメモリに保持することができ、したがって、すべての新たに見つかったテンプレートを、後続の探索のための計算オーバーヘッドを低減するのに役立つテンプレートライブラリの一部として使用することができる。したがって、探索空間は、所与の数の量子ビットおよび考慮される固定された数のベアゲートに対して、テンプレート長さにおいて指数関数的に成長するツリーとして表され得るが、多くの成長する探索経路は、以前に探索されたテンプレートと同等であることが見出され得る。したがって、以前に見つけたテンプレートに対するチェックは、問題サイズをより管理しやすいものに縮小する可能性がある。このサイクルは、所定の時間または反復の後に、終了することができる。
【0051】
図3は、本明細書に記載される少なくともいくつかの実施形態に従って配置された、量子回路が最適化され得る例示的な古典的計算システム300を表すブロック図を示す。図示されるように、構成300は、少なくともプログラムソース305と、プログラム307と、デジタルプロセッサ310とを含む。デジタルプロセッサ310は、少なくとも、プリプロセッサ315と、量子回路オプティマイザ325を含むコンパイラ320と、オペレーティングシステム330とを含むことができる。本明細書に記載される少なくともいくつかの実施形態によれば、ライブラリ410Aは、量子回路オプティマイザ325に関連付けられてもよい。
【0052】
ソース305は、クラウドベースのインフラストラクチャ上でホストされ得る複数のサーバのうちの1つを参照してもよく、このインフラストラクチャを介して、プログラム307をネットワークを介してユーザまたはユーザエンティティから受信してもよい。ソース305は、プログラム307の実行の部分的または完全な結果を受信および/または格納し、そのような結果を、同じくネットワークを介して、ユーザまたはユーザエンティティに返すように、さらに構成され得る。さらに、ソース305は、単一または複数のマシンによって実装されてもよく、プログラム307は、単一または複数の接続またはチャネルを介して送信されてもよい。
【0053】
プログラム307は、ソース305を介して、ユーザまたはユーザエンティティから受信した1つ以上のプログラムを参照することができる。プログラム307は、量子計算環境での実行を意図した古典的環境で書き込まれた、またはプログラムされた少なくとも1つ以上の量子回路を含むことができる。プログラム307のそれぞれは、任意の量子計算言語で部分的または全体的に書かれても、プログラムされてもよく、量子回路のみを含んでもよく、あるいは古典的計算機能と組み合わせた量子回路を含んでもよい。文脈上別段の要求がない限り、説明は、プログラム307の単一の実施形態を参照して続けられるが、複数のプログラムを含む実施形態および実装を排除するものではない。
【0054】
デジタルプロセッサ310は、古典的コンピュータ、処理装置、および/またはプログラム307がアセンブリ、管理、および/または実行される個々のプロセッサであり得る、あるいはそれらを含み得る古典的計算環境の1つ以上の実施形態を指すことができる。
デジタルプロセッサ310は、少なくとも、例えば、マザーボード上に埋め込まれたビデオカード上に、またはCPUダイ上に存在するCPUおよびGPUを含む高性能コンピューティング(HPC)環境を指すことができる。本明細書で説明される実施形態による量子回路の最適化は、その全体がCPU上で、または部分的にCPUおよびGPU上で実行され得る。代替的な実施形態は、本明細書に記載されるものと同等の進化型HPCコンポーネントにおいて実行されてもよい。
【0055】
プリプロセッサ315は、別のプログラムの入力要件に適合するように入力データを修正するように設計、プログラム、またはその他の構成されたプログラムを参照することができる。本明細書で説明する実施形態によれば、プリプロセッサ315への入力は、1つ以上の量子回路を含むことができるプログラム307の少なくとも部分を含む。出力は、デジタルプロセッサ310上の他のプログラムによって使用または実行され得る、入力データの前処理された形態、すなわちプログラム307と称されてもよい。本明細書で説明される実施形態によれば、プリプロセッサ315は、コンパイルに備えてプログラム307が書き込まれるソースコードを前処理するか、さもなければ翻訳(translate)することができる。
【0056】
コンパイラ320は、量子環境での実行に適したプログラム307の少なくとも部分をレンダリングするように設計、プログラム、または構成された最適化コンパイラを指すことができる。当技術分野で知られているように、コンパイラは、効率的な設計を促進し、ソース入力からターゲット出力への変換を補正する操作を実行することができる。したがって、コンパイラ320は、プログラム307のいくつかの属性を最小化または最大化するように、すなわち、量子コストを削減するように設計、プログラム、または他の方法で構成することができる。そのために、コンパイラ320は、プログラム307に含まれる1つ以上の量子回路を、機能的には同等であるがより低い量子コストで対応する量子回路にそれぞれ変換することができるアルゴリズムを使用する量子回路最適化を実装する量子回路オプティマイザ325を含むか、またはそれに関連付けられる。
【0057】
量子回路オプティマイザ325は、機能を実行するように意図されたプログラム307内の量子回路ゲートのパターンを識別し、より低い量子コストで機能も実行する量子回路ゲートのテンプレートのためのテンプレートライブラリ410Aを探索し、識別された量子回路ゲートのセットを量子回路ゲートのテンプレートと置換するように設計、プログラム、または他の方法で構成することができる。
【0058】
少なくともいくつかの実装によれば、量子回路オプティマイザ325は、ライブラリ410Aに格納されたテンプレートパターンを、プログラム307内の量子ゲートの1つ以上の識別されたパターン上にマッピングすることができる。本明細書で参照されるように、パターンマッチングは、量子ビットマッピングおよびゲートマッピングの両方を含むことができる。パターン識別プロセス中に非交換ゲートに遭遇した場合、プロセスは終了し、次のテンプレートは、プログラム307に対応する入力回路にマッピングすることができる。量子回路オプティマイザ325によって記述される手順は、パターンキュービットから回路キュービットへのマッピングと、パターンゲートから回路ゲートへのマッピングとの両方を実行してもよく、その両方とも、回路のサブ領域内から所与のパターン機能性を識別するために利用されてもよい。
【0059】
回路修正アルゴリズムを実施する場合、どのゲートが交換するかについての決定を行うことができる。一般に、ゲートが交換する特定の規則は、一群のゲートと交換するゲートの交換規則を含めて、文書化することができる。しかしながら、ある実装ではデフォルトであり得るハードコード交換規則よりも、交換関係は辞書タイプ構造で定義され、オフラインで修正されてもよく、それゆえ、高速ルックアップ、オンラインまたはオフラインでの任意修正、および複数のソフトウェアパッケージからの使用の簡便性を促進する。
【0060】
少なくとも1つの実施形態によれば、量子回路オプティマイザ325は、プログラム307の少なくとも部分を受け取り、量子関数を実行するようにプログラムされた量子ゲートのパターンを識別し、量子関数を実行するようにもプログラムされた量子ゲートの置換テンプレートのライブラリを探索し、量子ゲートの置換テンプレートの量子コストが量子ゲートの識別されたパターンの量子コストよりも低いかどうかを決定し、決定が肯定的であると仮定して、量子ゲートの識別されたパターンを量子ゲートの置換テンプレートで置換するように設計、プログラム、または他の方法で構成することができる。
【0061】
オペレーティングシステム330は、古典的計算ソフトウェアおよびハードウェアコンポーネントを制御するように設計、プログラム、またはその他の方法で構成することができる。したがって、量子回路最適化の少なくともいくつかの実施形態によれば、OS330は、最適化されたプログラム307を受信し、QPU上での最終的な実行のためにジョブキューに機能を割り当てることを含め、その機能のための処理をスケジューリングおよび/または優先順位付けし、その実行を開始することができる。
【0062】
本明細書において明示的および暗示的に記載される解決策は、量子コストを削減するために、オプティマイザを通して量子アルゴリズムを実行する自動化プロセスを含む。オプティマイザは、実装されると、例えば、量子計算状態のデコヒーレンスの可能性がより低い等価回路を生成することができる。
【0063】
量子回路の最適化が実施され得る量子回路オプティマイザ325の例示的な構成を示す。図示のように、量子回路オプティマイザ325は、最適化コンパイラ320に含まれるか、またはそれに関連付けられ、量子回路オプティマイザ325は、少なくとも受信機405、ライブラリジェネレータ410、コストアービタ415、機能アービタ420、ライブラリマネージャ425、および置換マネージャ430を含む。個別のコンポーネントとして図示されているが、開示された主題の範囲内で企図されながら、様々なコンポーネントは、追加のコンポーネントに分割されてもよく、より少ないコンポーネントに組み合わされてもよく、または完全に排除されてもよい。コンポーネントの各機能および/または動作は、広範囲のハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せによって、個別に、および/または集合的に実装され得ることが、当業者には理解されるであろう。
【0064】
受信機405は、量子計算環境での実行を意図した古典的環境で書かれた、またはプログラムされた1つ以上の量子回路を含むプログラム107を受信するように設計、構成、またはそうでなければ、プログラムされてもよい。
【0065】
ライブラリジェネレータ410は、BFSアプローチを使用して、ライブラリ410Aを生成するように設計、構成、またはそうでなければ、プログラムされてもよい。ライブラリジェネレータ410は、ルートノード(root node)がベアゲートタイプであるツリーに、構成された置換(permutations)を挿入することができる。
新しい第一のレベルノードは、異なるベアゲートのインスタンスであるため、したがって、ツリーの幅が広がる。ライブラリジェネレータ410は、また、任意の数の量子ビットについてこのようなプロセスを繰り返すことができ、より大きな数の量子ビットインスタンスは、より小さな数の量子ビットインスタンスに見出されるテンプレートをメモリ内に保持することから利益を得ることができる。
【0066】
コストアービタ415は、ライブラリ410Aに格納されたテンプレートの量子コストと、プログラム307で識別されたパターンとを決定するアルゴリズムを利用するように設計、構成、またはプログラムされ得る。量子コストは、本明細書で参照されるように、ゲートおよび任意のゲートシーケンスの効率およびリソース消費のカスタマイズされた辞書実装と、リソース支出とに関係し得る。ゲートコストは、例えば、ハッシングを介して一定時間でアクセス可能なキーと値とのペアとして格納されてもよいが、そのような実装は限定的ではない。カスタマイズされたスコアリングスケールを使用して、ゲートおよび/またはゲートのシーケンスにコストを割り当てることができ、数値が大きいほど、コストが大きくなる。したがって、少なくとも1つの例示的な実装によれば、単一ゲートは、コストを比較的低くすることができるが、CNOT/2量子ビットゲートは、それに関連するコストがより高くなり得る。実験結果または実際の経験に基づいて、ゲートまたはゲートシーケンスに対する量子コストの動的調整またはオフライン調整が行われることもある。置換マネージャ425が、プログラム307からのゲートの識別されたパターンをライブラリ410Aからのテンプレートと置換すべき場合、定時ルックアップテーブルは、性能ペナルティを排除する。
【0067】
少なくともいくつかの実装形態によれば、コストアービタ415は、テンプレートが生成または格納されるときに、ライブラリ410A内のそれぞれのテンプレートの量子コストを決定することができる。次に、コストアービタ415は、以下で参照するように、機能アービタによる識別時に、プログラム307内のそれぞれのパターンの量子コストを決定することもできる。
【0068】
機能アービタ420は、受信したプログラム307内でパターン探索を実行し、1つ以上のテンプレートのプログラム307、すなわち1つ以上のターゲット回路への試作マッピングを実行するように設計、構成、またはプログラムすることができる。探索またはマッピングは、一度に1つの関数に対して、または並行して複数の関数に対して実行することができる。さらに、探索またはマッピングは、量子回路の有向非循環グラフ、すなわちDAG表現に対する探索に部分的に依存し、テンプレート量子ビットから回路量子ビットへの候補マッピングを構築することができる。
【0069】
ライブラリマネージャ425は、ライブラリ410Aを検索して、その内部に、機能アービタ420によって受信されたプログラム307で識別されたパターンの機能において、同等なテンプレートが格納されているかどうかを判断するために、設計、構成、またはプログラムされてもよい。すなわち、ライブラリ410Aに格納されたテンプレートのキュービットが、プログラム307に対応する少なくとも1つの量子回路のキュービットにマッピングされ得るように、テンプレートのゲートがプログラム307のゲートにマッピングされ得るかどうかを決定するために、設計、構成、またはプログラムされてもよい。決定が肯定的である場合、格納されたテンプレートを例えば、非決定性有限オートマトン、すなわち、NFAを介して、プログラム307に対応するゲートのサブセットにパターンマッチングするための高速技術を実装するのは、量子回路オプティマイザ325である。テンプレートベースの最適化は、入力量子回路の量子コストを削減するために適用され得る。
【0070】
少なくとも1つの実装によれば、ライブラリマネージャ425は、プログラム307内で識別されたパターンをより低コストのシーケンスに置換できるように、テンプレートのためにライブラリ410Aを検索することができる。パターンは、本明細書で説明するように、ゲート交換関係を格納し、読み取り、評価するための効率的な実装を使用して、特定のゲート交換子が適用される場合にのみ識別可能であってもよい。ゲート交換規則をハードコーディングするのではなく、交換関係は、辞書またはプレフィックスツリーのような抽象データ構造内に定義され、オフラインで修正されてもよく、高速ルックアップ、オンラインまたはオフラインでの任意の修正、および複数のソフトウェアパッケージからの使用の簡便性を促進する。
【0071】
置換マネージャ430は、例えば、プログラム307のトポロジを修正することによって、テンプレートを介してトポロジ突然変異(topology-mutation)を促進するように設計、構成、またはプログラムすることができる。例えば、2つの量子ビットの状態をスワップする量子SWAPゲートは、論理量子ビットの再割り当てとしてトラップイオンシステムで大幅に節約して実装することができる。これは、SWAPゲートが例示的な実装形態では3つのCNOTゲートを含むことができるからである。全対全接続性を活用することができるトラップイオンシステムで容易に利用可能な論理的再割り当て/再マッピングは、このシステムにおける再マッピングの量子コストがゼロであるので、低コストになる。したがって、SWAPゲートとして作用する3つのCNOTゲートが、最適化コンパイル中に入力回路内で識別されると、置換マネージャ430は、識別されたテンプレートを除去し、入力回路内の残りのゲートのキュービットを切り替えることができる。
【0072】
図5は、量子回路最適化の少なくとも部分が、上述した図3および図4の少なくとも実施形態および実装に従って、実装され得る例示的な処理フロー500を示す。図示されるように、処理フロー500は、システム300に含まれ得るコンパイラ320の様々なコンポーネントによって実行されるサブプロセスを含む。しかしながら、処理フロー500は、そのようなコンポーネントに限定されない。その理由は、本明細書で説明されるサブプロセスのうちの2つ以上を再順序付けすること、サブプロセスのうちの少なくとも1つを削除すること、さらなるサブプロセスを追加すること、コンポーネントを置換すること、または以下の説明において他のコンポーネントに与えられるサブ処理の役割を担う様々なコンポーネントを有することによってさえ、明らかな修正が行われ得るからである、処理フロー500は、ブロック505A、505B、510、515、520、525、および530のうちの1つ以上によって示されるように、様々な動作、機能、またはアクションを含むことができる。これらの様々な動作、機能、またはアクションは、例えば、機能を実行させるプロセッサによって実行可能なソフトウェア、プログラムコード、またはプログラム命令に対応することができる。処理は、ブロック505Aまたはブロック505Bのいずれか、あるいはその両方で開始することができる。
【0073】
ブロック505A(ライブラリを構築する)において、ライブラリジェネレータ410は、テンプレートライブラリ410Aを生成するために、BFSツリーを利用することができる。上述のように、ライブラリ410Aは、プログラム307の少なくとも一部分で使用するために、可能なゲートの1つ以上のリストを格納するゲートライブラリを参照するか、または含むことができる。
【0074】
また、ブロック505Aにおいて、コストアービタ415は、それぞれのテンプレートが生成されるとき、またはそれぞれのテンプレートがライブラリ410Aに格納されるときに、テンプレートの量子コストを同時にまたは逐次的に決定することができる。少なくとも1つの例示的な実装形態によれば、コストアービタ415は、カスタマイズされたスコアリングスケールを利用して、対応するテンプレートが生成または格納される際に、ゲートおよび/またはゲートのシーケンスにコストを割り当てることができる。
【0075】
ブロック505B(プログラムを受信する)において、受信機405は、ソース305からプログラム307を受信することができる。
【0076】
本明細書で説明される実施形態によれば、ブロック505Aおよびブロック505Bにおける処理は、同時に、または連続して、または所定の順序なしで実施されてもよい。処理は、ブロック510に進むことができる。
【0077】
ブロック510(テンプレートパターンマッチングの候補ゲートを識別する)において、機能アービタ420は、受信したプログラム307内でパターン検索を実行することができる。
【0078】
ブロック515(テンプレートライブラリを探索する)において、機能アービタ420は、テンプレートライブラリ410Aに格納されている1つ以上のテンプレートのプログラム307への試作マッピングを実行することができる。パターン識別は、一度に1つのテンプレートに対して、あるいは並列に複数のテンプレートに対して実行することができる。少なくともいくつかの例示的な実装によれば、探索は、テンプレート量子ビットから回路量子ビットへの候補マッピングを構築するDAG探索として実装され得る。処理は、ブロック520に進むことができる。
【0079】
ブロック520(量子コストを比較する)において、コストアービタ415は、対応する量子コストがまだ決定されていない場合、ライブラリ410Aに格納された1つ以上のテンプレートの量子コストを決定するためにアルゴリズムを利用することができ、コストアービタ415は、プログラム307で識別されたパターンの量子コストを決定するために同じアルゴリズムを利用することができる。すなわち、各実装について、共通アルゴリズムを、テンプレートと、そのテンプレートが置換するパターンとの量子コストを決定するために、利用することができる。処理は、決定ブロック525に進むことができる。
【0080】
決定ブロック525(保存するか?)において、コストアービタ415は、量子ゲートの置換パターンの量子コストが、量子ゲートの識別されたパターンの量子コストよりも低いと決定することができる。否定的な決定がなされると、処理はブロック510に戻ることができ、肯定的な決定がなされると、処理はブロック530に進むことができる。
【0081】
ブロック530(置換する)において、置換マネージャ430は、量子ゲートの識別されたパターンを量子ゲートの置換パターンに置換することによって、プログラム107のトポロジを修正してもよい。
【0082】
本明細書に示され、説明される解決策は、プログラム307に含まれるターゲット回路にテンプレートをマッピングするための高速技術、およびターゲット回路内のゲートのサブセットに対して格納されたテンプレートをパターンマッチングするための高速技術に関する。すなわち、プログラム307内の量子回路およびライブラリ410A内に格納されたテンプレートが与えられると、機能アービタ420は、格納されたテンプレートの量子ビットを量子回路の量子ビットにマッピングできるかどうかを決定する。決定が肯定的である場合、それぞれのテンプレートが回路にマッピングされる。修正された回路に生じる新しいパターンから生じるコスト削減を捕捉するために、複数の反復を実行することができる。
【0083】
ライブラリ410Aに格納されたテンプレートパターンは、プログラム307に含まれるターゲット回路上に、回路をステッピングし、ゲートパターンにマッチングする第一のゲートで停止することによってマッピングすることができる。これは、パターン量子ビットからターゲット量子ビットへのマッピングをシードする。他のパターン量子ビットは、DAGに沿ったシードゲートからステップし、最初に、次のパターンゲートにマッチングし、制御を介してシードビットに接続されるゲートを配置することによってマッピングされてもよい。制御ビットについても同様の手順を実行することができる。非交換ゲートに遭遇した場合、またはすべての量子ビットがマッピングされていない場合、プロセスは終了し、次のテンプレートに対するマッピングを実行することができる。
【0084】
図6は、量子ハイブリッド計算のプロセスおよびサブプロセスのいずれかが、コンピュータ可読媒体上に格納されたコンピュータ可読命令として実装され得る例示的な計算実施形態を示す。コンピュータ可読命令は、例えば、本明細書で参照されるようなデバイスのプロセッサによって実行され得る。このデバイスは、特に、量子ハイブリッド計算のためのシステム300および400に対応する上述のアプリケーションおよび/またはプログラムに適用可能な、ネットワーク要素および/またはそれに対応する任意の他のデバイスを有する。
【0085】
非常に基本的な構成では、計算装置600は、通常、1つ以上のプロセッサ602、システムメモリ604、1つ以上の入力コンポーネント606、1つ以上の出力コンポーネント608、ディスプレイコンポーネント610、コンピュータ可読媒体612、および送信機614を少なくとも含むことができる。
【0086】
プロセッサ602は、例えば、マイクロプロセッサ、マイクロコントローラ、デジタル信号プロセッサ、またはそれらの任意の組合せを指すことができる。
【0087】
メモリ604は、例えば、揮発性メモリ、不揮発性メモリ、またはそれらの任意の組合せを指すことができる。メモリ604は、その中に、オペレーティングシステム330、アプリケーション、および/またはプログラムデータを格納することができる。すなわち、メモリ604は、上述の機能または動作のいずれかを実装するための実行可能命令を格納することができ、したがって、メモリ604は、コンピュータ可読媒体とみなすことができる。
【0088】
入力コンポーネント606は、内蔵された、または通信可能に結合されたキーボード、タッチスクリーン、または電気通信デバイスを指すことができる。あるいは、入力コンポーネント606は、メモリ604に格納され得る音声認識プログラムと協働して、計算装置600のユーザから音声コマンドを受信するように構成されるマイクロフォンを含んでもよい。さらに、入力コンポーネント606は、計算装置600に内蔵されていない場合、無線周波数またはブルートゥース(登録商標)を含むがこれらに限定されない近距離通信プロトコルを介して、通信可能に結合されてもよい。
【0089】
出力コンポーネント608は、コマンドおよびデータを外部装置に出力するように構成された、計算装置600に内蔵された、または計算装置600から取り外し可能なコンポーネントまたはモジュールを指すことができる。
【0090】
ディスプレイコンポーネント610は、例えば、タッチ入力機能を有し得るソリッドステートディスプレイを指すことができる。すなわち、ディスプレイコンポーネント610は、入力コンポーネント606の能力と共有または置換され得る能力を含み得る。
【0091】
コンピュータ可読媒体612は、上述の機能または動作のいずれかを具現化する1つ以上のプログラムを格納するように構成された分離可能な機械可読媒体を指すことができる。すなわち、計算装置600の駆動コンポーネントに受信され得るか、そうでなければ、接続され得るコンピュータ可読媒体612は、実行可能命令を格納して、上述の機能または動作のいずれかを実行することができる。これらの命令は、メモリ604によって格納された命令と相補的であっても、そうでなければ、独立していてもよい。
【0092】
送信機614は、計算装置400のために、有線ネットワークまたは直接有線接続として構成されたネットワーク通信リンクを指すことができる。あるいは、送信機614は、有線接続、例えば、無線周波数(RF)、赤外線、ブルートゥース、および他の無線プロトコルとして構成されてもよい。
【0093】
以上から、本開示の様々な実施形態が、例示の目的で本明細書に記載されていることも、本開示の範囲および精神から逸脱することなく、様々な変更を行うことができることも理解されよう。したがって、本明細書で開示される様々な実施形態は、限定することを意図するものではなく、真の範囲および精神は、以下の特許請求の範囲によって示される。
図1
図2A
図2B
図3
図4
図5
図6