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

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

▶ ザ ユニバーシティ オブ シカゴの特許一覧

特許7349175量子コンピュータの命令を最適化するシステム及び方法
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-09-13
(45)【発行日】2023-09-22
(54)【発明の名称】量子コンピュータの命令を最適化するシステム及び方法
(51)【国際特許分類】
   G06N 10/00 20220101AFI20230914BHJP
   G06F 8/41 20180101ALI20230914BHJP
【FI】
G06N10/00
G06F8/41 170
【請求項の数】 21
(21)【出願番号】P 2021514626
(86)(22)【出願日】2019-09-12
(65)【公表番号】
(43)【公表日】2022-01-04
(86)【国際出願番号】 US2019050870
(87)【国際公開番号】W WO2020056176
(87)【国際公開日】2020-03-19
【審査請求日】2022-07-07
(31)【優先権主張番号】62/730,813
(32)【優先日】2018-09-13
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】62/773,581
(32)【優先日】2018-11-30
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】521105020
【氏名又は名称】ザ ユニバーシティ オブ シカゴ
(74)【代理人】
【識別番号】110001379
【氏名又は名称】弁理士法人大島特許事務所
(72)【発明者】
【氏名】チョン、フェデリック・ティー
(72)【発明者】
【氏名】シー、ユーノン
(72)【発明者】
【氏名】レオン、ネルソン
(72)【発明者】
【氏名】ゴーカレー、プラナヴ
(72)【発明者】
【氏名】ホフマン、ヘンリー
(72)【発明者】
【氏名】シュースター、デイヴィッド
【審査官】渡辺 順哉
(58)【調査した分野】(Int.Cl.,DB名)
G06N 10/00
G06F 8/41
(57)【特許請求の範囲】
【請求項1】
量子プロセッサ上で命令をコンパイルして実行する量子コンピュータシステムであって、
複数の量子ビットを含む量子プロセッサと、
複数の命令をソース言語で定義している量子プログラムを記憶した古典的メモリと、
前記古典的メモリに通信可能に結合された古典的プロセッサと、を備え、
前記古典的メモリは、前記古典的プロセッサによって実行されたときに、前記古典的プロセッサに実行させるコンピュータ実行可能命令を記憶しており、
前記コンピュータ実行可能命令は、
前記量子プログラムを、中間言語の論理アセンブリ命令にコンパイルするステップと、
前記論理アセンブリ命令を、命令の複数の論理ブロックに集約するステップと、
前記複数の論理ブロック間の可換性に基づいて、前記量子プログラムの論理的スケジュールを生成するステップと、
前記論理的スケジュールに基づいて暫定的な物理的スケジュールを生成するステップであって、前記暫定的な物理的スケジュールは、前記論理的スケジュール内の前記論理アセンブリ命令の、前記量子プロセッサの前記複数の量子ビットへのマッピングを含む、該ステップと、
前記暫定的な物理的スケジュール内の並列性が低下しない命令を集約して、更新された物理的スケジュールを生成するステップと、
前記量子プログラムの前記集約された命令のための最適化された制御パルスを生成するステップと、
前記最適化された制御パルスと前記更新された物理的スケジュールとを用いて前記量子プロセッサ上で前記量子プログラムを実行するステップと、
を含む、システム。
【請求項2】
請求項1に記載の量子コンピュータシステムであって、
前記コンピュータ実行可能命令は、
前記論理アセンブリ命令から前記量子プログラムのゲート依存性グラフを生成するステップをさらに含み、
前記論理アセンブリ命令を、命令の複数の論理ブロックに集約する前記ステップは、前記ゲート依存性グラフにおける可換性を決定するステップをさらに含み、
前記論理アセンブリ命令の前記複数の論理ブロックへの集約は、前記ゲート依存性グラフ上で定義された集約規則に基づいて行われる、システム。
【請求項3】
請求項2に記載の量子コンピュータシステムであって、
前記ゲート依存性グラフにおける可換性を決定する前記ステップは、前記ゲート依存性グラフ内に1以上の中間集約命令を形成するステップを含む、システム。
【請求項4】
請求項2または3に記載の量子コンピュータシステムであって、
前記コンピュータ実行可能命令は、
前記量子プログラムの各命令の優先順位値を決定するステップをさらに含み、
該ステップは、
特定の命令について、前記ゲート依存性グラフから該特定の命令の各親を識別するステップと、
前記特定の命令の識別された各親について、該親の優先順位値から該親のレイテンシを減算し、それによって、前記特定の命令の潜在的な優先順位値を識別するステップと、
前記識別された親の前記識別された潜在的な優先順位値のうちの最小の潜在的な優先順位値を、前記特定の命令に割り当てるステップと、
前記割り当てられた優先順位値に基づいて、前記量子プログラムの各命令をスケジューリングするステップと、を含む、システム。
【請求項5】
請求項2~4のいずれかに記載の量子コンピュータシステムであって、
前記暫定的な物理的スケジュール内の並列性が低下しない命令を集約して、更新された物理的スケジュールを生成する前記ステップは、
前記ゲート依存性グラフ内のクリティカルパスを遅延させない、前記ゲート依存性グラフ内の2以上の命令の集合を伴う単調な動作を識別するステップと、
前記ゲート依存性グラフ内の2以上の命令を集約するステップと、
前記集約された各命令のレイテンシを更新するステップと、
前記ゲート依存性グラフに基づいて、前記集約された命令の回路をスケジューリングするステップと、を含む、システム。
【請求項6】
請求項5に記載の量子コンピュータシステムであって、
前記量子プログラムを実行する前記ステップは、前記集約された命令の前記回路に基づいて、前記量子プロセッサに制御パルスシーケンスを送信するステップをさらに含む、システム。
【請求項7】
請求項1~6のいずれかに記載の量子コンピュータシステムであって、
前記論理アセンブリ命令を、命令の複数の論理ブロックに集約する前記ステップは、その積が対角ユニタリである論理アセンブリ命令の第1のセットを集約するステップをさらに含む、システム。
【請求項8】
量子コンピュータの命令をコンパイルするコンピュータ実施方法であって、
当該方法は、古典的メモリと通信する古典的プロセッサを使用して実施され、
当該方法は、
複数の命令をソース言語で定義している量子プログラムをユーザから受け取るステップと
前記量子プログラムを、中間言語の論理アセンブリ命令にコンパイルするステップと、
前記論理アセンブリ命令を、命令の複数の論理ブロックに集約するステップと、
前記複数の論理ブロック間の可換性に基づいて、前記量子プログラムの論理的スケジュールを生成するステップと、
前記論理的スケジュールに基づいて暫定的な物理的スケジュールを生成するステップであって、前記暫定的な物理的スケジュールは、前記論理的スケジュール内の前記論理アセンブリ命令の、量子プロセッサの複数の量子ビットへのマッピングを含む、該ステップと、
前記暫定的な物理的スケジュール内の並列性が低下しない命令を集約して、更新された物理的スケジュールを生成するステップと、
前記量子プログラムの前記集約された命令のための最適化された制御パルスを生成するステップと、
前記最適化された制御パルスと前記更新された物理的スケジュールとを用いて前記量子プロセッサ上で前記量子プログラムを実行するステップと、
を含む、方法。
【請求項9】
請求項8に記載の方法であって、
前記論理アセンブリ命令から前記量子プログラムのゲート依存性グラフを生成するステップをさらに含み、
前記論理アセンブリ命令を集約する前記ステップは、前記ゲート依存性グラフにおける可換性を決定するステップをさらに含み、
前記論理アセンブリ命令の前記複数の論理ブロックへの集約は、前記ゲート依存性グラフ上で定義された集約規則に基づいて行われる、方法。
【請求項10】
請求項9に記載の方法であって、
前記ゲート依存性グラフにおける可換性を決定する前記ステップは、前記ゲート依存性グラフ内に1以上の中間集約命令を形成するステップを含む、方法。
【請求項11】
請求項9または10に記載の方法であって、
前記量子プログラムの各命令の優先順位値を決定するステップをさらに含み、
該ステップは、
特定の命令について、前記ゲート依存性グラフから該特定の命令の各親を識別するステップと、
前記特定の命令の識別された各親について、該親の優先順位値から該親のレイテンシを減算し、それによって、前記特定の命令の潜在的な優先順位値を識別するステップと、
前記識別された親の前記識別された潜在的な優先順位値のうちの最小の潜在的な優先順位値を、前記特定の命令に割り当てるステップと、
前記割り当てられた優先順位値に基づいて、前記量子プログラムの各命令をスケジューリングするステップと、を含む、方法。
【請求項12】
請求項9~11のいずれかに記載の方法であって、
前記暫定的な物理的スケジュール内の並列性が低下しない命令を集約して、更新された物理的スケジュールを生成する前記ステップは、
前記ゲート依存性グラフ内のクリティカルパスを遅延させない、前記ゲート依存性グラフ内の2以上の命令の集合を伴う単調な動作を識別するステップと、
前記ゲート依存性グラフ内の2以上の命令を集約するステップと、
前記集約された各命令のレイテンシを更新するステップと、
前記ゲート依存性グラフに基づいて、前記集約された命令の回路をスケジューリングするステップと、を含む、方法。
【請求項13】
請求項12に記載の方法であって、
前記量子プログラムを実行する前記ステップは、前記集約された命令の前記回路に基づいて、前記量子プロセッサに制御パルスシーケンスを送信するステップをさらに含む、方法。
【請求項14】
請求項8~13のいずれかに記載の方法であって、
前記論理アセンブリ命令を、命令の複数の論理ブロックに集約する前記ステップは、その積が対角ユニタリである論理アセンブリ命令の第1のセットを集約するステップをさらに含む、方法。
【請求項15】
少なくとも1つの古典的プロセッサによって実行されたときに、該プロセッサに実行させるコンピュータ実行可能命令が記憶されたコンピュータ読み取り可能な記憶媒体であって、
前記コンピュータ実行可能命令は、
複数の命令をソース言語で定義している量子プログラムをユーザから受け取るステップと
前記量子プログラムを、中間言語の論理アセンブリ命令にコンパイルするステップと、
前記論理アセンブリ命令を、命令の複数の論理ブロックに集約するステップと、
前記複数の論理ブロック間の可換性に基づいて、前記量子プログラムの論理的スケジュールを生成するステップと、
前記論理的スケジュールに基づいて暫定的な物理的スケジュールを生成するステップであって、前記暫定的な物理的スケジュールは、前記論理的スケジュール内の前記論理アセンブリ命令の、量子プロセッサの複数の量子ビットへのマッピングを含む、該ステップと、
前記暫定的な物理的スケジュール内の並列性が低下しない命令を集約して、更新された物理的スケジュールを生成するステップと、
前記量子プログラムの前記集約された命令のための最適化された制御パルスを生成するステップと、
前記最適化された制御パルスと前記更新された物理的スケジュールとを用いて前記量子プロセッサ上で前記量子プログラムを実行するステップと、
を含む、記録媒体。
【請求項16】
請求項15に記載の記憶媒体であって、
前記コンピュータ実行可能命令は、
前記論理アセンブリ命令から前記量子プログラムのゲート依存性グラフを生成するステップをさらに含み、
前記論理アセンブリ命令を、命令の複数の論理ブロックに集約する前記ステップは、前記ゲート依存性グラフにおける可換性を決定するステップをさらに含み、
前記論理アセンブリ命令の前記複数の論理ブロックへの集約は、前記ゲート依存性グラフ上で定義された集約規則に基づいて行われる、記録媒体。
【請求項17】
請求項16に記載の記憶媒体であって、
前記ゲート依存性グラフにおける可換性を決定する前記ステップは、前記ゲート依存性グラフ内に1以上の中間集約命令を形成するステップを含む、記録媒体。
【請求項18】
請求項16または17に記載の記憶媒体であって、
前記コンピュータ実行可能命令は、
前記量子プログラムの各命令の優先順位値を決定するステップをさらに含み、
該ステップは、
特定の命令について、前記ゲート依存性グラフから該特定の命令の各親を識別するステップと、
前記特定の命令の識別された各親について、該親の優先順位値から該親のレイテンシを減算し、それによって、前記特定の命令の潜在的な優先順位値を識別するステップと、
前記識別された親の前記識別された潜在的な優先順位値のうちの最小の潜在的な優先順位値を、前記特定の命令に割り当てるステップと、
前記割り当てられた優先順位値に基づいて、前記量子プログラムの各命令をスケジューリングするステップと、を含む、記録媒体。
【請求項19】
請求項16~18のいずれかに記載の記憶媒体であって、
前記暫定的な物理的スケジュール内の並列性が低下しない命令を集約して、更新された物理的スケジュールを生成する前記ステップは、
前記ゲート依存性グラフ内のクリティカルパスを遅延させない、前記ゲート依存性グラフ内の2以上の命令の集合を伴う単調な動作を識別するステップと、
前記ゲート依存性グラフ内の2以上の命令を集約するステップと、
前記集約された各命令のレイテンシを更新するステップと、
前記ゲート依存性グラフに基づいて、前記集約された命令の回路をスケジューリングするステップと、を含む、記録媒体。
【請求項20】
請求項15~19のいずれかに記載の記憶媒体であって、
前記論理アセンブリ命令を、命令の複数の論理ブロックに集約する前記ステップは、その積が対角ユニタリである論理アセンブリ命令の第1のセットを集約するステップをさらに含む、記録媒体。
【請求項21】
複数の量子ビットを含む量子プロセッサ上で実行される量子プログラムをコンパイルする量子コンパイルエンジンであって、
複数の命令をソース言語で定義している量子プログラムを記憶した古典的メモリと、
前記古典的メモリに通信可能に結合された古典的プロセッサと、を備え、
前記古典的メモリは、前記古典的プロセッサによって実行されたときに、前記古典的プロセッサに実行させるコンピュータ実行可能命令を記憶しており、
前記コンピュータ実行可能命令は、
前記量子プログラムを、中間言語の論理アセンブリ命令にコンパイルするステップと、
前記論理アセンブリ命令を、命令の複数の論理ブロックに集約するステップと、
前記複数の論理ブロック間の可換性に基づいて、前記量子プログラムの論理的スケジュールを生成するステップと、
前記論理的スケジュールに基づいて暫定的な物理的スケジュールを生成するステップであって、前記暫定的な物理的スケジュールは、前記論理的スケジュール内の前記論理アセンブリ命令の、前記量子プロセッサの前記複数の量子ビットへのマッピングを含む、該ステップと、
前記暫定的な物理的スケジュール内の並列性が低下しない命令を集約して、更新された物理的スケジュールを生成するステップと、
前記量子プログラムの前記集約された命令のための最適化された制御パルスを生成するステップと、
を含む、量子コンパイルエンジン。
【発明の詳細な説明】
【技術分野】
【0001】
(関連出願の相互参照)
本出願は、2018年9月13日に出願された「量子コンピュータのための集約命令をコンパイルするシステム及び方法(System and method for compilation of aggregated instructions for quantum computers)」という標題の米国仮特許出願第62/730、813、及び2018年11月30日出願に出願された「量子コンピュータのための命令を最適化するシステム及び方法(System and method of optimizing instructions for quantum computers)」という標題の米国仮特許出願第62/773、581号に基づく優先権を主張するものである。上記出願の内容の全体は、参照により本明細書中に援用される。
【0002】
(連邦政府による資金提供を受けた研究開発の記載)
本発明は、米国国立科学財団から交付された助金成番号CCF1730449及びPHY1660686の下に、米国政府の支援を受けてなされた。米国政府は本発明において一定の権利を有する。
【0003】
(技術分野)
本開示は、一般に、量子コンピューティングに関し、より詳細には、量子コンピュータのための集約命令をコンパイルするシステム及び方法に関する。
【背景技術】
【0004】
量子コンピューティングの近年の発展により、量子コンピュータは、古典的な扱いにくい問題の解決に近づいた。既存の量子プログラミング言語及びコンパイラは、1量子ビット及び2量子ビット(「qubit」)ゲートから構成される量子アセンブリ言語を使用して、量子コンピュータ上でプリミティブな演算を準備及び実行している。ハードウェア及びソフトウェアにおける最近の進歩としては、IBM社製の50量子ビット量子マシンやGoogle社製の72量子ビットマシンなどのデバイス、並びに、量子近似最適化アルゴリズム(QAOA)や変分量子固有値ソルバー(VQE)などのノイズの多い中間規模量子(「QAOAVQE」)マシン用に調整された古典・量子ハイブリッドアルゴリズムが挙げられる。
【0005】
計算のレイテンシ(待ち時間)は、近未来の量子コンピューティングにおける大きな課題である。従来のコンピュータシステムでは、一般的に、レイテンシを短縮することによって恩恵を受けることができるが(例えば、処理の高速化によってもたらされる若干の性能改善のために)、量子コンピュータシステムでは、レイテンシは、実存的な脅威をもたらす。量子コンピュータシステムでは、出力の忠実度は、レイテンシとともに少なくとも指数関数的に減少する。したがって、近未来の量子コンピュータシステムでは、レイテンシの短縮は、若干の利便性どころではない。むしろ、量子ビットのデコヒーレンスが生じて無用な結果が生成される前に計算を確実に終了させることによって、レイテンシ削減は近未来のマシン上での新しい計算を実際に可能にする。
【0006】
残念ながら、古典的なコンピュータシステムのスタックを反映した既存の量子コンピューティングの抽象化は、レイテンシに大きな影響を与える非効率性をもたらす。このような従来のゲートベースのアプローチでは、プログラムは、1量子ビット及び2量子ビットの演算を利用する量子アセンブリ命令(例えば、ゲート)にコンパイルされる。このような量子アセンブリは、分解アルゴリズムが存在する限られた普遍的な演算セットを提供する仮想的な命令セットアーキテクチャ(「ISA」)を表す。これらのゲートは、その後、基礎となる物理的ハードウェア上で指定された演算を実行する電気信号である制御パルスに変換する必要がある。しかしながら、基礎となる物理的ハードウェアは一般的に、特定のアーキテクチャに関して効率的な物理的実装を可能にする異なる演算セットを実装している。このため、表現論理ゲートと、基礎となる量子コンピュータシステム上で効率的に実行される命令セットとの間に、ミスマッチが生じる。
【0007】
したがって、既存の抽象化の障壁を越えて最適化することによって、大量の量子ビットに対して実用的であるとともに、レイテンシを低減する量子コンパイル技術が求められている。
【発明の概要】
【課題を解決するための手段】
【0008】
一態様では、量子プロセッサ上で命令をコンパイルして実行する量子コンピュータシステムが提供される。本開示の量子コンピュータシステムは、複数の量子ビットを含む量子プロセッサを備える。本開示の量子コンピュータシステムはまた、量子プログラムを記憶した古典的メモリを備える。量子プログラムは、複数の命令をソース言語で定義している。本開示の量子コンピュータシステムは、古典的メモリに通信可能に結合された古典的プロセッサをさらに備える。古典的メモリは、古典的プロセッサによって実行されたときに、古典的プロセッサに実行させるコンピュータ実行可能命令を記憶している。コンピュータ実行可能命令は、量子プログラムを、中間言語の論理アセンブリ命令にコンパイルするステップを含む。また、コンピュータ実行可能命令は、論理アセンブリ命令を、命令の複数の論理ブロックに集約するステップを含む。また、コンピュータ実行可能命令は、複数の論理ブロック間の可換性に基づいて、量子プログラムの論理的スケジュールを生成するステップを含む。また、コンピュータ実行可能命令は、論理的スケジュールに基づいて暫定的な物理的スケジュールを生成するステップを含む。暫定的な物理的スケジュールは、論理的スケジュール内の論理アセンブリ命令の、量子プロセッサの複数の量子ビットへのマッピングを含む。また、コンピュータ実行可能命令は、暫定的な物理的スケジュール内の並列性が低下しない命令を集約して、更新された物理的スケジュールを生成するステップを含む。また、コンピュータ実行可能命令は、量子プログラムの集約された命令のための最適化された制御パルスを生成するステップを含む。また、コンピュータ実行可能命令は、最適化された制御パルスと更新された物理的スケジュールとを用いて量子プロセッサ上で量子プログラムを実行するステップを含む。
【0009】
別の実施形態では、量子コンピュータの命令をコンパイルするコンピュータ実施方法が提供される。本開示の方法は、古典的メモリと通信する古典的プロセッサを使用して実施される。本開示の方法は、量子プログラムをユーザから受け取るステップを含む。量子プログラムは、複数の命令をソース言語で定義している。また、本開示の方法は、量子プログラムを、中間言語の論理アセンブリ命令にコンパイルするステップを含む。また、本開示の方法は、論理アセンブリ命令を、命令の複数の論理ブロックに集約するステップを含む。また、本開示の方法は、複数の論理ブロック間の可換性に基づいて、量子プログラムの論理的スケジュールを生成するステップを含む。また、本開示の方法は、論理的スケジュールに基づいて暫定的な物理的スケジュールを生成するステップを含む。暫定的な物理的スケジュールは、論理的スケジュール内の論理アセンブリ命令の、量子プロセッサの複数の量子ビットへのマッピングを含む。また、本開示の方法は、暫定的な物理的スケジュール内の並列性が低下しない命令を集約して、更新された物理的スケジュールを生成するステップを含む。また、本開示の方法は、量子プログラムの集約された命令のための最適化された制御パルスを生成するステップを含む。また、本開示の方法は、最適化された制御パルスと更新された物理的スケジュールとを用いて量子プロセッサ上で量子プログラムを実行するステップを含む。
【0010】
さらに別の実施形態では、少なくとも1つの古典的プロセッサによって実行されたときに、該プロセッサに実行させるコンピュータ実行可能命令が記憶されたコンピュータ読み取り可能な記憶媒体が提供される。コンピュータ実行可能命令は、量子プログラムをユーザから受け取るステップを含む。量子プログラムは、複数の命令をソース言語で定義している。また、コンピュータ実行可能命令は、量子プログラムを、中間言語の論理アセンブリ命令にコンパイルするステップを含む。また、コンピュータ実行可能命令は、論理アセンブリ命令を、命令の複数の論理ブロックに集約するステップを含む。また、コンピュータ実行可能命令は、複数の論理ブロック間の可換性に基づいて、量子プログラムの論理的スケジュールを生成するステップを含む。また、コンピュータ実行可能命令は、論理的スケジュールに基づいて暫定的な物理的スケジュールを生成するステップを含む。暫定的な物理的スケジュールは、論理的スケジュール内の論理アセンブリ命令の、量子プロセッサの複数の量子ビットへのマッピングを含む。また、コンピュータ実行可能命令は、暫定的な物理的スケジュール内の並列性が低下しない命令を集約して、更新された物理的スケジュールを生成するステップを含む。また、コンピュータ実行可能命令は、量子プログラムの集約された命令のための最適化された制御パルスを生成するステップを含む。また、コンピュータ実行可能命令は、最適化された制御パルスと更新された物理的スケジュールとを用いて量子プロセッサ上で量子プログラムを実行するステップを含む。
【図面の簡単な説明】
【0011】
図1図1図5Dは、本開示の方法及びシステムの例示的な実施形態を示す。図1は、量子コンピュータ装置上で実行する命令を最適化するための例示的な量子コンピュータシステムを示す図である。
図2図2は、図1に示したコンパイルエンジンのコンポーネント図である。
図3図3は、図1に示した量子コンピュータ装置上で実行する量子プログラムのコンパイルを最適化する方法の一例を説明するためのフロー図である。
図4A図4A~4Dは、図1のコンパイルエンジンによって生成されるゲート依存性グラフの例を示す図である。
図4B図4A~4Dは、図1のコンパイルエンジンによって生成されるゲート依存性グラフの例を示す図である。
図4C図4A~4Dは、図1のコンパイルエンジンによって生成されるゲート依存性グラフの例を示す図である。
図4D図4A~4Dは、図1のコンパイルエンジンによって生成されるゲート依存性グラフの例を示す図である。
図5A図5A~5Dは、コンフリクトする命令をスケジューリングするためにコンパイルエンジンによって使用される例示的な計算グラフの各段階を示す。
図5B図5A~5Dは、コンフリクトする命令をスケジューリングするためにコンパイルエンジンによって使用される例示的な計算グラフの各段階を示す。
図5C図5A~5Dは、コンフリクトする命令をスケジューリングするためにコンパイルエンジンによって使用される例示的な計算グラフの各段階を示す。
図5D図5A~5Dは、コンフリクトする命令をスケジューリングするためにコンパイルエンジンによって使用される例示的な計算グラフの各段階を示す。
【発明を実施するための形態】
【0012】
以下の詳細な説明は、本開示の実施形態の例を説明するものであり、限定するものではない。本開示は、量子コンピューティングに一般的に適用することを意図している。
【0013】
既存の量子プログラミング言語及びコンパイラは、1量子ビットゲート及び2量子ビットゲートから構成される量子アセンブリ言語を使用する。量子コンパイラフレームワークが、この量子アセンブリを、制御パルス、一般的には、特定の量子コンピュータ装置上で指定された計算を実行する電気信号に変換する。しかしながら、古典的コンパイル技術を量子コンピューティング(量子計算)の文脈で使用することには、多数の非効率的な点及び短所、並びに、一般的な古典的コンピューティング環境では経験したことのない新しい問題が存在する。
【0014】
この問題に対処するために、本明細書では、量子コンピュータシステム及びそれに関連する方法を記載する。本開示の量子コンピュータシステムは、量子プロセッサ上で実行する量子プログラムを準備及び最適化するように構成されたコンパイルエンジン(例えば、古典的コンピュータ装置上で実行される)を含む。いくつかの例では、量子プロセッサは、量子プログラムの実行に使用するための数十個または数百個の量子ビットを含むことができ、近い将来、より大きな量子コンピュータが予想される。しかしながら、非常に多くの量子ビットにおける制御パルスを同時に最適化することは、量子ビットの数に対して指数関数的に増大する計算上複雑な演算である。従来のアルゴリズムは、現在利用可能な最良のスーパコンピュータであっても、合理的に制限された前処理時間では適切な解が得られない可能性がある。
【0015】
したがって、本開示のコンパイルエンジンは、非常に多くの量子ビットにおける演算をスケジューリングするという大きな問題を、複数のより小さな問題に分割するとともに(例えば、量子ビットのグループ化、及びプログラム命令のサブセットのグループ化)、それらのグループ化を最適化して並列性を促進し、コンパイルの論理的命令と様々な種類の量子プロセッサの物理的制約との間の特定のミスマッチに対処するコンパイルフレームワークを提供する。より具体的には、本開示のコンパイルエンジンは、量子プログラムの論理命令に対して論理的ブロック化を実施し、1量子ビット及び2量子ビットの演算を量子ビットグループ(例えば、量子プロセッサによって提供される量子ビットの全セットのサブセット)にグループ化する。これらのグループ化のサイズは、パルス最適化の性能閾値に基づいて決定され、合理的な処理時間内にパルス最適化を十分に実施することができるように、グループサイズを制限する。例えば、基礎となるパルス最適化アルゴリズムは、約10量子ビットまでは、十分な性能を発揮すると判断することができる。したがって、50量子ビット量子プロセッサの場合、本開示のコンパイルエンジンは、論理命令を、5つの10量子ビットブロックに分割することによって、パルス最適化の複雑さを低減し、これにより、合理的な処理時間内に各ブロックのパルス最適化を実施することを可能にする。
【0016】
なお、論理命令を複数のブロックに分割すると、問題が発生する恐れがある。例えば、グループ化が不十分である場合、グループ化により、並列化が可能な部分を直列化してしまうことがある。さらに、基礎となる量子ハードウェアの性質に起因して、特定の種類の演算をまとめてグループ化することによって、効率を向上させることができる(例えば、必要とされるパルスシーケンスの数を減らすことができる)。このため、本開示のコンパイルエンジンは、これらの特徴を考慮して、戦略的に命令をグループ化する。
【0017】
本明細書で使用するとき、「古典的」という用語は、従来のトランジスタベースのコンピューティング技術を指す。この用語は、必要に応じて、従来のコンピュータ装置またはそれに関連するハードウェア、ソフトウェア、アルゴリズムなどを、「量子」コンピュータと区別するために使用される。量子コンピュータまたはそれに関連するハードウェア、ソフトウェア、アルゴリズムなどは一般的に、量子力学の量子現象に依存して処理演算を実行するという点で、古典的コンピュータ装置と区別される。古典的コンピュータの例としては、従来のパーソナルコンピュータ、サーバ、タブレット、スマートフォン、x86ベースプロセッサ、ランダムアクセスメモリ(「RAM」)モジュールなどが挙げられる。量子コンピュータの例としては、IBM社製の「IBM Q」装置、Google社製の「Bristlecone」量子コンピュータ、Intel社製の「Tangle Lake」量子コンピュータ、及び、D-Wave社製の「2000Q」などが挙げられる。「古典的ビット」または「cbit」という用語は、本明細書では、古典的コンピュータにおけるビットを指すために使用される。「量子ビット」という用語は、本明細書では、量子コンピュータにおける量子ビットを指すために使用される。
【0018】
図1は、量子コンピュータ装置130上で実行する命令を最適化するための例示的な量子コンピュータシステム100を示す図である。量子コンピュータシステム100は、量子コンピュータ装置130上で実行する量子プログラム112を準備(例えば、コンパイル及び最適化)するように構成された制御コンピュータ装置110を含む。量子コンピュータ装置130は、量子プログラム112を実行する量子プロセッサ132を表す複数の量子ビット134を含む。例示的な本実施形態では、量子プロセッサ132は、50個または100個の量子ビットを含む。なお、本開示は、数十個、数百個、またはそれ以上の個数の量子ビット134を有する量子プロセッサに適用可能であり、かつ有益であると考えられることを理解されたい。
【0019】
量子ビット134は、図1に示す量子コンピュータ装置130などの量子コンピュータ装置の基本構成要素である。古典的ビット(「cbit」)とは対照的に、量子ビットは、本明細書では、|0>及び|1>として表記される論理状態が重なり合った状態で存在することができる。量子ビットの一般的な量子状態は、次のように表される。
【0020】
【数1】
【0021】
式中、α、βは、|α|+|β|=1の複素係数である。0/1基底で測定すると、上記の量子状態は、それぞれ|α|及び|β|の確率で、|0>または|1>に崩壊する。量子ビット134は、ブロッホ球と呼ばれる3次元球上の点として可視化することができる。量子ビット134は、イオントラップ、量子ドットシステム、及び例示的な本実施形態では超電導回路を含む、様々な量子情報処理(QIP)プラットフォーム上で実現することができる。量子論理状態の数は、量子プロセッサ132内の量子ビット134の数に応じて指数関数的に増加する。例えば、3個の量子ビット134を有するシステムでは、8つの論理状態(|000>、|001>、|010>、|011>、・・・、|111>)を重ね合わせることができる。この性質は、古典的コンピューティングよりも飛躍的に速度が向上する可能性の基礎となる。換言すれば、指数関数的な数の相関した論理状態を、線形数の量子ビット134を用いて、量子コンピュータシステム100によって同時に記憶及び処理することができる。
【0022】
量子コンパイル中に、量子プログラム112は、まず、論理量子ゲートと呼ばれる1量子ビット及び2量子ビットの離散的な量子演算のセットに分解される。これらの量子ゲートは、ユニタリ行列として行列形式で表される。1量子ビットゲートは、ブロッホ球の特定の軸に沿った回転に対応する。量子ISAの例では、1量子ビットゲートセットは、ブロック球のx軸、y軸、及びz軸に沿った回転を含む。これらのゲートは、本明細書では、それぞれ、Rゲート、Rゲート、及びRゲートと表記する。さらに、量子ISAは、対角x+z軸を中心とする回転に対応するアダマールゲートも含むことができる。量子ISAにおける2量子ビット論理ゲートの一例は、制御NOT(CNOT)ゲートである。このCNOTゲートは、制御量子ビットが|1>の場合にはターゲットの量子ビットの状態を反転させ、制御量子ビットが|0>の場合にはターゲットの量子ビットの状態を変化させない。例えば、CNOTゲートは、|10>を|11>に送り、|11>を|10>に送り、それ以外の他の論理状態を保持する。
【0023】
さらに、量子プログラム112のコンパイル中に一般的に使用される一般的な論理アセンブリ命令は、使用される可能性のある物理的ハードウェアの種類のバリエーションを直接考慮せずに設計されていることを理解されたい。このため、論理命令と、特定のQIPプラットフォームの性能との間には、しばしばミスマッチが生じる。例えば、一部のQIPプラットフォームでは、その特定の物理プラットフォームにCNOTゲートを直接実装する方法が明確でない場合がある。このため、CNOTゲートは、標準的なゲートベースのコンパイルにおいて、複数の物理ゲートにさらに分解してもよい。様々なアーキテクチャのための他の例示的な物理量子ゲートでは、例えば、量子ドットなどのハイゼンベルグ相互作用ハミルトニアンを有するプラットフォームでは、直接実装可能な2量子ビット物理ゲートは、√SWAPゲート(2回適用したときにSWAPを実行する)である。ジョセフソン磁束量子ビットの超伝導システムやNMR量子システムなどの、ZZ相互作用ハミルトニアンを有するプラットフォームでは、物理ゲートは、CPhaseゲートであり、単一量子ビットの回転まではCNOTゲートと同一である。容量結合したジョセフソン電荷量子ビット(例えば、トランスモン量子ビット)などの、XY相互作用ハミルトニアンを有するプラットフォームでは、2量子ビットの物理ゲートは、iSWAPゲートである。双極子鎖相互作用を有するイオンプラットフォームでは、物理的2量子ビットゲートは、幾何位相ゲート及びXXゲートの2つが一般的である。
【0024】
量子プロセッサ132は、外部の物理的操作によって、論理状態が跨る空間内の任意の状態に連続的に駆動することができる。制御フィールドと呼ばれる物理的操作は、基礎となるシステムに固有のものであり、制御フィールド及びシステムの特性は、ハミルトニアンと呼ばれるユニークで時間依存性の量を制御する。ハミルトニアンは、量子状態の発展経路を決定する。例えば、例示的な量子コンピュータ装置130などの超伝導システムでは、マイクロ波電気信号を印加することによって、量子ビット134を駆動してブロッホ球上で連続的に回転させることができる。マイクロ波信号の強度を変化させることによって、量子ビット134の回転速度を操作することができる。ハミルトニアンシステムをリアルタイムで操作する能力により、量子コンピュータシステム100は、関連する制御フィールドの精密な制御を通じて、量子ビット134を目的の量子状態に導くことができる。したがって、量子コンピューティングは、量子ビット134の最終測定時にハミルトニアンが高確率で一致するように発展させた量子システムを構築することによって達成することができる。量子制御の文脈において、量子ゲートは、量子プロセッサ132上で実行される予めプログラムされた制御フィールドのセットと見なすことができる。
【0025】
例示的な本実施形態では、制御コンピュータ装置110は、コンパイルエンジン114を含む。このコンパイルエンジン114は、動作中に、量子プログラム112を、(例えば、ソースコードから)最適化された物理的スケジュール116にコンパイルするように構成されている。最適化された物理的スケジュール116は、最適化された制御パルス120(例えば、予めプログラムされた制御フィールド)として信号発生器118から量子コンピュータ装置130に送信されると、量子コンピュータ装置130に量子プログラム112を実行させて実行結果140を生成する、制御命令及びそれに関連するスケジュールのセットを表す。例示的な本実施形態では、量子コンピュータ装置130は超伝導デバイスであり、信号発生器118は、最適化された制御パルス120を量子プロセッサ132上で実行するように構成された任意波形発生器(「AWG」)である(例えば、量子ビット134に送信されたマイクロ波パルスを介して、回転軸は信号の直交振幅変調によって決定され、回転角度は信号のパルス長によって決定される)。他の量子コンピューティングアーキテクチャは、異なるサポートハードウェアを有し得ることを理解されたい。
【0026】
換言すれば、コンパイルエンジン114は、例示的な本実施形態では、量子プログラム112を入力として受け取り、一連の変換を適用して、量子コンピュータ装置130上で計算を実行する制御パルス(例えば、最適化された物理的スケジュール116)を生成する。例示的な本実施形態では、コンパイルエンジン114のいくつかの動作目的は、下記の(A)~(C)を含む。(A)量子プログラム112の論理演算を、内部の最適制御ユニットモジュール(図1には図示せず)が命令サブセットのための適切な最適化ソリューションを生成することができるように、量子ビット134(及びそれに関連する演算)のサブセット、またはブロックに分割すること、(B)論理演算をブロックに分割することに固有の並列性の問題に対処すること、及び、(C)基礎となる物理的ハードウェアの長所及び短所に基づいて論理演算を最適化すること。
【0027】
図2は、図1に示したコンパイルエンジン114のコンポーネント図である。図2に示すモジュールは、コンパイルエンジン114が量子プログラム112をコンパイルし、最適化された物理的スケジュール116を作成して実行するときの処理演算の種類とその演算を実行するレベルとに基づいて、サブシステムに分けられる。例示的な本実施形態では、コンパイルエンジン114は、プログラムレベル解析サブシステム210を含む。プログラムレベル解析サブシステム210は、ループ展開モジュール212と、モジュール平坦化モジュール214とを含む。プログラムレベル解析サブシステム210は、量子プログラム112をコンパイルして、量子アルゴリズムの高レベルの記述を、ゲート依存関係を保持する論理アセンブリに下げる。例示的な本実施形態では、論理アセンブリ命令は、オープン量子アセンブリ言語(QASM)命令である。さらに、プログラムレベル解析サブシステムのモジュールは、プログラムレベルの解析を実行する。より具体的には、ループ展開モジュール212は、量子プログラム112上でループ展開を実行し、ループを直列命令に展開する。量子プログラムでは、入力は一般的に、事前に分かっている。このため、ループ展開モジュール212は、ループが何回実行されるかを判断して、ループ毎に、これらの命令をアンパックする。このタイプの最適化は、従来の古典的プログラムよりもプロセスの早い段階で、命令の性質についてより多くのことが分かっているので、より良い最適化を可能にする。モジュール平坦化モジュール214は、量子プログラムによって呼び出された関数を展開し、関数名をその内容(例えば、その関数を実行する命令)に置き換える。例示的な本実施形態では、プログラムレベル解析サブシステム210は、モジュール平坦化を含む様々なコンパイル処理のためにScaffCCコンパイラを使用する。
【0028】
プログラムレベル解析サブシステム210は、論理レベルでの最適化処理のために(例えば、実際の量子ビット134への物理的マッピングがまだ存在しない場合)、論理レベル解析サブシステム220に渡される中間表現の論理アセンブリ命令を生成する。例示的な本実施形態では、論理レベル解析サブシステム220は、可換性検出モジュール222と、可換性考慮スケジューリングモジュール224とを含む。論理レベル解析サブシステム220は、可換性の高い命令を論理命令ブロック(ここでは「論理ブロック」と称する)に集約することによって、可換性を検出する。従来の論理スケジューリングとは異なり、論理レベル解析サブシステムは、論理レベルで可換性の高い命令を並べ替えることによって、はるかに効率的な論理的スケジュールを作成する。いくつかの既知の最適化システムは、物理レベルではあるが、可換性の最適化を実行する。しかしながら、近未来の量子アプリケーションでは、命令ブロック内の命令が可換なのではなく、命令ブロック全体が互いに可換であることが一般的である。このように、可換性検出モジュール222は、論理レベルでの可換性検出を実行し、入力された量子回路に対して可換性の高い命令セットを作成する。可換性考慮スケジューリングモジュール224は、可換性を用いて、並列性を有するさらなる論理レベル最適化を可能にする。より具体的には、可換性考慮スケジューリングモジュール224は、(例えば、超伝導アーキテクチャなどの通信コストが安い量子アーキテクチャにおいて)スワップのコストを気にせずに、並列性を最大化する命令のブロックを見つける。
【0029】
可換性検出モジュール222及び可換性考慮スケジューリングモジュール224で実行される処理により、論理レベル解析サブシステム220は、最適化された論理的スケジュールをマッピングレベル解析サブシステム230に提供する。例示的な本実施形態では、マッピングレベル解析サブシステムは、論理命令の量子ビットを量子プロセッサ132の特定の量子ビット134に割り当てるとともに、プロセス中にマッピングレベルの最適化及び制約解決を実行する。より具体的には、マッピングレベル解析サブシステム230は、量子ビットマッピングモジュール232と、トポロジ制約解決モジュール234とを含む。論理レベル解析サブシステム220によって提供された、論理的にスケジューリングされた命令は、基礎となるハードウェアのいかなるトポロジ接続制約も考慮しない。例示的な本実施形態では、量子プロセッサ132は、直接隣接間でのみ2量子ビット演算が許可される矩形格子型の量子ビットトポロジである。量子ビットマッピングモジュール232は、特定の量子ビット134に命令を割り当てる。量子ビットマッピングモジュール232は、交差エッジが少ない切り口に沿って量子ビット相互作用グラフを二等分することによって、頻繁に相互作用する量子ビットを互いに近くに配置する。例示的な本実施形態では、量子ビットマッピングモジュール232は、METISグラフ分割ライブラリを使用して、このアプローチを分割上で再帰的に適用し、CNOT演算の距離を低減するヒューリスティックなマッピングを生成し、互いに通信するものの間の距離を効果的に最小化する。量子ビットマッピングモジュール232によって距離が最小化されると、基礎となるハードウェアの物理的な制約が、量子ビットマッピングに関して考慮される。(例えば、現在のスケジュールとマッピングに基づいて)互いに隣接する必要があるが、まだ隣接していない2つの量子ビットの演算の場合、制御量子ビット及びターゲット量子ビットを互いに隣接するように移動させるために、SWAP演算が導入される。
【0030】
量子ビットマッピングモジュール232及びトポロジ制約解決モジュール234で実行される処理により、マッピングレベル解析サブシステム230は、暫定的な物理的スケジュールをクロスレイヤ解析サブシステム240に提供する。例示的な本実施形態では、クロスレイヤ解析サブシステム240は、暫定的な物理的スケジュールをさらに最適化し、実行のために最適化された制御パルス120を生成するように構成される。クロスレイヤ解析サブシステム240は、物理的ブロック化モジュール244と、候補命令ユニタリモジュール246と、最適制御ユニットモジュール242とを含み、これらのモジュールが協働して、暫定的な物理的スケジュールを、物理的ブロック化及び最適制御がなされた最適化された制御パルス120に洗練する。
【0031】
より具体的には、クロスレイヤ解析サブシステム240は、最適制御ユニットモジュール242と、物理的ブロック化モジュール244とを繰り返して、回路の最終的な集約命令(本明細書では、「物理的ブロック化」と称する)を生成する。最適制御ユニットモジュール242は、集約命令毎に、制御パルスを最適化する。より具体的には、最適制御ユニットモジュール242は、開始量子状態から最終量子状態までの最適なハミルトニアンパスを数値的に求める。リアルタイムで調整可能な外部制御フィールドのセット(u、・・・、u)を有する量子システムについて考える。最適制御は、各制御フィールドuを調整することによって、目標状態からの偏差を最小化する。例示的な本実施形態では、最適制御ユニットモジュール242は、勾配上昇法パルスエンジニアリング(「GRAPE」)アルゴリズムを用いる。GRAPEでは、ループ毎に、発展の時間ステップjにおける制御フィールドuに関する目標損失関数(例えば、通常忠実度)の勾配を、シュレーディンガー方程式を解くことによって明確に計算することができる。制御フィールドu(j)は、適応ステップサイズεで勾配方向に更新される。十分な繰り返し(ループ)により、収束した制御パルスが、量子コンピュータシステムを初期状態から最終状態まで最適化された経路に沿って駆動させることを期待することができる。勾配法の実行時間とメモリ使用量は、量子コンピュータシステムのサイズに応じて指数関数的に増加する。回路の最適化に必要とされる計算資源(例えば、時間、コンピュータメモリ、処理演算)も、指数関数的に増大する。また、量子コンピュータシステムの量子ビット数が増加すると、数値安定性は低下する。したがって、本開示の量子コンピュータシステム100は、量子プロセッサ132を最大で10量子ビットのグループに最適化する。これは、最適制御が、10量子ビットのシステムを、計算リソースの実際的な割り当てによって効率的に最適化することができる傾向にあるからである。最適制御ユニットモジュール242は、自動微分及びTensorflowフレームワークに基づいている。自動微分により、ユーザが高度な最適化基準を指定し、この段階でその基準をパルス生成に容易に取り入れることが可能となる(例えば、不要な量子ビットレベルの抑制、大きな電圧変動の回避、パルスレイテンシなど)。
【0032】
マルチ量子ビット命令の集約における1つの問題は、並列性と、さらなる高速化のためのより大きな命令サイズの必要性との間のコンフリクトである。新しい命令を集約すると、並列性が損なわれる可能性がある。並列性を保護するために、クロスレイヤ解析サブシステム240は、より大きな集約命令を、より最適化された制御パルスを有するものとして扱う。さらに、クロスレイヤ解析サブシステム240はまた、単調な動作を、たとえ新しい命令内のパルスが最適化されなくてもクリティカルパスを遅延させない動作として識別する。なぜなら、これらの動作では、並列性が損なわれないので、命令の集合を集約することによる回路レイテンシの低減の報酬は、集合のサブセットを集約することよりも厳密に高いからである。したがって、単調な動作は、元の回路の深さと動作実行時の深さとを明示的に計算することによって、チェックすることができる。物理的ブロック化中、物理的ブロック化モジュール244は、量子プログラム112の命令を表すために使用されるゲート依存性グラフ(「GDG」)をトラバースする。GDG内の命令毎に、単調な動作が検索され、最良の動作が特定され、グローバルテーブルに保持される。GDGのトラバース後、グローバルテーブルに保持された最良の動作が実行され、動作テーブルのGDGが更新される。このことを、それ以上の動作を実行できなくなるまで繰り返す。次いで、最適制御ユニットモジュール242に問い合わせることにより、各集約命令のレイテンシが更新される。この更新された命令のレイテンシは回路構造を変化させ、これにより、より単調な動作を生成することができる。このように、クロスレイヤ解析サブシステム240は、GDGが収束するまで、最適制御ユニットモジュール242を使用して、物理的集約及び更新を繰り返し行う。
【0033】
図3は、図1に示した量子コンピュータ装置130上で実行する量子プログラム112のコンパイルを最適化する例示的な方法300を説明するためのフロー図である。例示的な本実施形態では、方法300は、制御コンピュータ装置110上で(例えば、コンパイルエンジン114のサブシステム及びモジュールによって)実行される。コンパイルエンジン114は、量子プログラム112のソースコードから開始する。コンパイルエンジン114は、図2のループ展開モジュール212に関して説明したように、量子プログラム112に対してループ展開を実行し(ステップ310)、次いで、図2のモジュール平坦化モジュール214に関して説明したように、モジュール平坦化を実行する(ステップ312)。次に、コンパイルエンジン114は、量子プログラム112を論理アセンブリ316にコンパイルする(ステップ314)。例示的な本実施形態では、このコンパイルは、StaffCCコンパイラを用いて実行される。論理アセンブリ316は、例えば、QASM、OpenQASM、XACC中間表現(IR)、またはLLVMなどの任意の量子アセンブリであり得る。
【0034】
例示的な本実施形態では、コンパイルエンジン114は、上記のステップで生成された論理アセンブリ316に対して論理的ブロック化を実行する。論理アセンブリ316は、ゲート依存性グラフとして抽象化することができる。図4Aは、例示的なゲート依存性グラフ(GDG)400を示す。例示的なGDG400は、三角形についてのMAX_CUT問題を解く量子近似最適化アルゴリズム(「QAOA」)を表す量子回路から構成される。この量子回路は、標準的なゲートセットに分解される。識別命令410が、深さ0で命令を接続するために、すべてのGDGに対する仮想ルートとして挿入される。この仮想ルートは識別命令410であるので、計算結果やレイテンシに支障をきたすことはない。さらに、各パスには、それに対応する量子ビット名が付けられる。本開示の例では、GDG400は、ステップ312でのモジュール平坦化後の量子プログラムを表す(例えば、「平坦化された」量子プログラムである論理アセンブリ316)。
【0035】
量子GDGと古典的プログラム依存性グラフ(「PDG」)との主な違いは、量子GDGでは量子交換規則が適用されることである。量子GDGでは、連続する交換ゲートは親子関係を有さず、任意の順序でスケジューリングすることができる。GDGは、可視化ツールとして機能する、量子回路を探索するフレキシブルで系統的な方法を提供する。マージ可能な命令は、互いに対して直接的な先行命令、または交換可能な兄弟である。GDGをトラバースすることにより、マージ可能な命令を探索することができる。1量子ビットだけを共有する2つの4×4(2量子ビット)の非対角ユニタリ行列の積は対角行列にならないので、この検索は効率的である。したがって、命令毎に、それ以降の2量子ビットチェーンを検索する。より具体的には、図3及び図4Aを参照して、コンパイルエンジン114は、論理的ブロック化の実行時には、いくつかの交換関係に依存する。重要な交換関係としては、2つの量子ゲートが異なる量子ビット交換に適用されること、CNOTゲートの制御ビットがZ回転で交換されること、2つのCNOTゲートは、その一方の制御が他方のターゲットでない場合に交換されること、及び、対角ユニタリ演算子を表す2つのゲートが交換されること(例えば、Z回転が対角ユニタリである)、が挙げられる。コンパイルエンジン114は、他の交換規則を適用してもよい。この実施例では、2つのゲートA、B間の交換規則は、ユニタリ演算子
【0036】
【数2】
【0037】
の等価性を明確にチェックすることによって解決される。
【0038】
図4Aに示した例では、図示したCNOT-Rz-CNOT構造は相互に交換できるが、この構造における各CNOT及びRzは交換できない。このため、コンパイルエンジン114は、3つのCNOT-Rz-CNOTの命令セットのそれぞれを、交換可能な命令ブロックとして識別する。図4Bは、図4Aに示した例から更新されたGDG420を示す。例示的な本実施形態では、GDG420は、ステップ320においてコンパイルエンジン114によって可換性検出が実行された後のGDG400の状態を表している。CNOT-Rz-CNOT命令の可換性を検出することによって、コンパイルエンジン114は、図4AのGDG400を、図4Bに示すGDG420に変換する。この構成により、よりフレキシブルなスケジューリングが可能となる。GDG420で連続したCNOT-Rz-CNOT命令を縮小した後、コンパイラは、新しい可換CNOT-Rz-CNOT命令を任意の順序でスケジューリングすることができる。対照的に、図4Aに示すGDG400では、スケジューリングの選択肢が限られている。
【0039】
再び図3を参照すると、コンパイルエンジン114は、次に、可換性を考慮したスケジューリングを実行する(ステップ322)。このスケジューリングを実行するために、例示的な本実施形態では、コンパイルエンジン114は、まず、各命令に対して、非正の優先順位値を割り当てる。或る命令の優先順位値は、その実行開始時間の負の値である。或る命令Gの優先順位値について、スケジューラは、GDG420内の命令Gの親をすべて見つけ、見つけた親毎に、命令Gについての潜在的な優先順位値(可能性のある優先順位値)として、その優先順位値からそのレイテンシを差し引く。次に、命令Gに対して、そのすべての親の潜在的な優先順位値のうちの、最小の潜在的な優先順位値を割り当てる。GDG410の仮想ルートでの識別命令420に対しては、ゼロ(0)の優先順位値及びゼロ(0)のレイテンシ値を割り当てる。交換命令は、互いにコンフリクトする可能性がある(例えば、図4Bの3つのCNOT-Rz-CNOT命令は、互いに同一の優先順位値を有するが、同時にスケジューリングすることはできない)。
【0040】
これらのコンフリクトする命令をスケジューリングするために、コンパイルエンジン114は、量子を頂点とし、ゲートをエッジとする計算グラフGを形成する(例えば、1量子ビットゲートは、1つの頂点の自己ループとなる)。計算グラフGがそれ自体のマッチングである場合、すべてのゲートを同時に実行することができるので、スケジューリングは必要ない。Gcが一致しない場合、コンパイルエンジン114は、スケジューリングのためのコンフリクト解決プロセスを実行する。より具体的には、コンパイルエンジン114は、Gの最大カーディナリティマッチング(maximal cardinality matching)を見つけ、それらのエッジに高い優先順位値を割り当てた後、グラフの残りの部分に進む。図5A~5Dは、コンフリクトする命令をスケジューリングするためにコンパイルエンジン114によって使用される例示的な計算グラフ500の段階を示す。例示的な本実施形態では、基礎となる量子システムは6量子ビットの装置であり、すべての命令は同一のレイテンシを有する。コンパイルエンジン114は、1回以上のラウンドのグラフ解析を実行し、各ラウンドにおいて、互いに隣接しないエッジの最大マッチングを見つけ、次いで、それらのエッジをスケジューリングする。このプロセスは、残りのエッジについて繰り返され、毎回、隣接していない残りのエッジの最大マッチングを見つけ、次いで、それらのエッジをスケジューリングする。図5Aは、すべてのコンフリクトする演算を含んでいる。図5Bでは、コンフリクト解決プロセスは、4つのエッジを識別し、そのうちの3つは、1量子ビットの自己ループ(例えば、量子ビット2、5、6)であり、残りの1つは、量子ビット3及び4を含む2量子ビットの演算である。このように、これらの4つの演算は互いにコンフリクトせず、最初にスケジューリングされる。図5Cでは、コンフリクト解決プロセスは、次に、3つの残りのエッジ1及び2、エッジ3及び6、並びに、エッジ4及び5を識別する。これらの3つの演算はコンフリクトせず、次にスケジューリングされる。図5Dに示す第3ラウンドでは、コンフリクト解決プロセスは残りの1つの演算のみを識別し、この演算が最後にスケジューリングされる。コンパイルエンジン114は、直面したコンフリクトする命令のグループ毎に、コンフリクト解決プロセスを実行する。すべての命令に優先順位値を割り当てた後、コンパイルエンジン114は、優先順位値が高いものから低いものへ貪欲にスケジューリングする。
【0041】
例示的な本実施形態では、コンパイルエンジン114は、並列性を最大化し、かつ、バックエンドのSWAPゲートの数を最小化しないように演算する。例示的な超伝導アーキテクチャなどの特定の量子コンピューティング環境では、SWAPゲートは、一般的に高コストであるが、最適な制御がなく、場合によっては、レイテンシを低減するのに有益であり得る。
【0042】
再び図3に戻り、ステップ322の可換性考慮スケジューリングの実行後、コンパイルエンジン114は、可換性を考慮して最適化された論理的スケジュール324を有する。コンパイルエンジン114は、上述したように、量子ビットマッピング及びトポロジ制約解決を実行する(ステップ330、ステップ332)。量子ビットマッピング及びトポロジ制約解決は、1以上のSWAPゲートの導入の可能性を含む、GDG420の変更をもたらす。図4Cは、この例からの更新されたGDG440を示す。例示的な本実施形態では、GDG440は、ステップ322の可換性考慮スケジューリング、ステップ330の量子ビットマッピング、及びステップ332のトポロジ制約解決がコンパイルエンジン114によって実行された後のGDG400の状態を表す。本実施形態では、SWAPゲート442がGDG440に追加されている。
【0043】
再び図3を参照して、ステップ330の量子ビットマッピング及びステップ332のトポロジ制約解決により、量子プログラム112の演算のための暫定的な物理的スケジュール334が生成される。この段階で、コンパイルエンジン114は、集約命令スケジューリング(ステップ340)及びパルス最適化(ステップ344)を伴う物理的ブロック化の別のラウンドに入る。例示的な本実施形態では、コンパイルエンジン114は、(A)2つの命令が互いに重なり合い(例えば、いくつかの共通の量子ビットを共有する)、かつ、(B)それらが共有する各量子ビットパス上でそれらの一方が他方の親であるか、またはそれらが互いに兄弟である場合に、命令集約のこの段階で連続する2つの命令を集約する。さらに、最適制御ユニットモジュール242の性能限界を考慮して、集約命令に含まれる量子ビット数を制限してもよい。コンパイルエンジン114は、図2に関して上述したようにして、集約命令スケジューリング(ステップ340)及びパルス最適化(ステップ344)を伴う物理的ブロック化を実行し、その物理的ブロック化を、コンパイルエンジン114が実行すべきさらなる集約を識別しなくなるまでループさせる。
【0044】
さらに、コンパイルエンジン114は、この段階でさらなる可換性検出も実行する。実行される可能性のある命令交換の一例は、対角ユニタリを表す集約命令である。対角ユニタリは、量子化学応用の分解法や近未来の最適化アルゴリズムに広く用いられている。したがって、コンパイルエンジン114は、GDG460をトラバースし、上述の動作空間において貪欲に対角ユニタリを表す2量子ビット命令を探索して集約し、より多くの可換性を抽出し、積が対角であるものをマージする。
【0045】
図4Dは、この例から更新されたGDG460を示す。例示的な本実施形態では、GDG460は、ステップ340の物理的ブロック化及びステップ344のパルス最適化がコンパイルエンジン114によって実行された後のGDG400の状態を表しており、太い矢印はクリティカルパスを示している。例示的な本実施形態では、最終的な集約命令セットをカスタマイズした後、更新されたGDG460は、並列性及びパルス生成の両方について最適化される。この段階では、コンパイルエンジン114は、集約命令が表すユニタリ変換を計算し、その計算結果を最適制御ユニットモジュール242に送信して、パルス最適化(ステップ344)を実行する。最適制御ユニットモジュール242は、基礎となる量子ハードウェア(例えば、量子プロセッサ132)のために制御パルスを最適化する。最適化された制御パルス120は、確率的勾配下降法を用いて所望のユニタリ演算を生成することができる。最適制御ユニットモジュール242は、回路レイテンシを最小にする忠実度閾値を超える制御パルスをリターンする。
【0046】
再び図3を参照して、方法300の完了時に、コンパイルエンジン114は、最適化された制御パルス120を生成して信号発生器118に送信する。そして、信号発生器118は、受信した最適化された制御パルス120を量子プロセッサ132上で実行する。
【0047】
いくつかの実施形態では、量子プロセッサ上で命令をコンパイルして実行する量子コンピュータシステムが提供される。本開示の量子コンピュータシステムは、複数の量子ビットを含む量子プロセッサと、複数の命令をソース言語で定義している量子プログラムを記憶した古典的メモリと、古典的メモリに通信可能に結合された古典的プロセッサと、を備える。古典的メモリは、古典的プロセッサによって実行されたときに、古典的プロセッサに実行させるコンピュータ実行可能命令を記憶している。コンピュータ実行可能命令は、(i)量子プログラムを、中間言語の論理アセンブリ命令にコンパイルするステップと、(ii)論理アセンブリ命令を、命令の複数の論理ブロックに集約するステップと、(iii)複数の論理ブロック間の可換性に基づいて、量子プログラムの論理的スケジュールを生成するステップと、(iv)論理的スケジュールに基づいて暫定的な物理的スケジュールを生成するステップであって、暫定的な物理的スケジュールは、論理的スケジュール内の論理アセンブリ命令の、量子プロセッサの複数の量子ビットへのマッピングを含む、該ステップと、(v)暫定的な物理的スケジュール内の並列性が低下しない命令を集約して、更新された物理的スケジュールを生成するステップと、(vi)量子プログラムの集約された命令のための最適化された制御パルスを生成するステップと、(vii)最適化された制御パルスと更新された物理的スケジュールとを用いて量子プロセッサ上で量子プログラムを実行するステップと、を含む。
【0048】
いくつかの実施形態では、コンピュータ実行可能命令は、論理アセンブリ命令から量子プログラムのゲート依存性グラフを生成するステップをさらに含み、論理アセンブリ命令を、命令の複数の論理ブロックに集約するステップは、ゲート依存性グラフにおける可換性を決定するステップをさらに含み、論理アセンブリ命令の複数の論理ブロックへの集約は、ゲート依存性グラフ上で定義された集約規則に基づいて行われる。いくつかの実施形態では、ゲート依存性グラフにおける可換性を決定するステップは、ゲート依存性グラフ内に1以上の中間集約命令を形成するステップを含む。いくつかの実施形態では、量子プログラムの各命令の優先順位値を決定するステップをさらに含み、該ステップは、(a)特定の命令について、ゲート依存性グラフから該特定の命令の各親を識別するステップと、(b)特定の命令の識別された各親について、該親の優先順位値から該親のレイテンシを減算し、それによって、特定の命令の潜在的な優先順位値を識別するステップと、(c)識別された親の識別された潜在的な優先順位値のうちの最小の潜在的な優先順位値を、特定の命令に割り当てるステップと、(d)割り当てられた優先順位値に基づいて、量子プログラムの各命令をスケジューリングするステップと、を含む。いくつかの実施形態では、暫定的な物理的スケジュール内の並列性が低下しない命令を集約して、更新された物理的スケジュールを生成するステップは、(a)ゲート依存性グラフ内のクリティカルパスを遅延させない、ゲート依存性グラフ内の2以上の命令の集合を伴う単調な動作を識別するステップと、(b)ゲート依存性グラフ内の2以上の命令を集約するステップと、(c)集約された各命令のレイテンシを更新するステップと、(d)ゲート依存性グラフに基づいて、集約された命令の回路をスケジューリングするステップと、を含む。いくつかの実施形態では、量子プログラムを実行するステップは、集約された命令の回路に基づいて、量子プロセッサに制御パルスシーケンスを送信するステップをさらに含む。いくつかの実施形態では、論理アセンブリ命令を、命令の複数の論理ブロックに集約するステップは、その積が対角ユニタリである論理アセンブリ命令の第1のセットを集約するステップをさらに含む。
【0049】
いくつかの実施形態では、量子コンピュータの命令をコンパイルするコンピュータ実施方法が提供される。本方法は、古典的メモリと通信する古典的プロセッサを使用して実施される。本方法は、(i)複数の命令をソース言語で定義している量子プログラムをユーザから受け取るステップと、(ii)量子プログラムを、中間言語の論理アセンブリ命令にコンパイルするステップと、(iii)論理アセンブリ命令を、命令の複数の論理ブロックに集約するステップと、(iv)複数の論理ブロック間の可換性に基づいて、量子プログラムの論理的スケジュールを生成するステップと、(v)論理的スケジュールに基づいて暫定的な物理的スケジュールを生成するステップであって、暫定的な物理的スケジュールは、論理的スケジュール内の論理アセンブリ命令の、量子プロセッサの複数の量子ビットへのマッピングを含む、該ステップと、(vi)暫定的な物理的スケジュール内の並列性が低下しない命令を集約して、更新された物理的スケジュールを生成するステップと、(vii)量子プログラムの集約された命令のための最適化された制御パルスを生成するステップと、(viii)最適化された制御パルスと更新された物理的スケジュールとを用いて量子プロセッサ上で量子プログラムを実行するステップと、を含む。
【0050】
いくつかの実施形態では、本方法は、論理アセンブリ命令から量子プログラムのゲート依存性グラフを生成するステップをさらに含み、論理アセンブリ命令を集約するステップは、ゲート依存性グラフにおける可換性を決定するステップをさらに含み、論理アセンブリ命令の複数の論理ブロックへの集約は、ゲート依存性グラフ上で定義された集約規則に基づいて行われる。いくつかの実施形態では、ゲート依存性グラフにおける可換性を決定するステップは、ゲート依存性グラフ内に1以上の中間集約命令を形成するステップを含む。いくつかの実施形態では、本方法は、量子プログラムの各命令の優先順位値を決定するステップをさらに含み、該ステップは、(a)特定の命令について、ゲート依存性グラフから該特定の命令の各親を識別するステップと、(b)特定の命令の識別された各親について、該親の優先順位値から該親のレイテンシを減算し、それによって、特定の命令の潜在的な優先順位値を識別するステップと、(c)識別された親の識別された潜在的な優先順位値のうちの最小の潜在的な優先順位値を、特定の命令に割り当てるステップと、(d)割り当てられた優先順位値に基づいて、量子プログラムの各命令をスケジューリングするステップと、を含む。いくつかの実施形態では、暫定的な物理的スケジュール内の並列性が低下しない命令を集約して、更新された物理的スケジュールを生成するステップは、(a)ゲート依存性グラフ内のクリティカルパスを遅延させない、ゲート依存性グラフ内の2以上の命令の集合を伴う単調な動作を識別するステップと、(b)ゲート依存性グラフ内の2以上の命令を集約するステップと、(c)集約された各命令のレイテンシを更新するステップと、(d)ゲート依存性グラフに基づいて、集約された命令の回路をスケジューリングするステップと、を含む。いくつかの実施形態では、量子プログラムを実行するステップは、集約された命令の回路に基づいて、量子プロセッサに制御パルスシーケンスを送信するステップをさらに含む。いくつかの実施形態では、論理アセンブリ命令を、命令の複数の論理ブロックに集約するステップは、その積が対角ユニタリである論理アセンブリ命令の第1のセットを集約するステップをさらに含む。
【0051】
いくつかの実施形態では、少なくとも1つの古典的プロセッサによって実行されたときに、該プロセッサに実行させるコンピュータ実行可能命令が記憶されたコンピュータ読み取り可能な記憶媒体が提供される。コンピュータ実行可能命令は、(i)複数の命令をソース言語で定義している量子プログラムをユーザから受け取るステップと、(ii)量子プログラムを、中間言語の論理アセンブリ命令にコンパイルするステップと、(iii)論理アセンブリ命令を、命令の複数の論理ブロックに集約するステップと、(iv)複数の論理ブロック間の可換性に基づいて、量子プログラムの論理的スケジュールを生成するステップと、(v)論理的スケジュールに基づいて暫定的な物理的スケジュールを生成するステップであって、暫定的な物理的スケジュールは、論理的スケジュール内の論理アセンブリ命令の、量子プロセッサの複数の量子ビットへのマッピングを含む、該ステップと、(vi)暫定的な物理的スケジュール内の並列性が低下しない命令を集約して、更新された物理的スケジュールを生成するステップと、(vii)量子プログラムの集約された命令のための最適化された制御パルスを生成するステップと、(viii)最適化された制御パルスと更新された物理的スケジュールとを用いて量子プロセッサ上で量子プログラムを実行するステップと、を含む。
【0052】
いくつかの実施形態では、コンピュータ実行可能命令は、論理アセンブリ命令から量子プログラムのゲート依存性グラフを生成するステップをさらに含み、論理アセンブリ命令を、命令の複数の論理ブロックに集約するステップは、ゲート依存性グラフにおける可換性を決定するステップをさらに含み、論理アセンブリ命令の複数の論理ブロックへの集約は、ゲート依存性グラフ上で定義された集約規則に基づいて行われる。いくつかの実施形態では、ゲート依存性グラフにおける可換性を決定するステップは、ゲート依存性グラフ内に1以上の中間集約命令を形成するステップを含む。いくつかの実施形態では、コンピュータ実行可能命令は、量子プログラムの各命令の優先順位値を決定するステップをさらに含み、該ステップは、(a)特定の命令について、ゲート依存性グラフから該特定の命令の各親を識別するステップと、(b)特定の命令の識別された各親について、該親の優先順位値から該親のレイテンシを減算し、それによって、特定の命令の潜在的な優先順位値を識別するステップと、(c)識別された親の識別された潜在的な優先順位値のうちの最小の潜在的な優先順位値を、特定の命令に割り当てるステップと、(d)割り当てられた優先順位値に基づいて、量子プログラムの各命令をスケジューリングするステップと、を含む。いくつかの実施形態では、暫定的な物理的スケジュール内の並列性が低下しない命令を集約して、更新された物理的スケジュールを生成するステップは、(a)ゲート依存性グラフ内のクリティカルパスを遅延させない、ゲート依存性グラフ内の2以上の命令の集合を伴う単調な動作を識別するステップと、(b)ゲート依存性グラフ内の2以上の命令を集約するステップと、(c)集約された各命令のレイテンシを更新するステップと、(d)ゲート依存性グラフに基づいて、集約された命令の回路をスケジューリングするステップと、を含む。いくつかの実施形態では、論理アセンブリ命令を、命令の複数の論理ブロックに集約するステップは、その積が対角ユニタリである論理アセンブリ命令の第1のセットを集約するステップをさらに含む。
【0053】
いくつかの実施形態では、複数の量子ビットを含む量子プロセッサ上で実行される量子プログラムをコンパイルする量子コンパイルエンジンが提供される。本開示の量子コンパイルエンジンは、複数の命令をソース言語で定義している量子プログラムを記憶した古典的メモリと、古典的メモリに通信可能に結合された古典的プロセッサと、を備える。古典的メモリは、古典的プロセッサによって実行されたときに、古典的プロセッサに実行させるコンピュータ実行可能命令を記憶している。コンピュータ実行可能命令は、(i)量子プログラムを、中間言語の論理アセンブリ命令にコンパイルするステップと、(ii)論理アセンブリ命令を、命令の複数の論理ブロックに集約するステップと、(iii)複数の論理ブロック間の可換性に基づいて、量子プログラムの論理的スケジュールを生成するステップと、(iv)論理的スケジュールに基づいて暫定的な物理的スケジュールを生成するステップであって、暫定的な物理的スケジュールは、論理的スケジュール内の論理アセンブリ命令の、量子プロセッサの複数の量子ビットへのマッピングを含む、該ステップと、(v)暫定的な物理的スケジュール内の並列性が低下しない命令を集約して、更新された物理的スケジュールを生成するステップと、(vi)量子プログラムの集約された命令のための最適化された制御パルスを生成するステップと、を含む。
【0054】
上述の本明細書の記載に基づいて理解されるように、本開示の上述の実施形態は、コンピュータソフトウェア、ファームウェア、ハードウェア、またはそれらの任意の組み合わせまたはサブセットを含むコンピュータプログラミングまたはエンジニアリング技術を用いて実施することができ、その技術的効果は、量子プロセッサのための量子プログラムをコンパイル及び最適化することである。コンピュータ可読コード手段を有する、そのような結果としてのプログラムは、1つ以上のコンピュータ可読媒体により具現化または提供され、それによって、本開示の説明された実施形態にしたがって、コンピュータプログラム製品(すなわち、製品)を製造することができる。コンピュータ可読媒体は、これに限定しないが、例えば、固定(ハード)ドライブ、ディスケット、光ディスク、磁気テープ、読み出し専用メモリ(ROM)などの半導体メモリ、及び/または、インターネットまたは他の通信ネットワーク若しくはリンクなどの任意の送受信媒体であってもよい。コンピュータコードを含む製品は、或る媒体から直接コードを実行して、或る媒体から別の媒体にコードをコピーすることによって、またはネットワークを介してコードを送信することによって、製造及び/または使用することができる。
【0055】
これらの従来のコンピュータプログラム(「プログラム」、「ソフトウェア」、「ソフトウェアアプリケーション」、「アプリケーション」、「コード」とも呼ばれる)は、従来のプログラマブルプロセッサ用の機械命令を含み、高レベルの手続き型及び/またはオブジェクト指向のプログラミング言語、及び/またはアセンブリ/機械言語によって実装することができる。本明細書で使用するとき、「機械可読媒体」「コンピュータ可読媒体」という用語は、機械命令及び/またはデータをプログラマブルプロセッサに提供するために使用される任意のコンピュータプログラム製品、装置及び/またはデバイス(例えば、磁気ディスク、光ディスク、メモリ、プログラマブルロジックデバイス(PLD))を指し、機械命令を機械可読信号として受信する機械可読媒体を含む。ただし、「機械可読媒体」及び「コンピュータ可読媒体」は、一過性の信号を含まない。「機械可読信号」という用語は、プログラマブルプロセッサに機械命令及び/またはデータを提供するために使用される任意の信号を指す。
【0056】
本明細書は、実施例を用いて、最良の実施の形態(ベストモード)を含む本発明の内容を開示し、かつ本発明を当業者が実施(任意の装置またはシステムの作製及び使用、並びに組み込まれた任意の方法の実施を含む)することを可能にしている。本発明の特許される技術範囲は、特許請求の範囲の請求項の記載によって定義され、当業者が想到可能な別の実施形態も含まれ得る。そのような別の実施形態は、各請求項の文言と相違しない構成要素を含む場合、または、各請求項の文言とは実質的に相違しない均等な構成要素を含む場合、その請求項の範囲内に含まれるものとする。
図1
図2
図3
図4A
図4B
図4C
図4D
図5A
図5B
図5C
図5D