(57)【要約】本開示の量子コンピュータシステムは、量子プログラムを中間言語の論理アセンブリ命令にコンパイルし、論理アセンブリ命令を命令の複数の論理ブロックに集約し、複数の論理ブロック間の可換性に基づいて量子プログラムの論理的スケジュールを生成し、論理的スケジュールに基づいて、論理的スケジュール内の論理アセンブリ命令の量子プロセッサの複数の量子ビットへのマッピングを含む暫定的な物理的スケジュールを生成し、暫定的な物理的スケジュール内の並列性が低下しない命令を集約して、更新された物理的スケジュールを生成し、量子プログラムの集約された命令のための最適化された制御パルスを生成し、最適化された制御パルスと更新された物理的スケジュールとを用いて量子プロセッサ上で量子プログラムを実行するコンピュータ実行可能命令を記憶した古典的メモリを備える。【選択図】図３
2022500776.tif 000002
【特許請求の範囲】
【請求項１】
量子プロセッサ上で命令をコンパイルして実行する量子コンピュータシステムであって、
複数の量子ビットを含む量子プロセッサと、
複数の命令をソース言語で定義している量子プログラムを記憶した古典的メモリと、
前記古典的メモリに通信可能に結合された古典的プロセッサと、を備え、
前記古典的メモリは、前記古典的プロセッサによって実行されたときに、前記古典的プロセッサに実行させるコンピュータ実行可能命令を記憶しており、
前記コンピュータ実行可能命令は、
前記量子プログラムを、中間言語の論理アセンブリ命令にコンパイルするステップと、
前記論理アセンブリ命令を、命令の複数の論理ブロックに集約するステップと、
前記複数の論理ブロック間の可換性に基づいて、前記量子プログラムの論理的スケジュールを生成するステップと、
前記論理的スケジュールに基づいて暫定的な物理的スケジュールを生成するステップであって、前記暫定的な物理的スケジュールは、前記論理的スケジュール内の前記論理アセンブリ命令の、前記量子プロセッサの前記複数の量子ビットへのマッピングを含む、該ステップと、
前記暫定的な物理的スケジュール内の並列性が低下しない命令を集約して、更新された物理的スケジュールを生成するステップと、
前記量子プログラムの前記集約された命令のための最適化された制御パルスを生成するステップと、
前記最適化された制御パルスと前記更新された物理的スケジュールとを用いて前記量子プロセッサ上で前記量子プログラムを実行するステップと、
を含む、システム。
【請求項２】
請求項１に記載の量子コンピュータシステムであって、
前記コンピュータ実行可能命令は、
前記論理アセンブリ命令から前記量子プログラムのゲート依存性グラフを生成するステップをさらに含み、
前記論理アセンブリ命令を、命令の複数の論理ブロックに集約する前記ステップは、前記ゲート依存性グラフにおける可換性を決定するステップをさらに含み、
前記論理アセンブリ命令の前記複数の論理ブロックへの集約は、前記ゲート依存性グラフ上で定義された集約規則に基づいて行われる、システム。
【請求項３】
請求項２に記載の量子コンピュータシステムであって、
前記ゲート依存性グラフにおける可換性を決定する前記ステップは、前記ゲート依存性グラフ内に１以上の中間集約命令を形成するステップを含む、システム。
【請求項４】
請求項２または３に記載の量子コンピュータシステムであって、
前記コンピュータ実行可能命令は、
前記量子プログラムの各命令の優先順位値を決定するステップをさらに含み、
該ステップは、
特定の命令について、前記ゲート依存性グラフから該特定の命令の各親を識別するステップと、
前記特定の命令の識別された各親について、該親の優先順位値から該親のレイテンシを減算し、それによって、前記特定の命令の潜在的な優先順位値を識別するステップと、
前記識別された親の前記識別された潜在的な優先順位値のうちの最小の潜在的な優先順位値を、前記特定の命令に割り当てるステップと、
前記割り当てられた優先順位値に基づいて、前記量子プログラムの各命令をスケジューリングするステップと、を含む、システム。
【請求項５】
請求項２〜４のいずれかに記載の量子コンピュータシステムであって、
前記暫定的な物理的スケジュール内の並列性が低下しない命令を集約して、更新された物理的スケジュールを生成する前記ステップは、
前記ゲート依存性グラフ内のクリティカルパスを遅延させない、前記ゲート依存性グラフ内の２以上の命令の集合を伴う単調な動作を識別するステップと、
前記ゲート依存性グラフ内の２以上の命令を集約するステップと、
前記集約された各命令のレイテンシを更新するステップと、
前記ゲート依存性グラフに基づいて、前記集約された命令の回路をスケジューリングするステップと、を含む、システム。
【請求項６】
請求項５に記載の量子コンピュータシステムであって、
前記量子プログラムを実行する前記ステップは、前記集約された命令の前記回路に基づいて、前記量子プロセッサに制御パルスシーケンスを送信するステップをさらに含む、システム。
【請求項７】
請求項１〜６のいずれかに記載の量子コンピュータシステムであって、
前記論理アセンブリ命令を、命令の複数の論理ブロックに集約する前記ステップは、その積が対角ユニタリである論理アセンブリ命令の第１のセットを集約するステップをさらに含む、システム。
【請求項８】
量子コンピュータの命令をコンパイルするコンピュータ実施方法であって、
当該方法は、古典的メモリと通信する古典的プロセッサを使用して実施され、
当該方法は、
複数の命令をソース言語で定義している量子プログラムをユーザから受け取るステップと
前記量子プログラムを、中間言語の論理アセンブリ命令にコンパイルするステップと、
前記論理アセンブリ命令を、命令の複数の論理ブロックに集約するステップと、
前記複数の論理ブロック間の可換性に基づいて、前記量子プログラムの論理的スケジュールを生成するステップと、
前記論理的スケジュールに基づいて暫定的な物理的スケジュールを生成するステップであって、前記暫定的な物理的スケジュールは、前記論理的スケジュール内の前記論理アセンブリ命令の、量子プロセッサの複数の量子ビットへのマッピングを含む、該ステップと、
前記暫定的な物理的スケジュール内の並列性が低下しない命令を集約して、更新された物理的スケジュールを生成するステップと、
前記量子プログラムの前記集約された命令のための最適化された制御パルスを生成するステップと、
前記最適化された制御パルスと前記更新された物理的スケジュールとを用いて前記量子プロセッサ上で前記量子プログラムを実行するステップと、
を含む、方法。
【請求項９】
請求項８に記載の方法であって、
前記論理アセンブリ命令から前記量子プログラムのゲート依存性グラフを生成するステップをさらに含み、
前記論理アセンブリ命令を集約する前記ステップは、前記ゲート依存性グラフにおける可換性を決定するステップをさらに含み、
前記論理アセンブリ命令の前記複数の論理ブロックへの集約は、前記ゲート依存性グラフ上で定義された集約規則に基づいて行われる、方法。
【請求項１０】
請求項９に記載の方法であって、
前記ゲート依存性グラフにおける可換性を決定する前記ステップは、前記ゲート依存性グラフ内に１以上の中間集約命令を形成するステップを含む、方法。
【請求項１１】
請求項９または１０に記載の方法であって、
前記量子プログラムの各命令の優先順位値を決定するステップをさらに含み、
該ステップは、
特定の命令について、前記ゲート依存性グラフから該特定の命令の各親を識別するステップと、
前記特定の命令の識別された各親について、該親の優先順位値から該親のレイテンシを減算し、それによって、前記特定の命令の潜在的な優先順位値を識別するステップと、
前記識別された親の前記識別された潜在的な優先順位値のうちの最小の潜在的な優先順位値を、前記特定の命令に割り当てるステップと、
前記割り当てられた優先順位値に基づいて、前記量子プログラムの各命令をスケジューリングするステップと、を含む、方法。
【請求項１２】
請求項９〜１１のいずれかに記載の方法であって、
前記暫定的な物理的スケジュール内の並列性が低下しない命令を集約して、更新された物理的スケジュールを生成する前記ステップは、
前記ゲート依存性グラフ内のクリティカルパスを遅延させない、前記ゲート依存性グラフ内の２以上の命令の集合を伴う単調な動作を識別するステップと、
前記ゲート依存性グラフ内の２以上の命令を集約するステップと、
前記集約された各命令のレイテンシを更新するステップと、
前記ゲート依存性グラフに基づいて、前記集約された命令の回路をスケジューリングするステップと、を含む、方法。
【請求項１３】
請求項１２に記載の方法であって、
前記量子プログラムを実行する前記ステップは、前記集約された命令の前記回路に基づいて、前記量子プロセッサに制御パルスシーケンスを送信するステップをさらに含む、方法。
【請求項１４】
請求項８〜１３のいずれかに記載の方法であって、
前記論理アセンブリ命令を、命令の複数の論理ブロックに集約する前記ステップは、その積が対角ユニタリである論理アセンブリ命令の第１のセットを集約するステップをさらに含む、方法。
【請求項１５】
少なくとも１つの古典的プロセッサによって実行されたときに、該プロセッサに実行させるコンピュータ実行可能命令が記憶されたコンピュータ読み取り可能な記憶媒体であって、
前記コンピュータ実行可能命令は、
複数の命令をソース言語で定義している量子プログラムをユーザから受け取るステップと
前記量子プログラムを、中間言語の論理アセンブリ命令にコンパイルするステップと、
前記論理アセンブリ命令を、命令の複数の論理ブロックに集約するステップと、
前記複数の論理ブロック間の可換性に基づいて、前記量子プログラムの論理的スケジュールを生成するステップと、
前記論理的スケジュールに基づいて暫定的な物理的スケジュールを生成するステップであって、前記暫定的な物理的スケジュールは、前記論理的スケジュール内の前記論理アセンブリ命令の、量子プロセッサの複数の量子ビットへのマッピングを含む、該ステップと、
前記暫定的な物理的スケジュール内の並列性が低下しない命令を集約して、更新された物理的スケジュールを生成するステップと、
前記量子プログラムの前記集約された命令のための最適化された制御パルスを生成するステップと、
前記最適化された制御パルスと前記更新された物理的スケジュールとを用いて前記量子プロセッサ上で前記量子プログラムを実行するステップと、
を含む、記録媒体。
【請求項１６】
請求項１５に記載の記憶媒体であって、
前記コンピュータ実行可能命令は、
前記論理アセンブリ命令から前記量子プログラムのゲート依存性グラフを生成するステップをさらに含み、
前記論理アセンブリ命令を、命令の複数の論理ブロックに集約する前記ステップは、前記ゲート依存性グラフにおける可換性を決定するステップをさらに含み、
前記論理アセンブリ命令の前記複数の論理ブロックへの集約は、前記ゲート依存性グラフ上で定義された集約規則に基づいて行われる、記録媒体。
【請求項１７】
請求項１６に記載の記憶媒体であって、
前記ゲート依存性グラフにおける可換性を決定する前記ステップは、前記ゲート依存性グラフ内に１以上の中間集約命令を形成するステップを含む、記録媒体。
【請求項１８】
請求項１６または１７に記載の記憶媒体であって、
前記コンピュータ実行可能命令は、
前記量子プログラムの各命令の優先順位値を決定するステップをさらに含み、
該ステップは、
特定の命令について、前記ゲート依存性グラフから該特定の命令の各親を識別するステップと、
前記特定の命令の識別された各親について、該親の優先順位値から該親のレイテンシを減算し、それによって、前記特定の命令の潜在的な優先順位値を識別するステップと、
前記識別された親の前記識別された潜在的な優先順位値のうちの最小の潜在的な優先順位値を、前記特定の命令に割り当てるステップと、
前記割り当てられた優先順位値に基づいて、前記量子プログラムの各命令をスケジューリングするステップと、を含む、記録媒体。
【請求項１９】
請求項１６〜１８のいずれかに記載の記憶媒体であって、
前記暫定的な物理的スケジュール内の並列性が低下しない命令を集約して、更新された物理的スケジュールを生成する前記ステップは、
前記ゲート依存性グラフ内のクリティカルパスを遅延させない、前記ゲート依存性グラフ内の２以上の命令の集合を伴う単調な動作を識別するステップと、
前記ゲート依存性グラフ内の２以上の命令を集約するステップと、
前記集約された各命令のレイテンシを更新するステップと、
前記ゲート依存性グラフに基づいて、前記集約された命令の回路をスケジューリングするステップと、を含む、記録媒体。
【請求項２０】
請求項１５〜１９のいずれかに記載の記憶媒体であって、
前記論理アセンブリ命令を、命令の複数の論理ブロックに集約する前記ステップは、その積が対角ユニタリである論理アセンブリ命令の第１のセットを集約するステップをさらに含む、記録媒体。
【請求項２１】
複数の量子ビットを含む量子プロセッサ上で実行される量子プログラムをコンパイルする量子コンパイルエンジンであって、
複数の命令をソース言語で定義している量子プログラムを記憶した古典的メモリと、
前記古典的メモリに通信可能に結合された古典的プロセッサと、を備え、
前記古典的メモリは、前記古典的プロセッサによって実行されたときに、前記古典的プロセッサに実行させるコンピュータ実行可能命令を記憶しており、
前記コンピュータ実行可能命令は、
前記量子プログラムを、中間言語の論理アセンブリ命令にコンパイルするステップと、
前記論理アセンブリ命令を、命令の複数の論理ブロックに集約するステップと、
前記複数の論理ブロック間の可換性に基づいて、前記量子プログラムの論理的スケジュールを生成するステップと、
前記論理的スケジュールに基づいて暫定的な物理的スケジュールを生成するステップであって、前記暫定的な物理的スケジュールは、前記論理的スケジュール内の前記論理アセンブリ命令の、前記量子プロセッサの前記複数の量子ビットへのマッピングを含む、該ステップと、
前記暫定的な物理的スケジュール内の並列性が低下しない命令を集約して、更新された物理的スケジュールを生成するステップと、
前記量子プログラムの前記集約された命令のための最適化された制御パルスを生成するステップと、
を含む、量子コンパイルエンジン。
【発明の詳細な説明】
【技術分野】
【０００１】
（関連出願の相互参照）
本出願は、２０１８年９月１３日に出願された「量子コンピュータのための集約命令をコンパイルするシステム及び方法（System and method for compilation of aggregated instructions for quantum computers）」という標題の米国仮特許出願第６２／７３０、８１３、及び２０１８年１１月３０日出願に出願された「量子コンピュータのための命令を最適化するシステム及び方法（System and method of optimizing instructions for quantum computers）」という標題の米国仮特許出願第６２／７７３、５８１号に基づく優先権を主張するものである。上記出願の内容の全体は、参照により本明細書中に援用される。
【０００２】
（連邦政府による資金提供を受けた研究開発の記載）
本発明は、米国国立科学財団から交付された助金成番号ＣＣＦ１７３０４４９及びＰＨＹ１６６０６８６の下に、米国政府の支援を受けてなされた。米国政府は本発明において一定の権利を有する。
【０００３】
（技術分野）
本開示は、一般に、量子コンピューティングに関し、より詳細には、量子コンピュータのための集約命令をコンパイルするシステム及び方法に関する。
【背景技術】
【０００４】
量子コンピューティングの近年の発展により、量子コンピュータは、古典的な扱いにくい問題の解決に近づいた。既存の量子プログラミング言語及びコンパイラは、１量子ビット及び２量子ビット（「ｑｕｂｉｔ」）ゲートから構成される量子アセンブリ言語を使用して、量子コンピュータ上でプリミティブな演算を準備及び実行している。ハードウェア及びソフトウェアにおける最近の進歩としては、ＩＢＭ社製の５０量子ビット量子マシンやＧｏｏｇｌｅ社製の７２量子ビットマシンなどのデバイス、並びに、量子近似最適化アルゴリズム（ＱＡＯＡ）や変分量子固有値ソルバー（ＶＱＥ）などのノイズの多い中間規模量子（「ＱＡＯＡＶＱＥ」）マシン用に調整された古典・量子ハイブリッドアルゴリズムが挙げられる。
【０００５】
計算のレイテンシ（待ち時間）は、近未来の量子コンピューティングにおける大きな課題である。従来のコンピュータシステムでは、一般的に、レイテンシを短縮することによって恩恵を受けることができるが（例えば、処理の高速化によってもたらされる若干の性能改善のために）、量子コンピュータシステムでは、レイテンシは、実存的な脅威をもたらす。量子コンピュータシステムでは、出力の忠実度は、レイテンシとともに少なくとも指数関数的に減少する。したがって、近未来の量子コンピュータシステムでは、レイテンシの短縮は、若干の利便性どころではない。むしろ、量子ビットのデコヒーレンスが生じて無用な結果が生成される前に計算を確実に終了させることによって、レイテンシ削減は近未来のマシン上での新しい計算を実際に可能にする。
【０００６】
残念ながら、古典的なコンピュータシステムのスタックを反映した既存の量子コンピューティングの抽象化は、レイテンシに大きな影響を与える非効率性をもたらす。このような従来のゲートベースのアプローチでは、プログラムは、１量子ビット及び２量子ビットの演算を利用する量子アセンブリ命令（例えば、ゲート）にコンパイルされる。このような量子アセンブリは、分解アルゴリズムが存在する限られた普遍的な演算セットを提供する仮想的な命令セットアーキテクチャ（「ＩＳＡ」）を表す。これらのゲートは、その後、基礎となる物理的ハードウェア上で指定された演算を実行する電気信号である制御パルスに変換する必要がある。しかしながら、基礎となる物理的ハードウェアは一般的に、特定のアーキテクチャに関して効率的な物理的実装を可能にする異なる演算セットを実装している。このため、表現論理ゲートと、基礎となる量子コンピュータシステム上で効率的に実行される命令セットとの間に、ミスマッチが生じる。
【０００７】
したがって、既存の抽象化の障壁を越えて最適化することによって、大量の量子ビットに対して実用的であるとともに、レイテンシを低減する量子コンパイル技術が求められている。
【発明の概要】
【課題を解決するための手段】
【０００８】
一態様では、量子プロセッサ上で命令をコンパイルして実行する量子コンピュータシステムが提供される。本開示の量子コンピュータシステムは、複数の量子ビットを含む量子プロセッサを備える。本開示の量子コンピュータシステムはまた、量子プログラムを記憶した古典的メモリを備える。量子プログラムは、複数の命令をソース言語で定義している。本開示の量子コンピュータシステムは、古典的メモリに通信可能に結合された古典的プロセッサをさらに備える。古典的メモリは、古典的プロセッサによって実行されたときに、古典的プロセッサに実行させるコンピュータ実行可能命令を記憶している。コンピュータ実行可能命令は、量子プログラムを、中間言語の論理アセンブリ命令にコンパイルするステップを含む。また、コンピュータ実行可能命令は、論理アセンブリ命令を、命令の複数の論理ブロックに集約するステップを含む。また、コンピュータ実行可能命令は、複数の論理ブロック間の可換性に基づいて、量子プログラムの論理的スケジュールを生成するステップを含む。また、コンピュータ実行可能命令は、論理的スケジュールに基づいて暫定的な物理的スケジュールを生成するステップを含む。暫定的な物理的スケジュールは、論理的スケジュール内の論理アセンブリ命令の、量子プロセッサの複数の量子ビットへのマッピングを含む。また、コンピュータ実行可能命令は、暫定的な物理的スケジュール内の並列性が低下しない命令を集約して、更新された物理的スケジュールを生成するステップを含む。また、コンピュータ実行可能命令は、量子プログラムの集約された命令のための最適化された制御パルスを生成するステップを含む。また、コンピュータ実行可能命令は、最適化された制御パルスと更新された物理的スケジュールとを用いて量子プロセッサ上で量子プログラムを実行するステップを含む。
【０００９】
別の実施形態では、量子コンピュータの命令をコンパイルするコンピュータ実施方法が提供される。本開示の方法は、古典的メモリと通信する古典的プロセッサを使用して実施される。本開示の方法は、量子プログラムをユーザから受け取るステップを含む。量子プログラムは、複数の命令をソース言語で定義している。また、本開示の方法は、量子プログラムを、中間言語の論理アセンブリ命令にコンパイルするステップを含む。また、本開示の方法は、論理アセンブリ命令を、命令の複数の論理ブロックに集約するステップを含む。また、本開示の方法は、複数の論理ブロック間の可換性に基づいて、量子プログラムの論理的スケジュールを生成するステップを含む。また、本開示の方法は、論理的スケジュールに基づいて暫定的な物理的スケジュールを生成するステップを含む。暫定的な物理的スケジュールは、論理的スケジュール内の論理アセンブリ命令の、量子プロセッサの複数の量子ビットへのマッピングを含む。また、本開示の方法は、暫定的な物理的スケジュール内の並列性が低下しない命令を集約して、更新された物理的スケジュールを生成するステップを含む。また、本開示の方法は、量子プログラムの集約された命令のための最適化された制御パルスを生成するステップを含む。また、本開示の方法は、最適化された制御パルスと更新された物理的スケジュールとを用いて量子プロセッサ上で量子プログラムを実行するステップを含む。
【００１０】
さらに別の実施形態では、少なくとも１つの古典的プロセッサによって実行されたときに、該プロセッサに実行させるコンピュータ実行可能命令が記憶されたコンピュータ読み取り可能な記憶媒体が提供される。コンピュータ実行可能命令は、量子プログラムをユーザから受け取るステップを含む。量子プログラムは、複数の命令をソース言語で定義している。また、コンピュータ実行可能命令は、量子プログラムを、中間言語の論理アセンブリ命令にコンパイルするステップを含む。また、コンピュータ実行可能命令は、論理アセンブリ命令を、命令の複数の論理ブロックに集約するステップを含む。また、コンピュータ実行可能命令は、複数の論理ブロック間の可換性に基づいて、量子プログラムの論理的スケジュールを生成するステップを含む。また、コンピュータ実行可能命令は、論理的スケジュールに基づいて暫定的な物理的スケジュールを生成するステップを含む。暫定的な物理的スケジュールは、論理的スケジュール内の論理アセンブリ命令の、量子プロセッサの複数の量子ビットへのマッピングを含む。また、コンピュータ実行可能命令は、暫定的な物理的スケジュール内の並列性が低下しない命令を集約して、更新された物理的スケジュールを生成するステップを含む。また、コンピュータ実行可能命令は、量子プログラムの集約された命令のための最適化された制御パルスを生成するステップを含む。また、コンピュータ実行可能命令は、最適化された制御パルスと更新された物理的スケジュールとを用いて量子プロセッサ上で量子プログラムを実行するステップを含む。
【図面の簡単な説明】
【００１１】
【図１】図１〜図５Ｄは、本開示の方法及びシステムの例示的な実施形態を示す。図１は、量子コンピュータ装置上で実行する命令を最適化するための例示的な量子コンピュータシステムを示す図である。
【図２】図２は、図１に示したコンパイルエンジンのコンポーネント図である。
【図３】図３は、図１に示した量子コンピュータ装置上で実行する量子プログラムのコンパイルを最適化する方法の一例を説明するためのフロー図である。
【図４Ａ】図４Ａ〜４Ｄは、図１のコンパイルエンジンによって生成されるゲート依存性グラフの例を示す図である。
【図４Ｂ】図４Ａ〜４Ｄは、図１のコンパイルエンジンによって生成されるゲート依存性グラフの例を示す図である。
【図４Ｃ】図４Ａ〜４Ｄは、図１のコンパイルエンジンによって生成されるゲート依存性グラフの例を示す図である。
【図４Ｄ】図４Ａ〜４Ｄは、図１のコンパイルエンジンによって生成されるゲート依存性グラフの例を示す図である。
【図５Ａ】図５Ａ〜５Ｄは、コンフリクトする命令をスケジューリングするためにコンパイルエンジンによって使用される例示的な計算グラフの各段階を示す。
【図５Ｂ】図５Ａ〜５Ｄは、コンフリクトする命令をスケジューリングするためにコンパイルエンジンによって使用される例示的な計算グラフの各段階を示す。
【図５Ｃ】図５Ａ〜５Ｄは、コンフリクトする命令をスケジューリングするためにコンパイルエンジンによって使用される例示的な計算グラフの各段階を示す。
【図５Ｄ】図５Ａ〜５Ｄは、コンフリクトする命令をスケジューリングするためにコンパイルエンジンによって使用される例示的な計算グラフの各段階を示す。
【発明を実施するための形態】
【００１２】
以下の詳細な説明は、本開示の実施形態の例を説明するものであり、限定するものではない。本開示は、量子コンピューティングに一般的に適用することを意図している。
【００１３】
既存の量子プログラミング言語及びコンパイラは、１量子ビットゲート及び２量子ビットゲートから構成される量子アセンブリ言語を使用する。量子コンパイラフレームワークが、この量子アセンブリを、制御パルス、一般的には、特定の量子コンピュータ装置上で指定された計算を実行する電気信号に変換する。しかしながら、古典的コンパイル技術を量子コンピューティング（量子計算）の文脈で使用することには、多数の非効率的な点及び短所、並びに、一般的な古典的コンピューティング環境では経験したことのない新しい問題が存在する。
【００１４】
この問題に対処するために、本明細書では、量子コンピュータシステム及びそれに関連する方法を記載する。本開示の量子コンピュータシステムは、量子プロセッサ上で実行する量子プログラムを準備及び最適化するように構成されたコンパイルエンジン（例えば、古典的コンピュータ装置上で実行される）を含む。いくつかの例では、量子プロセッサは、量子プログラムの実行に使用するための数十個または数百個の量子ビットを含むことができ、近い将来、より大きな量子コンピュータが予想される。しかしながら、非常に多くの量子ビットにおける制御パルスを同時に最適化することは、量子ビットの数に対して指数関数的に増大する計算上複雑な演算である。従来のアルゴリズムは、現在利用可能な最良のスーパコンピュータであっても、合理的に制限された前処理時間では適切な解が得られない可能性がある。
【００１５】
したがって、本開示のコンパイルエンジンは、非常に多くの量子ビットにおける演算をスケジューリングするという大きな問題を、複数のより小さな問題に分割するとともに（例えば、量子ビットのグループ化、及びプログラム命令のサブセットのグループ化）、それらのグループ化を最適化して並列性を促進し、コンパイルの論理的命令と様々な種類の量子プロセッサの物理的制約との間の特定のミスマッチに対処するコンパイルフレームワークを提供する。より具体的には、本開示のコンパイルエンジンは、量子プログラムの論理命令に対して論理的ブロック化を実施し、１量子ビット及び２量子ビットの演算を量子ビットグループ（例えば、量子プロセッサによって提供される量子ビットの全セットのサブセット）にグループ化する。これらのグループ化のサイズは、パルス最適化の性能閾値に基づいて決定され、合理的な処理時間内にパルス最適化を十分に実施することができるように、グループサイズを制限する。例えば、基礎となるパルス最適化アルゴリズムは、約１０量子ビットまでは、十分な性能を発揮すると判断することができる。したがって、５０量子ビット量子プロセッサの場合、本開示のコンパイルエンジンは、論理命令を、５つの１０量子ビットブロックに分割することによって、パルス最適化の複雑さを低減し、これにより、合理的な処理時間内に各ブロックのパルス最適化を実施することを可能にする。
【００１６】
なお、論理命令を複数のブロックに分割すると、問題が発生する恐れがある。例えば、グループ化が不十分である場合、グループ化により、並列化が可能な部分を直列化してしまうことがある。さらに、基礎となる量子ハードウェアの性質に起因して、特定の種類の演算をまとめてグループ化することによって、効率を向上させることができる（例えば、必要とされるパルスシーケンスの数を減らすことができる）。このため、本開示のコンパイルエンジンは、これらの特徴を考慮して、戦略的に命令をグループ化する。
【００１７】
本明細書で使用するとき、「古典的」という用語は、従来のトランジスタベースのコンピューティング技術を指す。この用語は、必要に応じて、従来のコンピュータ装置またはそれに関連するハードウェア、ソフトウェア、アルゴリズムなどを、「量子」コンピュータと区別するために使用される。量子コンピュータまたはそれに関連するハードウェア、ソフトウェア、アルゴリズムなどは一般的に、量子力学の量子現象に依存して処理演算を実行するという点で、古典的コンピュータ装置と区別される。古典的コンピュータの例としては、従来のパーソナルコンピュータ、サーバ、タブレット、スマートフォン、ｘ８６ベースプロセッサ、ランダムアクセスメモリ（「ＲＡＭ」）モジュールなどが挙げられる。量子コンピュータの例としては、ＩＢＭ社製の「ＩＢＭ  Ｑ」装置、Ｇｏｏｇｌｅ社製の「Ｂｒｉｓｔｌｅｃｏｎｅ」量子コンピュータ、Ｉｎｔｅｌ社製の「Ｔａｎｇｌｅ  Ｌａｋｅ」量子コンピュータ、及び、Ｄ−Ｗａｖｅ社製の「２０００Ｑ」などが挙げられる。「古典的ビット」または「ｃｂｉｔ」という用語は、本明細書では、古典的コンピュータにおけるビットを指すために使用される。「量子ビット」という用語は、本明細書では、量子コンピュータにおける量子ビットを指すために使用される。
【００１８】
図１は、量子コンピュータ装置１３０上で実行する命令を最適化するための例示的な量子コンピュータシステム１００を示す図である。量子コンピュータシステム１００は、量子コンピュータ装置１３０上で実行する量子プログラム１１２を準備（例えば、コンパイル及び最適化）するように構成された制御コンピュータ装置１１０を含む。量子コンピュータ装置１３０は、量子プログラム１１２を実行する量子プロセッサ１３２を表す複数の量子ビット１３４を含む。例示的な本実施形態では、量子プロセッサ１３２は、５０個または１００個の量子ビットを含む。なお、本開示は、数十個、数百個、またはそれ以上の個数の量子ビット１３４を有する量子プロセッサに適用可能であり、かつ有益であると考えられることを理解されたい。
【００１９】
量子ビット１３４は、図１に示す量子コンピュータ装置１３０などの量子コンピュータ装置の基本構成要素である。古典的ビット（「ｃｂｉｔ」）とは対照的に、量子ビットは、本明細書では、｜０＞及び｜１＞として表記される論理状態が重なり合った状態で存在することができる。量子ビットの一般的な量子状態は、次のように表される。
【００２０】
【数１】
2022500776.tif 000003
【００２１】
式中、α、βは、｜α｜２＋｜β｜２＝１の複素係数である。０／１基底で測定すると、上記の量子状態は、それぞれ｜α｜２及び｜β｜２の確率で、｜０＞または｜１＞に崩壊する。量子ビット１３４は、ブロッホ球と呼ばれる３次元球上の点として可視化することができる。量子ビット１３４は、イオントラップ、量子ドットシステム、及び例示的な本実施形態では超電導回路を含む、様々な量子情報処理（ＱＩＰ）プラットフォーム上で実現することができる。量子論理状態の数は、量子プロセッサ１３２内の量子ビット１３４の数に応じて指数関数的に増加する。例えば、３個の量子ビット１３４を有するシステムでは、８つの論理状態（｜０００＞、｜００１＞、｜０１０＞、｜０１１＞、・・・、｜１１１＞）を重ね合わせることができる。この性質は、古典的コンピューティングよりも飛躍的に速度が向上する可能性の基礎となる。換言すれば、指数関数的な数の相関した論理状態を、線形数の量子ビット１３４を用いて、量子コンピュータシステム１００によって同時に記憶及び処理することができる。
【００２２】
量子コンパイル中に、量子プログラム１１２は、まず、論理量子ゲートと呼ばれる１量子ビット及び２量子ビットの離散的な量子演算のセットに分解される。これらの量子ゲートは、ユニタリ行列として行列形式で表される。１量子ビットゲートは、ブロッホ球の特定の軸に沿った回転に対応する。量子ＩＳＡの例では、１量子ビットゲートセットは、ブロック球のｘ軸、ｙ軸、及びｚ軸に沿った回転を含む。これらのゲートは、本明細書では、それぞれ、Ｒｘゲート、Ｒｙゲート、及びＲｚゲートと表記する。さらに、量子ＩＳＡは、対角ｘ＋ｚ軸を中心とする回転に対応するアダマールゲートも含むことができる。量子ＩＳＡにおける２量子ビット論理ゲートの一例は、制御ＮＯＴ（ＣＮＯＴ）ゲートである。このＣＮＯＴゲートは、制御量子ビットが｜１＞の場合にはターゲットの量子ビットの状態を反転させ、制御量子ビットが｜０＞の場合にはターゲットの量子ビットの状態を変化させない。例えば、ＣＮＯＴゲートは、｜１０＞を｜１１＞に送り、｜１１＞を｜１０＞に送り、それ以外の他の論理状態を保持する。
【００２３】
さらに、量子プログラム１１２のコンパイル中に一般的に使用される一般的な論理アセンブリ命令は、使用される可能性のある物理的ハードウェアの種類のバリエーションを直接考慮せずに設計されていることを理解されたい。このため、論理命令と、特定のＱＩＰプラットフォームの性能との間には、しばしばミスマッチが生じる。例えば、一部のＱＩＰプラットフォームでは、その特定の物理プラットフォームにＣＮＯＴゲートを直接実装する方法が明確でない場合がある。このため、ＣＮＯＴゲートは、標準的なゲートベースのコンパイルにおいて、複数の物理ゲートにさらに分解してもよい。様々なアーキテクチャのための他の例示的な物理量子ゲートでは、例えば、量子ドットなどのハイゼンベルグ相互作用ハミルトニアンを有するプラットフォームでは、直接実装可能な２量子ビット物理ゲートは、√ＳＷＡＰゲート（２回適用したときにＳＷＡＰを実行する）である。ジョセフソン磁束量子ビットの超伝導システムやＮＭＲ量子システムなどの、ＺＺ相互作用ハミルトニアンを有するプラットフォームでは、物理ゲートは、ＣＰｈａｓｅゲートであり、単一量子ビットの回転まではＣＮＯＴゲートと同一である。容量結合したジョセフソン電荷量子ビット（例えば、トランスモン量子ビット）などの、ＸＹ相互作用ハミルトニアンを有するプラットフォームでは、２量子ビットの物理ゲートは、ｉＳＷＡＰゲートである。双極子鎖相互作用を有するイオンプラットフォームでは、物理的２量子ビットゲートは、幾何位相ゲート及びＸＸゲートの２つが一般的である。
【００２４】
量子プロセッサ１３２は、外部の物理的操作によって、論理状態が跨る空間内の任意の状態に連続的に駆動することができる。制御フィールドと呼ばれる物理的操作は、基礎となるシステムに固有のものであり、制御フィールド及びシステムの特性は、ハミルトニアンと呼ばれるユニークで時間依存性の量を制御する。ハミルトニアンは、量子状態の発展経路を決定する。例えば、例示的な量子コンピュータ装置１３０などの超伝導システムでは、マイクロ波電気信号を印加することによって、量子ビット１３４を駆動してブロッホ球上で連続的に回転させることができる。マイクロ波信号の強度を変化させることによって、量子ビット１３４の回転速度を操作することができる。ハミルトニアンシステムをリアルタイムで操作する能力により、量子コンピュータシステム１００は、関連する制御フィールドの精密な制御を通じて、量子ビット１３４を目的の量子状態に導くことができる。したがって、量子コンピューティングは、量子ビット１３４の最終測定時にハミルトニアンが高確率で一致するように発展させた量子システムを構築することによって達成することができる。量子制御の文脈において、量子ゲートは、量子プロセッサ１３２上で実行される予めプログラムされた制御フィールドのセットと見なすことができる。
【００２５】
例示的な本実施形態では、制御コンピュータ装置１１０は、コンパイルエンジン１１４を含む。このコンパイルエンジン１１４は、動作中に、量子プログラム１１２を、（例えば、ソースコードから）最適化された物理的スケジュール１１６にコンパイルするように構成されている。最適化された物理的スケジュール１１６は、最適化された制御パルス１２０（例えば、予めプログラムされた制御フィールド）として信号発生器１１８から量子コンピュータ装置１３０に送信されると、量子コンピュータ装置１３０に量子プログラム１１２を実行させて実行結果１４０を生成する、制御命令及びそれに関連するスケジュールのセットを表す。例示的な本実施形態では、量子コンピュータ装置１３０は超伝導デバイスであり、信号発生器１１８は、最適化された制御パルス１２０を量子プロセッサ１３２上で実行するように構成された任意波形発生器（「ＡＷＧ」）である（例えば、量子ビット１３４に送信されたマイクロ波パルスを介して、回転軸は信号の直交振幅変調によって決定され、回転角度は信号のパルス長によって決定される）。他の量子コンピューティングアーキテクチャは、異なるサポートハードウェアを有し得ることを理解されたい。
【００２６】
換言すれば、コンパイルエンジン１１４は、例示的な本実施形態では、量子プログラム１１２を入力として受け取り、一連の変換を適用して、量子コンピュータ装置１３０上で計算を実行する制御パルス（例えば、最適化された物理的スケジュール１１６）を生成する。例示的な本実施形態では、コンパイルエンジン１１４のいくつかの動作目的は、下記の（Ａ）〜（Ｃ）を含む。（Ａ）量子プログラム１１２の論理演算を、内部の最適制御ユニットモジュール（図１には図示せず）が命令サブセットのための適切な最適化ソリューションを生成することができるように、量子ビット１３４（及びそれに関連する演算）のサブセット、またはブロックに分割すること、（Ｂ）論理演算をブロックに分割することに固有の並列性の問題に対処すること、及び、（Ｃ）基礎となる物理的ハードウェアの長所及び短所に基づいて論理演算を最適化すること。
【００２７】
図２は、図１に示したコンパイルエンジン１１４のコンポーネント図である。図２に示すモジュールは、コンパイルエンジン１１４が量子プログラム１１２をコンパイルし、最適化された物理的スケジュール１１６を作成して実行するときの処理演算の種類とその演算を実行するレベルとに基づいて、サブシステムに分けられる。例示的な本実施形態では、コンパイルエンジン１１４は、プログラムレベル解析サブシステム２１０を含む。プログラムレベル解析サブシステム２１０は、ループ展開モジュール２１２と、モジュール平坦化モジュール２１４とを含む。プログラムレベル解析サブシステム２１０は、量子プログラム１１２をコンパイルして、量子アルゴリズムの高レベルの記述を、ゲート依存関係を保持する論理アセンブリに下げる。例示的な本実施形態では、論理アセンブリ命令は、オープン量子アセンブリ言語（ＱＡＳＭ）命令である。さらに、プログラムレベル解析サブシステムのモジュールは、プログラムレベルの解析を実行する。より具体的には、ループ展開モジュール２１２は、量子プログラム１１２上でループ展開を実行し、ループを直列命令に展開する。量子プログラムでは、入力は一般的に、事前に分かっている。このため、ループ展開モジュール２１２は、ループが何回実行されるかを判断して、ループ毎に、これらの命令をアンパックする。このタイプの最適化は、従来の古典的プログラムよりもプロセスの早い段階で、命令の性質についてより多くのことが分かっているので、より良い最適化を可能にする。モジュール平坦化モジュール２１４は、量子プログラムによって呼び出された関数を展開し、関数名をその内容（例えば、その関数を実行する命令）に置き換える。例示的な本実施形態では、プログラムレベル解析サブシステム２１０は、モジュール平坦化を含む様々なコンパイル処理のためにＳｃａｆｆＣＣコンパイラを使用する。
【００２８】
プログラムレベル解析サブシステム２１０は、論理レベルでの最適化処理のために（例えば、実際の量子ビット１３４への物理的マッピングがまだ存在しない場合）、論理レベル解析サブシステム２２０に渡される中間表現の論理アセンブリ命令を生成する。例示的な本実施形態では、論理レベル解析サブシステム２２０は、可換性検出モジュール２２２と、可換性考慮スケジューリングモジュール２２４とを含む。論理レベル解析サブシステム２２０は、可換性の高い命令を論理命令ブロック（ここでは「論理ブロック」と称する）に集約することによって、可換性を検出する。従来の論理スケジューリングとは異なり、論理レベル解析サブシステムは、論理レベルで可換性の高い命令を並べ替えることによって、はるかに効率的な論理的スケジュールを作成する。いくつかの既知の最適化システムは、物理レベルではあるが、可換性の最適化を実行する。しかしながら、近未来の量子アプリケーションでは、命令ブロック内の命令が可換なのではなく、命令ブロック全体が互いに可換であることが一般的である。このように、可換性検出モジュール２２２は、論理レベルでの可換性検出を実行し、入力された量子回路に対して可換性の高い命令セットを作成する。可換性考慮スケジューリングモジュール２２４は、可換性を用いて、並列性を有するさらなる論理レベル最適化を可能にする。より具体的には、可換性考慮スケジューリングモジュール２２４は、（例えば、超伝導アーキテクチャなどの通信コストが安い量子アーキテクチャにおいて）スワップのコストを気にせずに、並列性を最大化する命令のブロックを見つける。
【００２９】
可換性検出モジュール２２２及び可換性考慮スケジューリングモジュール２２４で実行される処理により、論理レベル解析サブシステム２２０は、最適化された論理的スケジュールをマッピングレベル解析サブシステム２３０に提供する。例示的な本実施形態では、マッピングレベル解析サブシステムは、論理命令の量子ビットを量子プロセッサ１３２の特定の量子ビット１３４に割り当てるとともに、プロセス中にマッピングレベルの最適化及び制約解決を実行する。より具体的には、マッピングレベル解析サブシステム２３０は、量子ビットマッピングモジュール２３２と、トポロジ制約解決モジュール２３４とを含む。論理レベル解析サブシステム２２０によって提供された、論理的にスケジューリングされた命令は、基礎となるハードウェアのいかなるトポロジ接続制約も考慮しない。例示的な本実施形態では、量子プロセッサ１３２は、直接隣接間でのみ２量子ビット演算が許可される矩形格子型の量子ビットトポロジである。量子ビットマッピングモジュール２３２は、特定の量子ビット１３４に命令を割り当てる。量子ビットマッピングモジュール２３２は、交差エッジが少ない切り口に沿って量子ビット相互作用グラフを二等分することによって、頻繁に相互作用する量子ビットを互いに近くに配置する。例示的な本実施形態では、量子ビットマッピングモジュール２３２は、ＭＥＴＩＳグラフ分割ライブラリを使用して、このアプローチを分割上で再帰的に適用し、ＣＮＯＴ演算の距離を低減するヒューリスティックなマッピングを生成し、互いに通信するものの間の距離を効果的に最小化する。量子ビットマッピングモジュール２３２によって距離が最小化されると、基礎となるハードウェアの物理的な制約が、量子ビットマッピングに関して考慮される。（例えば、現在のスケジュールとマッピングに基づいて）互いに隣接する必要があるが、まだ隣接していない２つの量子ビットの演算の場合、制御量子ビット及びターゲット量子ビットを互いに隣接するように移動させるために、ＳＷＡＰ演算が導入される。
【００３０】
量子ビットマッピングモジュール２３２及びトポロジ制約解決モジュール２３４で実行される処理により、マッピングレベル解析サブシステム２３０は、暫定的な物理的スケジュールをクロスレイヤ解析サブシステム２４０に提供する。例示的な本実施形態では、クロスレイヤ解析サブシステム２４０は、暫定的な物理的スケジュールをさらに最適化し、実行のために最適化された制御パルス１２０を生成するように構成される。クロスレイヤ解析サブシステム２４０は、物理的ブロック化モジュール２４４と、候補命令ユニタリモジュール２４６と、最適制御ユニットモジュール２４２とを含み、これらのモジュールが協働して、暫定的な物理的スケジュールを、物理的ブロック化及び最適制御がなされた最適化された制御パルス１２０に洗練する。
【００３１】
より具体的には、クロスレイヤ解析サブシステム２４０は、最適制御ユニットモジュール２４２と、物理的ブロック化モジュール２４４とを繰り返して、回路の最終的な集約命令（本明細書では、「物理的ブロック化」と称する）を生成する。最適制御ユニットモジュール２４２は、集約命令毎に、制御パルスを最適化する。より具体的には、最適制御ユニットモジュール２４２は、開始量子状態から最終量子状態までの最適なハミルトニアンパスを数値的に求める。リアルタイムで調整可能な外部制御フィールドのセット（ｕ１、・・・、ｕＭ）を有する量子システムについて考える。最適制御は、各制御フィールドｕを調整することによって、目標状態からの偏差を最小化する。例示的な本実施形態では、最適制御ユニットモジュール２４２は、勾配上昇法パルスエンジニアリング（「ＧＲＡＰＥ」）アルゴリズムを用いる。ＧＲＡＰＥでは、ループ毎に、発展の時間ステップｊにおける制御フィールドｕｋに関する目標損失関数（例えば、通常忠実度）の勾配を、シュレーディンガー方程式を解くことによって明確に計算することができる。制御フィールドｕｋ（ｊ）は、適応ステップサイズεで勾配方向に更新される。十分な繰り返し（ループ）により、収束した制御パルスが、量子コンピュータシステムを初期状態から最終状態まで最適化された経路に沿って駆動させることを期待することができる。勾配法の実行時間とメモリ使用量は、量子コンピュータシステムのサイズに応じて指数関数的に増加する。回路の最適化に必要とされる計算資源（例えば、時間、コンピュータメモリ、処理演算）も、指数関数的に増大する。また、量子コンピュータシステムの量子ビット数が増加すると、数値安定性は低下する。したがって、本開示の量子コンピュータシステム１００は、量子プロセッサ１３２を最大で１０量子ビットのグループに最適化する。これは、最適制御が、１０量子ビットのシステムを、計算リソースの実際的な割り当てによって効率的に最適化することができる傾向にあるからである。最適制御ユニットモジュール２４２は、自動微分及びＴｅｎｓｏｒｆｌｏｗフレームワークに基づいている。自動微分により、ユーザが高度な最適化基準を指定し、この段階でその基準をパルス生成に容易に取り入れることが可能となる（例えば、不要な量子ビットレベルの抑制、大きな電圧変動の回避、パルスレイテンシなど）。
【００３２】
マルチ量子ビット命令の集約における１つの問題は、並列性と、さらなる高速化のためのより大きな命令サイズの必要性との間のコンフリクトである。新しい命令を集約すると、並列性が損なわれる可能性がある。並列性を保護するために、クロスレイヤ解析サブシステム２４０は、より大きな集約命令を、より最適化された制御パルスを有するものとして扱う。さらに、クロスレイヤ解析サブシステム２４０はまた、単調な動作を、たとえ新しい命令内のパルスが最適化されなくてもクリティカルパスを遅延させない動作として識別する。なぜなら、これらの動作では、並列性が損なわれないので、命令の集合を集約することによる回路レイテンシの低減の報酬は、集合のサブセットを集約することよりも厳密に高いからである。したがって、単調な動作は、元の回路の深さと動作実行時の深さとを明示的に計算することによって、チェックすることができる。物理的ブロック化中、物理的ブロック化モジュール２４４は、量子プログラム１１２の命令を表すために使用されるゲート依存性グラフ（「ＧＤＧ」）をトラバースする。ＧＤＧ内の命令毎に、単調な動作が検索され、最良の動作が特定され、グローバルテーブルに保持される。ＧＤＧのトラバース後、グローバルテーブルに保持された最良の動作が実行され、動作テーブルのＧＤＧが更新される。このことを、それ以上の動作を実行できなくなるまで繰り返す。次いで、最適制御ユニットモジュール２４２に問い合わせることにより、各集約命令のレイテンシが更新される。この更新された命令のレイテンシは回路構造を変化させ、これにより、より単調な動作を生成することができる。このように、クロスレイヤ解析サブシステム２４０は、ＧＤＧが収束するまで、最適制御ユニットモジュール２４２を使用して、物理的集約及び更新を繰り返し行う。
【００３３】
図３は、図１に示した量子コンピュータ装置１３０上で実行する量子プログラム１１２のコンパイルを最適化する例示的な方法３００を説明するためのフロー図である。例示的な本実施形態では、方法３００は、制御コンピュータ装置１１０上で（例えば、コンパイルエンジン１１４のサブシステム及びモジュールによって）実行される。コンパイルエンジン１１４は、量子プログラム１１２のソースコードから開始する。コンパイルエンジン１１４は、図２のループ展開モジュール２１２に関して説明したように、量子プログラム１１２に対してループ展開を実行し（ステップ３１０）、次いで、図２のモジュール平坦化モジュール２１４に関して説明したように、モジュール平坦化を実行する（ステップ３１２）。次に、コンパイルエンジン１１４は、量子プログラム１１２を論理アセンブリ３１６にコンパイルする（ステップ３１４）。例示的な本実施形態では、このコンパイルは、ＳｔａｆｆＣＣコンパイラを用いて実行される。論理アセンブリ３１６は、例えば、ＱＡＳＭ、ＯｐｅｎＱＡＳＭ、ＸＡＣＣ中間表現（ＩＲ）、またはＬＬＶＭなどの任意の量子アセンブリであり得る。
【００３４】
例示的な本実施形態では、コンパイルエンジン１１４は、上記のステップで生成された論理アセンブリ３１６に対して論理的ブロック化を実行する。論理アセンブリ３１６は、ゲート依存性グラフとして抽象化することができる。図４Ａは、例示的なゲート依存性グラフ（ＧＤＧ）４００を示す。例示的なＧＤＧ４００は、三角形についてのＭＡＸ＿ＣＵＴ問題を解く量子近似最適化アルゴリズム（「ＱＡＯＡ」）を表す量子回路から構成される。この量子回路は、標準的なゲートセットに分解される。識別命令４１０が、深さ０で命令を接続するために、すべてのＧＤＧに対する仮想ルートとして挿入される。この仮想ルートは識別命令４１０であるので、計算結果やレイテンシに支障をきたすことはない。さらに、各パスには、それに対応する量子ビット名が付けられる。本開示の例では、ＧＤＧ４００は、ステップ３１２でのモジュール平坦化後の量子プログラムを表す（例えば、「平坦化された」量子プログラムである論理アセンブリ３１６）。
【００３５】
量子ＧＤＧと古典的プログラム依存性グラフ（「ＰＤＧ」）との主な違いは、量子ＧＤＧでは量子交換規則が適用されることである。量子ＧＤＧでは、連続する交換ゲートは親子関係を有さず、任意の順序でスケジューリングすることができる。ＧＤＧは、可視化ツールとして機能する、量子回路を探索するフレキシブルで系統的な方法を提供する。マージ可能な命令は、互いに対して直接的な先行命令、または交換可能な兄弟である。ＧＤＧをトラバースすることにより、マージ可能な命令を探索することができる。１量子ビットだけを共有する２つの４×４（２量子ビット）の非対角ユニタリ行列の積は対角行列にならないので、この検索は効率的である。したがって、命令毎に、それ以降の２量子ビットチェーンを検索する。より具体的には、図３及び図４Ａを参照して、コンパイルエンジン１１４は、論理的ブロック化の実行時には、いくつかの交換関係に依存する。重要な交換関係としては、２つの量子ゲートが異なる量子ビット交換に適用されること、ＣＮＯＴゲートの制御ビットがＺ回転で交換されること、２つのＣＮＯＴゲートは、その一方の制御が他方のターゲットでない場合に交換されること、及び、対角ユニタリ演算子を表す２つのゲートが交換されること（例えば、Ｚ回転が対角ユニタリである）、が挙げられる。コンパイルエンジン１１４は、他の交換規則を適用してもよい。この実施例では、２つのゲートＡ、Ｂ間の交換規則は、ユニタリ演算子
【００３６】
【数２】
2022500776.tif 000004
【００３７】
の等価性を明確にチェックすることによって解決される。
【００３８】
図４Ａに示した例では、図示したＣＮＯＴ−Ｒｚ−ＣＮＯＴ構造は相互に交換できるが、この構造における各ＣＮＯＴ及びＲｚは交換できない。このため、コンパイルエンジン１１４は、３つのＣＮＯＴ−Ｒｚ−ＣＮＯＴの命令セットのそれぞれを、交換可能な命令ブロックとして識別する。図４Ｂは、図４Ａに示した例から更新されたＧＤＧ４２０を示す。例示的な本実施形態では、ＧＤＧ４２０は、ステップ３２０においてコンパイルエンジン１１４によって可換性検出が実行された後のＧＤＧ４００の状態を表している。ＣＮＯＴ−Ｒｚ−ＣＮＯＴ命令の可換性を検出することによって、コンパイルエンジン１１４は、図４ＡのＧＤＧ４００を、図４Ｂに示すＧＤＧ４２０に変換する。この構成により、よりフレキシブルなスケジューリングが可能となる。ＧＤＧ４２０で連続したＣＮＯＴ−Ｒｚ−ＣＮＯＴ命令を縮小した後、コンパイラは、新しい可換ＣＮＯＴ−Ｒｚ−ＣＮＯＴ命令を任意の順序でスケジューリングすることができる。対照的に、図４Ａに示すＧＤＧ４００では、スケジューリングの選択肢が限られている。
【００３９】
再び図３を参照すると、コンパイルエンジン１１４は、次に、可換性を考慮したスケジューリングを実行する（ステップ３２２）。このスケジューリングを実行するために、例示的な本実施形態では、コンパイルエンジン１１４は、まず、各命令に対して、非正の優先順位値を割り当てる。或る命令の優先順位値は、その実行開始時間の負の値である。或る命令Ｇの優先順位値について、スケジューラは、ＧＤＧ４２０内の命令Ｇの親をすべて見つけ、見つけた親毎に、命令Ｇについての潜在的な優先順位値（可能性のある優先順位値）として、その優先順位値からそのレイテンシを差し引く。次に、命令Ｇに対して、そのすべての親の潜在的な優先順位値のうちの、最小の潜在的な優先順位値を割り当てる。ＧＤＧ４１０の仮想ルートでの識別命令４２０に対しては、ゼロ（０）の優先順位値及びゼロ（０）のレイテンシ値を割り当てる。交換命令は、互いにコンフリクトする可能性がある（例えば、図４Ｂの３つのＣＮＯＴ−Ｒｚ−ＣＮＯＴ命令は、互いに同一の優先順位値を有するが、同時にスケジューリングすることはできない）。
【００４０】
これらのコンフリクトする命令をスケジューリングするために、コンパイルエンジン１１４は、量子を頂点とし、ゲートをエッジとする計算グラフＧｃを形成する（例えば、１量子ビットゲートは、１つの頂点の自己ループとなる）。計算グラフＧｃがそれ自体のマッチングである場合、すべてのゲートを同時に実行することができるので、スケジューリングは必要ない。Ｇｃが一致しない場合、コンパイルエンジン１１４は、スケジューリングのためのコンフリクト解決プロセスを実行する。より具体的には、コンパイルエンジン１１４は、Ｇｃの最大カーディナリティマッチング（maximal cardinality matching）を見つけ、それらのエッジに高い優先順位値を割り当てた後、グラフの残りの部分に進む。図５Ａ〜５Ｄは、コンフリクトする命令をスケジューリングするためにコンパイルエンジン１１４によって使用される例示的な計算グラフ５００の段階を示す。例示的な本実施形態では、基礎となる量子システムは６量子ビットの装置であり、すべての命令は同一のレイテンシを有する。コンパイルエンジン１１４は、１回以上のラウンドのグラフ解析を実行し、各ラウンドにおいて、互いに隣接しないエッジの最大マッチングを見つけ、次いで、それらのエッジをスケジューリングする。このプロセスは、残りのエッジについて繰り返され、毎回、隣接していない残りのエッジの最大マッチングを見つけ、次いで、それらのエッジをスケジューリングする。図５Ａは、すべてのコンフリクトする演算を含んでいる。図５Ｂでは、コンフリクト解決プロセスは、４つのエッジを識別し、そのうちの３つは、１量子ビットの自己ループ（例えば、量子ビット２、５、６）であり、残りの１つは、量子ビット３及び４を含む２量子ビットの演算である。このように、これらの４つの演算は互いにコンフリクトせず、最初にスケジューリングされる。図５Ｃでは、コンフリクト解決プロセスは、次に、３つの残りのエッジ１及び２、エッジ３及び６、並びに、エッジ４及び５を識別する。これらの３つの演算はコンフリクトせず、次にスケジューリングされる。図５Ｄに示す第３ラウンドでは、コンフリクト解決プロセスは残りの１つの演算のみを識別し、この演算が最後にスケジューリングされる。コンパイルエンジン１１４は、直面したコンフリクトする命令のグループ毎に、コンフリクト解決プロセスを実行する。すべての命令に優先順位値を割り当てた後、コンパイルエンジン１１４は、優先順位値が高いものから低いものへ貪欲にスケジューリングする。
【００４１】
例示的な本実施形態では、コンパイルエンジン１１４は、並列性を最大化し、かつ、バックエンドのＳＷＡＰゲートの数を最小化しないように演算する。例示的な超伝導アーキテクチャなどの特定の量子コンピューティング環境では、ＳＷＡＰゲートは、一般的に高コストであるが、最適な制御がなく、場合によっては、レイテンシを低減するのに有益であり得る。
【００４２】
再び図３に戻り、ステップ３２２の可換性考慮スケジューリングの実行後、コンパイルエンジン１１４は、可換性を考慮して最適化された論理的スケジュール３２４を有する。コンパイルエンジン１１４は、上述したように、量子ビットマッピング及びトポロジ制約解決を実行する（ステップ３３０、ステップ３３２）。量子ビットマッピング及びトポロジ制約解決は、１以上のＳＷＡＰゲートの導入の可能性を含む、ＧＤＧ４２０の変更をもたらす。図４Ｃは、この例からの更新されたＧＤＧ４４０を示す。例示的な本実施形態では、ＧＤＧ４４０は、ステップ３２２の可換性考慮スケジューリング、ステップ３３０の量子ビットマッピング、及びステップ３３２のトポロジ制約解決がコンパイルエンジン１１４によって実行された後のＧＤＧ４００の状態を表す。本実施形態では、ＳＷＡＰゲート４４２がＧＤＧ４４０に追加されている。
【００４３】
再び図３を参照して、ステップ３３０の量子ビットマッピング及びステップ３３２のトポロジ制約解決により、量子プログラム１１２の演算のための暫定的な物理的スケジュール３３４が生成される。この段階で、コンパイルエンジン１１４は、集約命令スケジューリング（ステップ３４０）及びパルス最適化（ステップ３４４）を伴う物理的ブロック化の別のラウンドに入る。例示的な本実施形態では、コンパイルエンジン１１４は、（Ａ）２つの命令が互いに重なり合い（例えば、いくつかの共通の量子ビットを共有する）、かつ、（Ｂ）それらが共有する各量子ビットパス上でそれらの一方が他方の親であるか、またはそれらが互いに兄弟である場合に、命令集約のこの段階で連続する２つの命令を集約する。さらに、最適制御ユニットモジュール２４２の性能限界を考慮して、集約命令に含まれる量子ビット数を制限してもよい。コンパイルエンジン１１４は、図２に関して上述したようにして、集約命令スケジューリング（ステップ３４０）及びパルス最適化（ステップ３４４）を伴う物理的ブロック化を実行し、その物理的ブロック化を、コンパイルエンジン１１４が実行すべきさらなる集約を識別しなくなるまでループさせる。
【００４４】
さらに、コンパイルエンジン１１４は、この段階でさらなる可換性検出も実行する。実行される可能性のある命令交換の一例は、対角ユニタリを表す集約命令である。対角ユニタリは、量子化学応用の分解法や近未来の最適化アルゴリズムに広く用いられている。したがって、コンパイルエンジン１１４は、ＧＤＧ４６０をトラバースし、上述の動作空間において貪欲に対角ユニタリを表す２量子ビット命令を探索して集約し、より多くの可換性を抽出し、積が対角であるものをマージする。
【００４５】
図４Ｄは、この例から更新されたＧＤＧ４６０を示す。例示的な本実施形態では、ＧＤＧ４６０は、ステップ３４０の物理的ブロック化及びステップ３４４のパルス最適化がコンパイルエンジン１１４によって実行された後のＧＤＧ４００の状態を表しており、太い矢印はクリティカルパスを示している。例示的な本実施形態では、最終的な集約命令セットをカスタマイズした後、更新されたＧＤＧ４６０は、並列性及びパルス生成の両方について最適化される。この段階では、コンパイルエンジン１１４は、集約命令が表すユニタリ変換を計算し、その計算結果を最適制御ユニットモジュール２４２に送信して、パルス最適化（ステップ３４４）を実行する。最適制御ユニットモジュール２４２は、基礎となる量子ハードウェア（例えば、量子プロセッサ１３２）のために制御パルスを最適化する。最適化された制御パルス１２０は、確率的勾配下降法を用いて所望のユニタリ演算を生成することができる。最適制御ユニットモジュール２４２は、回路レイテンシを最小にする忠実度閾値を超える制御パルスをリターンする。
【００４６】
再び図３を参照して、方法３００の完了時に、コンパイルエンジン１１４は、最適化された制御パルス１２０を生成して信号発生器１１８に送信する。そして、信号発生器１１８は、受信した最適化された制御パルス１２０を量子プロセッサ１３２上で実行する。
【００４７】
いくつかの実施形態では、量子プロセッサ上で命令をコンパイルして実行する量子コンピュータシステムが提供される。本開示の量子コンピュータシステムは、複数の量子ビットを含む量子プロセッサと、複数の命令をソース言語で定義している量子プログラムを記憶した古典的メモリと、古典的メモリに通信可能に結合された古典的プロセッサと、を備える。古典的メモリは、古典的プロセッサによって実行されたときに、古典的プロセッサに実行させるコンピュータ実行可能命令を記憶している。コンピュータ実行可能命令は、（ｉ）量子プログラムを、中間言語の論理アセンブリ命令にコンパイルするステップと、（ｉｉ）論理アセンブリ命令を、命令の複数の論理ブロックに集約するステップと、（ｉｉｉ）複数の論理ブロック間の可換性に基づいて、量子プログラムの論理的スケジュールを生成するステップと、（ｉｖ）論理的スケジュールに基づいて暫定的な物理的スケジュールを生成するステップであって、暫定的な物理的スケジュールは、論理的スケジュール内の論理アセンブリ命令の、量子プロセッサの複数の量子ビットへのマッピングを含む、該ステップと、（ｖ）暫定的な物理的スケジュール内の並列性が低下しない命令を集約して、更新された物理的スケジュールを生成するステップと、（ｖｉ）量子プログラムの集約された命令のための最適化された制御パルスを生成するステップと、（ｖｉｉ）最適化された制御パルスと更新された物理的スケジュールとを用いて量子プロセッサ上で量子プログラムを実行するステップと、を含む。
【００４８】
いくつかの実施形態では、コンピュータ実行可能命令は、論理アセンブリ命令から量子プログラムのゲート依存性グラフを生成するステップをさらに含み、論理アセンブリ命令を、命令の複数の論理ブロックに集約するステップは、ゲート依存性グラフにおける可換性を決定するステップをさらに含み、論理アセンブリ命令の複数の論理ブロックへの集約は、ゲート依存性グラフ上で定義された集約規則に基づいて行われる。いくつかの実施形態では、ゲート依存性グラフにおける可換性を決定するステップは、ゲート依存性グラフ内に１以上の中間集約命令を形成するステップを含む。いくつかの実施形態では、量子プログラムの各命令の優先順位値を決定するステップをさらに含み、該ステップは、（ａ）特定の命令について、ゲート依存性グラフから該特定の命令の各親を識別するステップと、（ｂ）特定の命令の識別された各親について、該親の優先順位値から該親のレイテンシを減算し、それによって、特定の命令の潜在的な優先順位値を識別するステップと、（ｃ）識別された親の識別された潜在的な優先順位値のうちの最小の潜在的な優先順位値を、特定の命令に割り当てるステップと、（ｄ）割り当てられた優先順位値に基づいて、量子プログラムの各命令をスケジューリングするステップと、を含む。いくつかの実施形態では、暫定的な物理的スケジュール内の並列性が低下しない命令を集約して、更新された物理的スケジュールを生成するステップは、（ａ）ゲート依存性グラフ内のクリティカルパスを遅延させない、ゲート依存性グラフ内の２以上の命令の集合を伴う単調な動作を識別するステップと、（ｂ）ゲート依存性グラフ内の２以上の命令を集約するステップと、（ｃ）集約された各命令のレイテンシを更新するステップと、（ｄ）ゲート依存性グラフに基づいて、集約された命令の回路をスケジューリングするステップと、を含む。いくつかの実施形態では、量子プログラムを実行するステップは、集約された命令の回路に基づいて、量子プロセッサに制御パルスシーケンスを送信するステップをさらに含む。いくつかの実施形態では、論理アセンブリ命令を、命令の複数の論理ブロックに集約するステップは、その積が対角ユニタリである論理アセンブリ命令の第１のセットを集約するステップをさらに含む。
【００４９】
いくつかの実施形態では、量子コンピュータの命令をコンパイルするコンピュータ実施方法が提供される。本方法は、古典的メモリと通信する古典的プロセッサを使用して実施される。本方法は、（ｉ）複数の命令をソース言語で定義している量子プログラムをユーザから受け取るステップと、（ｉｉ）量子プログラムを、中間言語の論理アセンブリ命令にコンパイルするステップと、（ｉｉｉ）論理アセンブリ命令を、命令の複数の論理ブロックに集約するステップと、（ｉｖ）複数の論理ブロック間の可換性に基づいて、量子プログラムの論理的スケジュールを生成するステップと、（ｖ）論理的スケジュールに基づいて暫定的な物理的スケジュールを生成するステップであって、暫定的な物理的スケジュールは、論理的スケジュール内の論理アセンブリ命令の、量子プロセッサの複数の量子ビットへのマッピングを含む、該ステップと、（ｖｉ）暫定的な物理的スケジュール内の並列性が低下しない命令を集約して、更新された物理的スケジュールを生成するステップと、（ｖｉｉ）量子プログラムの集約された命令のための最適化された制御パルスを生成するステップと、（ｖｉｉｉ）最適化された制御パルスと更新された物理的スケジュールとを用いて量子プロセッサ上で量子プログラムを実行するステップと、を含む。
【００５０】
いくつかの実施形態では、本方法は、論理アセンブリ命令から量子プログラムのゲート依存性グラフを生成するステップをさらに含み、論理アセンブリ命令を集約するステップは、ゲート依存性グラフにおける可換性を決定するステップをさらに含み、論理アセンブリ命令の複数の論理ブロックへの集約は、ゲート依存性グラフ上で定義された集約規則に基づいて行われる。いくつかの実施形態では、ゲート依存性グラフにおける可換性を決定するステップは、ゲート依存性グラフ内に１以上の中間集約命令を形成するステップを含む。いくつかの実施形態では、本方法は、量子プログラムの各命令の優先順位値を決定するステップをさらに含み、該ステップは、（ａ）特定の命令について、ゲート依存性グラフから該特定の命令の各親を識別するステップと、（ｂ）特定の命令の識別された各親について、該親の優先順位値から該親のレイテンシを減算し、それによって、特定の命令の潜在的な優先順位値を識別するステップと、（ｃ）識別された親の識別された潜在的な優先順位値のうちの最小の潜在的な優先順位値を、特定の命令に割り当てるステップと、（ｄ）割り当てられた優先順位値に基づいて、量子プログラムの各命令をスケジューリングするステップと、を含む。いくつかの実施形態では、暫定的な物理的スケジュール内の並列性が低下しない命令を集約して、更新された物理的スケジュールを生成するステップは、（ａ）ゲート依存性グラフ内のクリティカルパスを遅延させない、ゲート依存性グラフ内の２以上の命令の集合を伴う単調な動作を識別するステップと、（ｂ）ゲート依存性グラフ内の２以上の命令を集約するステップと、（ｃ）集約された各命令のレイテンシを更新するステップと、（ｄ）ゲート依存性グラフに基づいて、集約された命令の回路をスケジューリングするステップと、を含む。いくつかの実施形態では、量子プログラムを実行するステップは、集約された命令の回路に基づいて、量子プロセッサに制御パルスシーケンスを送信するステップをさらに含む。いくつかの実施形態では、論理アセンブリ命令を、命令の複数の論理ブロックに集約するステップは、その積が対角ユニタリである論理アセンブリ命令の第１のセットを集約するステップをさらに含む。
【００５１】
いくつかの実施形態では、少なくとも１つの古典的プロセッサによって実行されたときに、該プロセッサに実行させるコンピュータ実行可能命令が記憶されたコンピュータ読み取り可能な記憶媒体が提供される。コンピュータ実行可能命令は、（ｉ）複数の命令をソース言語で定義している量子プログラムをユーザから受け取るステップと、（ｉｉ）量子プログラムを、中間言語の論理アセンブリ命令にコンパイルするステップと、（ｉｉｉ）論理アセンブリ命令を、命令の複数の論理ブロックに集約するステップと、（ｉｖ）複数の論理ブロック間の可換性に基づいて、量子プログラムの論理的スケジュールを生成するステップと、（ｖ）論理的スケジュールに基づいて暫定的な物理的スケジュールを生成するステップであって、暫定的な物理的スケジュールは、論理的スケジュール内の論理アセンブリ命令の、量子プロセッサの複数の量子ビットへのマッピングを含む、該ステップと、（ｖｉ）暫定的な物理的スケジュール内の並列性が低下しない命令を集約して、更新された物理的スケジュールを生成するステップと、（ｖｉｉ）量子プログラムの集約された命令のための最適化された制御パルスを生成するステップと、（ｖｉｉｉ）最適化された制御パルスと更新された物理的スケジュールとを用いて量子プロセッサ上で量子プログラムを実行するステップと、を含む。
【００５２】
いくつかの実施形態では、コンピュータ実行可能命令は、論理アセンブリ命令から量子プログラムのゲート依存性グラフを生成するステップをさらに含み、論理アセンブリ命令を、命令の複数の論理ブロックに集約するステップは、ゲート依存性グラフにおける可換性を決定するステップをさらに含み、論理アセンブリ命令の複数の論理ブロックへの集約は、ゲート依存性グラフ上で定義された集約規則に基づいて行われる。いくつかの実施形態では、ゲート依存性グラフにおける可換性を決定するステップは、ゲート依存性グラフ内に１以上の中間集約命令を形成するステップを含む。いくつかの実施形態では、コンピュータ実行可能命令は、量子プログラムの各命令の優先順位値を決定するステップをさらに含み、該ステップは、（ａ）特定の命令について、ゲート依存性グラフから該特定の命令の各親を識別するステップと、（ｂ）特定の命令の識別された各親について、該親の優先順位値から該親のレイテンシを減算し、それによって、特定の命令の潜在的な優先順位値を識別するステップと、（ｃ）識別された親の識別された潜在的な優先順位値のうちの最小の潜在的な優先順位値を、特定の命令に割り当てるステップと、（ｄ）割り当てられた優先順位値に基づいて、量子プログラムの各命令をスケジューリングするステップと、を含む。いくつかの実施形態では、暫定的な物理的スケジュール内の並列性が低下しない命令を集約して、更新された物理的スケジュールを生成するステップは、（ａ）ゲート依存性グラフ内のクリティカルパスを遅延させない、ゲート依存性グラフ内の２以上の命令の集合を伴う単調な動作を識別するステップと、（ｂ）ゲート依存性グラフ内の２以上の命令を集約するステップと、（ｃ）集約された各命令のレイテンシを更新するステップと、（ｄ）ゲート依存性グラフに基づいて、集約された命令の回路をスケジューリングするステップと、を含む。いくつかの実施形態では、論理アセンブリ命令を、命令の複数の論理ブロックに集約するステップは、その積が対角ユニタリである論理アセンブリ命令の第１のセットを集約するステップをさらに含む。
【００５３】
いくつかの実施形態では、複数の量子ビットを含む量子プロセッサ上で実行される量子プログラムをコンパイルする量子コンパイルエンジンが提供される。本開示の量子コンパイルエンジンは、複数の命令をソース言語で定義している量子プログラムを記憶した古典的メモリと、古典的メモリに通信可能に結合された古典的プロセッサと、を備える。古典的メモリは、古典的プロセッサによって実行されたときに、古典的プロセッサに実行させるコンピュータ実行可能命令を記憶している。コンピュータ実行可能命令は、（ｉ）量子プログラムを、中間言語の論理アセンブリ命令にコンパイルするステップと、（ｉｉ）論理アセンブリ命令を、命令の複数の論理ブロックに集約するステップと、（ｉｉｉ）複数の論理ブロック間の可換性に基づいて、量子プログラムの論理的スケジュールを生成するステップと、（ｉｖ）論理的スケジュールに基づいて暫定的な物理的スケジュールを生成するステップであって、暫定的な物理的スケジュールは、論理的スケジュール内の論理アセンブリ命令の、量子プロセッサの複数の量子ビットへのマッピングを含む、該ステップと、（ｖ）暫定的な物理的スケジュール内の並列性が低下しない命令を集約して、更新された物理的スケジュールを生成するステップと、（ｖｉ）量子プログラムの集約された命令のための最適化された制御パルスを生成するステップと、を含む。
【００５４】
上述の本明細書の記載に基づいて理解されるように、本開示の上述の実施形態は、コンピュータソフトウェア、ファームウェア、ハードウェア、またはそれらの任意の組み合わせまたはサブセットを含むコンピュータプログラミングまたはエンジニアリング技術を用いて実施することができ、その技術的効果は、量子プロセッサのための量子プログラムをコンパイル及び最適化することである。コンピュータ可読コード手段を有する、そのような結果としてのプログラムは、１つ以上のコンピュータ可読媒体により具現化または提供され、それによって、本開示の説明された実施形態にしたがって、コンピュータプログラム製品（すなわち、製品）を製造することができる。コンピュータ可読媒体は、これに限定しないが、例えば、固定（ハード）ドライブ、ディスケット、光ディスク、磁気テープ、読み出し専用メモリ（ＲＯＭ）などの半導体メモリ、及び／または、インターネットまたは他の通信ネットワーク若しくはリンクなどの任意の送受信媒体であってもよい。コンピュータコードを含む製品は、或る媒体から直接コードを実行して、或る媒体から別の媒体にコードをコピーすることによって、またはネットワークを介してコードを送信することによって、製造及び／または使用することができる。
【００５５】
これらの従来のコンピュータプログラム（「プログラム」、「ソフトウェア」、「ソフトウェアアプリケーション」、「アプリケーション」、「コード」とも呼ばれる）は、従来のプログラマブルプロセッサ用の機械命令を含み、高レベルの手続き型及び／またはオブジェクト指向のプログラミング言語、及び／またはアセンブリ／機械言語によって実装することができる。本明細書で使用するとき、「機械可読媒体」「コンピュータ可読媒体」という用語は、機械命令及び／またはデータをプログラマブルプロセッサに提供するために使用される任意のコンピュータプログラム製品、装置及び／またはデバイス（例えば、磁気ディスク、光ディスク、メモリ、プログラマブルロジックデバイス（ＰＬＤ））を指し、機械命令を機械可読信号として受信する機械可読媒体を含む。ただし、「機械可読媒体」及び「コンピュータ可読媒体」は、一過性の信号を含まない。「機械可読信号」という用語は、プログラマブルプロセッサに機械命令及び／またはデータを提供するために使用される任意の信号を指す。
【００５６】
本明細書は、実施例を用いて、最良の実施の形態（ベストモード）を含む本発明の内容を開示し、かつ本発明を当業者が実施（任意の装置またはシステムの作製及び使用、並びに組み込まれた任意の方法の実施を含む）することを可能にしている。本発明の特許される技術範囲は、特許請求の範囲の請求項の記載によって定義され、当業者が想到可能な別の実施形態も含まれ得る。そのような別の実施形態は、各請求項の文言と相違しない構成要素を含む場合、または、各請求項の文言とは実質的に相違しない均等な構成要素を含む場合、その請求項の範囲内に含まれるものとする。
【図１】
2022500776.tif 000005
【図２】
2022500776.tif 000006
【図３】
2022500776.tif 000007
【図４Ａ】
2022500776.tif 000008
【図４Ｂ】
2022500776.tif 000009
【図４Ｃ】
2022500776.tif 000010
【図４Ｄ】
2022500776.tif 000011
【図５Ａ】
2022500776.tif 000012
【図５Ｂ】
2022500776.tif 000013
【図５Ｃ】
2022500776.tif 000014
【図５Ｄ】
2022500776.tif 000015
【国際調査報告】
2022500776.tif 000016
2022500776.tif 000017