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

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

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

特許7315550ソフトウェア定義された量子コンピュータ
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-07-18
(45)【発行日】2023-07-26
(54)【発明の名称】ソフトウェア定義された量子コンピュータ
(51)【国際特許分類】
   G06N 10/00 20220101AFI20230719BHJP
   G06F 8/41 20180101ALI20230719BHJP
【FI】
G06N10/00
G06F8/41
【請求項の数】 23
(21)【出願番号】P 2020528929
(86)(22)【出願日】2018-11-27
(65)【公表番号】
(43)【公表日】2021-02-15
(86)【国際出願番号】 US2018062553
(87)【国際公開番号】W WO2019108512
(87)【国際公開日】2019-06-06
【審査請求日】2021-11-26
(31)【優先権主張番号】62/591,641
(32)【優先日】2017-11-28
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】16/199,993
(32)【優先日】2018-11-26
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】520132894
【氏名又は名称】イオンキュー インコーポレイテッド
(74)【代理人】
【識別番号】100120891
【弁理士】
【氏名又は名称】林 一好
(74)【代理人】
【識別番号】100165157
【弁理士】
【氏名又は名称】芝 哲央
(74)【代理人】
【識別番号】100205659
【弁理士】
【氏名又は名称】齋藤 拓也
(74)【代理人】
【識別番号】100126000
【弁理士】
【氏名又は名称】岩池 満
(74)【代理人】
【識別番号】100185269
【弁理士】
【氏名又は名称】小菅 一弘
(72)【発明者】
【氏名】キム ジュンサン
(72)【発明者】
【氏名】モエリング デイヴィッド
(72)【発明者】
【氏名】シェハブ オマール
(72)【発明者】
【氏名】ナム ユンソン
(72)【発明者】
【氏名】ミズラヒ ジョナサン
(72)【発明者】
【氏名】アレン スチュワート
【審査官】山本 俊介
(56)【参考文献】
【文献】特開2006-331249(JP,A)
【文献】米国特許第07875876(US,B1)
(58)【調査した分野】(Int.Cl.,DB名)
G06N 10/00-10/80
G06F 8/41
(57)【特許請求の範囲】
【請求項1】
ソフトウェアプログラムからプログラミング命令を受信し、前記プログラミング命令に少なくとも一部基づいて制御信号を生成するように構成された制御ユニットと、
複数のキュービットと、を備え、前記複数のキュービットの数と、前記複数のキュービットの任意の2つの間の接続は、前記制御ユニットからの前記制御信号によりイネーブルにされ制御され、
前記制御ユニットは、動的に構成可能な数の論理的に別個のサブ制御ユニットを備え、論理的に別個のサブ制御ユニットの数は、量子コンピュータのソフトウェア定義された構成の特定の動作に対して必要とされる前記複数のキュービットの数に基づいており、各サブ制御ユニットは、前記制御ユニットにより受信された前記プログラミング命令のサブセットを使用することにより、独立してプログラム可能であり、各サブ制御ユニットは、それぞれのキュービットのサブセットに対する前記制御信号のサブセットを生成することにより前記複数のキュービットの異なるサブセットを別個に制御するように構成され、各サブ制御ユニットは、1つまたは複数のキュービットの制御を、隣接するサブ制御ユニットに転送するように構成された、
キュービット構成を制御するための量子コンピュータのソフトウェア定義された構成。
【請求項2】
ハードウェア記述言語は、前記制御ユニットおよび前記複数のキュービットを構成するために使用される、請求項1に記載のキュービット構成を制御するための量子コンピュータのソフトウェア定義された構成。
【請求項3】
前記制御ユニットは、前記複数のキュービットの数および前記複数のキュービットの任意の2つの間の接続を動的に調節する制御信号を生成するように構成される、請求項1に記載のキュービット構成を制御するための量子コンピュータのソフトウェア定義された構成。
【請求項4】
前記複数のキュービットは、前記ソフトウェアプログラムに関連づけられた特定の量子演算を実行するように構成され、1つまたは複数の例外は、前記ソフトウェアプログラムの実行中に処理される、請求項1に記載のキュービット構成を制御するための量子コンピュータのソフトウェア定義された構成。
【請求項5】
前記1つまたは複数の例外は、ハードウェア例外、ソフトウェア例外または両方を含む、請求項4に記載のキュービット構成を制御するための量子コンピュータのソフトウェア定義された構成。
【請求項6】
構成可能な数のモジュールであって、各モジュールが、制御ユニット、通信制御ユニット、および関連づけられた複数のキュービットを有し、前記構成可能な数のモジュールの各々における前記制御ユニットは、ソフトウェアプログラムからプログラミング命令を受信し、前記プログラミング命令に少なくとも一部基づいて制御信号を生成するように構成され、各モジュールにおける前記複数のキュービットの数および前記複数のキュービットの任意の2つの間の接続が、それぞれのモジュールに対する前記制御ユニットからの前記制御信号によりイネーブルにされ、制御される、構成可能な数のモジュールと、
前記モジュールの各々からの前記通信制御ユニットからの通信チャネルをイネーブルにして、異なるモジュール間に通信を提供するように構成されるスイッチ/ルータユニットと、
を備え、
各モジュールにおける前記制御ユニットはさらに、キュービットの異なるサブセットに対して別個の制御信号を生成することによりそれぞれのモジュールおける前記複数のキュービットの前記異なるサブセットを別個に制御し、前記モジュールにおけるキュービットの第1のサブセットとキュービットの第2のサブセットとの間で1つまたは複数のキュービットを転送するように構成され、転送される前記1つまたは複数のキュービットが、前記1つまたは複数のキュービットを受信する前記キュービットのサブセットに対して生成される別個の制御信号により制御される、
キュービット構成を制御する量子コンピュータのソフトウェア定義された構成。
【請求項7】
前記モジュールの構成可能な数は動的に変化する、請求項6に記載のキュービット構成を制御する量子コンピュータのソフトウェア定義された構成。
【請求項8】
各通信制御ユニットは、前記ソフトウェアプログラムからのプログラミング命令を受信して、前記プログラミング命令に少なくとも一部基づいて制御信号を生成するように構成される、請求項6に記載のキュービット構成を制御する量子コンピュータのソフトウェア定義された構成。
【請求項9】
各通信制御ユニットは、それぞれの通信チャネルに関連するそれぞれのモジュールにおける前記複数のキュービットの少なくとも1つを制御する、請求項8に記載のキュービット構成を制御する量子コンピュータのソフトウェア定義された構成。
【請求項10】
各モジュールに対して、
前記モジュールにおける前記複数のキュービットは、メモリ/オペレーションキュービットおよび通信キュービットを含み、前記メモリ/オペレーションキュービットは、それぞれのモジュールに対する前記制御ユニットからの制御信号によりイネーブルにされ、制御され、前記通信キュービットは、それぞれのモジュールに対する前記通信制御ユニットからの前記制御信号によりイネーブルにされ、制御される、請求項8に記載のキュービット構成を制御する量子コンピュータのソフトウェア定義された構成。
【請求項11】
アプリケーションプログラミングインタフェース(API)と、
前記APIがリソースマネージャとスイッチを含む量子OSを実行する量子オペレーティングシステム(OS)と、
前記スイッチを介して接続された複数の量子コアであって、前記リソースマネージャは、量子コア内のいずれか1つのキュービットが前記量子コア内の残りのキュービットのサブセットまたはすべてと接続可能にすることを含む、前記複数の量子コア内の前記キュービットの割り当てを決定するように構成される複数の量子コアと、
を備え、
各量子コアは、キュービットの異なるサブセットに対する別個の制御信号を用いたその量子コアと関連づけられた前記キュービットの異なるサブセットの制御を可能にするように構成され、各量子コアは、キュービットの第1のサブセットにおける1つまたは複数のキュービットをキュービットの第2のサブセットへ転送することを可能にするように構成され、転送される前記1つまたは複数のキュービットが、前記キュービットの第2のサブセットに対して生成される前記別個の制御信号によって制御されるようになっている、キュービットを制御するための量子コンピュータに関するソフトウェア定義されたアーキテクチャ。
【請求項12】
前記複数の量子コアは、異種アーキテクチャである、請求項11に記載のキュービットを制御するための量子コンピュータに関するソフトウェア定義されたアーキテクチャ。
【請求項13】
前記異種アーキテクチャに1つまたは複数のトランスデューサをさらに備えた、請求項12に記載のキュービットを制御するための量子コンピュータに関するソフトウェア定義されたアーキテクチャ。
【請求項14】
前記複数の量子コアは、同種アーキテクチャである、請求項11に記載のキュービットを制御するための量子コンピュータに関するソフトウェア定義されたアーキテクチャ。
【請求項15】
前記スイッチは、ソフトスイッチとハードスイッチを含む、請求項11に記載のキュービットを制御するための量子コンピュータに関するソフトウェア定義されたアーキテクチャ。
【請求項16】
前記複数の量子コアの1つまたは複数は、前記スイッチに接続された古典的チャネルと量子チャネルを有する、請求項11に記載のキュービットを制御するための量子コンピュータに関するソフトウェア定義されたアーキテクチャ。
【請求項17】
第1の制御ユニットおよび第2の制御ユニットを含む構成可能な数の制御ユニットを備え、前記制御ユニットの各々は、論理的に別個のものであり、独立してプログラム可能であり、前記構成可能な数の制御ユニットは、ソフトウェア定義された量子コンピュータの特定の動作に対して必要とされる複数のキュービットの数に基づいており、
前記第1の制御ユニットは、ソフトウェアプログラムからプログラミング命令を受信して第1の制御信号を生成するように構成され、前記複数のキュービットの第1のサブセットのキュービットは、前記第1の制御ユニットからの前記第1の制御信号によりイネーブルにされて制御され、
前記第2の制御ユニットは、前記ソフトウェアプログラムからのプログラミング命令を受信し、第2の制御信号を生成するように構成され、前記複数のキュービットの第2のサブセットのキュービットは、前記第2の制御ユニットからの前記第2の制御信号によりイネーブルにされて制御され、
前記第1の制御ユニットはさらに、前記第2のサブセットのキュービットの数が、シャトルされる前記第1のサブセットのキュービットの数だけ増加されるように、前記第1のサブセットのキュービットの数のシャトリングを可能にするようにさらに構成され、
前記第2の制御信号は、増加した数の前記第2のサブセットのキュービットを制御し、前記第1のサブセットのキュービットの数は、シャトルされる前記第1のサブセットのキュービットの数だけ減少され、前記第1の制御信号は減少した数の前記第1のサブセットのキュービットを制御する、
キュービット構成を制御するための量子コンピュータのソフトウェア定義された構成。
【請求項18】
前記第1の制御ユニットによって受信される前記プログラミング命令は、前記第2の制御ユニットにより受信された前記プログラミング命令とは異なる、請求項17に記載のキュービット構成を制御するための量子コンピュータのソフトウェア定義された構成。
【請求項19】
シャトルされる前記第1のサブセットのキュービットの前記数は、前記第1のサブセットのキュービットに関連した情報を含み、前記情報は、シャトルされる前記第1のサブセットのキュービットの数だけ前記第2のサブセットのキュービットに転送される、請求項17に記載のキュービット構成を制御するための量子コンピュータのソフトウェア定義された構成。
【請求項20】
前記制御ユニットの構成可能な数は、前記第1の制御ユニットと前記第2の制御ユニットに1つまたは複数の制御ユニットを加えることにより動的に調節される、請求項17に記載のキュービット構成を制御するための量子コンピュータのソフトウェア定義された構成。
【請求項21】
前記第1の制御ユニットにより受信された前記プログラミング命令は、前記第2の制御ユニットにより制御される前記第1のサブセットのキュービットの数をシャトルするための通信命令を含む、請求項17に記載のキュービット構成を制御するための量子コンピュータのソフトウェア定義された構成。
【請求項22】
前記第2の制御ユニットにより制御されるようにシャトルされた前記第1のサブセットのキュービットの前記数は、1つまたは複数のキュービットを含み、前記1つまたは複数のキュービッドのシャトリングは、前記第1のサブセットのキュービットと前記第2のサブセットのキュービットとの間の通信チャネルを確立する、請求項17に記載のキュービット構成を制御するための量子コンピュータのソフトウェア定義された構成。
【請求項23】
前記第1のサブセットのキュービットは、前記第1の制御ユニットからの前記制御信号によりイネーブルにされ、制御されるメモリ/オペレーションキュービットおよび通信キュービットを含み、シャトルされる前記第1のサブセットのキュービットの数は、1つまたは複数の前記通信キュービットを含む、請求項17に記載のキュービット構成を制御するための量子コンピュータのソフトウェア定義された構成。
【発明の詳細な説明】
【技術分野】
【0001】
関連出願の相互参照
この特許出願は、2018年11月26日に「ソフトウェア定義された量子コンピュータ」というタイトルの米国非仮出願第16/199993号、および2017年11月28日に出願された「ソフトウェア定義された量子コンピュータ」というタイトルの米国仮特許出願第62/591641号の優先権を主張し、その内容は、参照することにより、全体が本明細書に組み込まれる。
【背景技術】
【0002】
この開示の態様は、一般に、構成可能な量子コンピューティングシステムに関し、特に、ソフトウェア定義された量子コンピュータに関する。ソリッドステート量子ビットまたはキュービット(例えば、超電導キュービット、量子ドット(QDs)等)に関する一般的な量子コンピュータ(QC)では、キュービットが組み立てられ、それらの接続は、しばしば、チップまたは集積回路のハードウェア設計により制限される。これは、例えば、(これに限定されないが)(i)計算することができる問題のサイズ、(ii)インプリメントすることができる回路動作またはアルゴリズム/計算のタイプ、(iii)対応する性能メトリック(例えば、回路/アルゴリズムを実行するのに必要なゲートの合計数、計算を実行するのにかかる時間、および量子回路に関する成功確立)が、しばしば、チップまたは集積回路としてインプリメントされる、キュービットハードウェア(すなわち、量子ビットを実現するために使用するハードウェア)の設計に強く依存することを意味する。言い換えれば、一般的なソリッドステート量子コンピュータの動作または構成は、ハードウェアコンポーネントのインターネット制限により、柔軟性に欠ける傾向がある。量子コンピュータの柔軟性および構成可能性、特に、動的および/またはソフトウェアベースの構成可能性を可能にする技術が非常に望まれている。
【発明の概要】
【0003】
以下は、そのような態様の基本的理解を提供するために1つまたは複数の対応の簡単化された要約を提示する。この要約は考えられるすべての態様の包括的な概要ではなく、すべての態様の主要な、または重要な要素を特定することを意図したものではないし、また、任意のまたはすべての態様の範囲を線引きすることを意図したものでもない。その目的は、後で提示される、より詳細な説明の前置きとして、1つ以上の態様のいくつかの概念を簡略化された形式で提示することである。
【0004】
この開示の一態様において、ハードウェア記述言語をソフトウェア定義された量子コンピュータに用いて、ソフトウェア定義された量子コンピュータに利用可能な種々のリソースを構成し、特定のタスク、機能、プログラム、または、ルーチンを実行することができる。ハードウェア記述言語を用いて、例えば、計算のサイズ(例えば、キュービットの数)を固定にする必要がなく、臨機応変に調節することができるように、ソフトウェア定義された量子コンピュータを動的に構成することができる。一例において、ハードウェア記述言語は、ソフトウェア定義された量子コンピュータの構造(例えば、ハードウェア接続性)および動作(例えば、操作)を指定することができる。
【0005】
この開示の一態様において、ソフトウェアプログラムからプログラミング命令を受信し、プログラミング命令に少なくとも一部基づいて制御信号を生成するように構成された制御ユニットと、キュービットを含み、キュービットの数およびキュービットの任意の2つの間の接続が、制御ユニットからの制御信号によりイネーブルとなり、制御される、ソフトウェア定義された量子コンピュータが記載される。
【0006】
この開示の他の態様において、複数のモジュールを含み、各モジュールは、制御ユニットと、通信制御ユニットと、複数のキュービットを有し、各制御ユニットは、ソフトウェアプログラムからプログラミング命令を受信し、プログラミング命令に少なくとも一部基づいて制御信号を生成するように構成された制御ユニットと、多数のキュービットとを含み、キュービットの任意の2つの間の接続が、制御ユニットからの制御信号によりイネーブルとなり制御される、ソフトウェア定義された量子コンピュータが記載される。ソフトウェア定義されたコンピュータは、また、複数のモジュールの各々からの通信制御ユニットからの通信チャネルをイネーブルにするように構成されたスイッチ/ルータユニットを含む。
【0007】
この開示の別の態様において、アプリケーションプログラミングインタフェース(API)と、APIが実行する量子オペレーティング・システム(OS)であって、リソースマネージャとスイッチを含む量子OSと、前記スイッチを介して接続された複数の量子コアとを含み、リソースマネージャは、量子コア内のキュービットのアロケーションを決定するように構成される、ソフトウェア定義された量子コンピューティングアーキテクチャが記載される。
【0008】
この開示の他の態様において、量子プログラミング言語の高レベルの中間表現についての字句解析を実行するステップと、字句解析の出力についての意味解析を実行するステップと、前記意味解析の出力に基づいて量子プログラミング言語の中間レベルの中間表現を生成するステップ含む、ソフトウェア定義された量子コンピュータのためにソースコードをコンパイルする方法が記載される。この開示のさらに他の態様において、量子プログラミング言語高レベル中間表現についての字句解析を実行するためのコードと、字句解析の出力についての意味解析を実行するコードと、意味解析の出力に基づいて量子プログラミング言語の中間レベルの中間表現を生成するコードを含む、ソフトウェア定義された量子コンピュータのためのソースコードをコンパイルするためにプロセッサにより実行可能な命令を有したコードを記憶したコンピュータ可読媒体が記載される。
【0009】
この開示の他の態様において、第1の制御ユニットと第2の制御ユニットを含むソフトウェア定義された量子コンピュータが記載される。第1の制御ユニットは、ソフトウェアプログラムからプログラミング命令を受信し、第1の制御信号を生成するように構成することができ、第1の複数のキュービットは、第1の制御ユニットからの第1の制御信号によりイネーブルされ制御されるように構成することができる。第2の制御ユニットは、ソフトウェアプログラムからプログラミング命令を受信し、第2の制御信号を生成し、第2の複数のキュービットは、第2の制御ユニットからの第2の制御信号によりイネーブルにされ、制御されるように構成することができる。さらに、第1の制御ユニットは、第2の複数のキュービットの数が、往復される(shuttled)第1の複数のキュービットの数だけ増加するように第2の制御ユニットにより制御される第1の複数のキュービットの数を往復させるように構成することができる。ソフトウェア定義された量子コンピュータに関連づけられた種々の態様の方法、装置およびコンピュータ可読媒体が本明細書に記載される。添付した図面は、いくつかのインプリメンテーションのみを図示しており、範囲を限定するものとみなされるべきではない。
【図面の簡単な説明】
【0010】
図1A】この開示の態様に従う、ソフトウェア定義された量子コンピュータの一例を図示する。
図1B】この開示の態様に従う量子ビット(キュービット)の複数領域を制御する例を図示する図である。
図1C】この開示の態様に従う量子ビット(キュービット)の複数領域を制御する例を図示する図である。
図1D】この開示の態様に従う量子ビット(キュービット)の複数領域を制御する例を図示する図である。
図2】この開示の態様に従う拡張可能なソフトウェア定義された量子コンピュータの一例を図示する図である。
図3】この開示の態様に従う、ソフトウェア定義された量子コンピュータアーキテクチャの一例を図示する図である。
図4A】この開示の態様に従うリソースマネージャワークフローの一例を図示するフローチャートである。
図4B】この開示の態様に従うリソースマネージャワークフローの一例を図示するフローチャートである。
図4C】この開示の態様に従うリソースマネージャワークフローの一例を図示するフローチャートである。
図5】この開示の態様に従うアプリケーションプログラミングインタフェース(API)アクセスポイントのレベルの一例を図示するチャートである。
図6】この開示の態様に従うコンパイラアーキテクチャの一例を図示する図である。
図7A】この開示の態様に従う例外分類の一例を図示する図である。
図7B】この開示の態様に従う例外分類の一例を図示する図である。
図7C】この開示の態様に従う例外分類の一例を図示する図である。
図8】この開示の態様に従うコンピュータデバイスの一例を図示する図である。
【発明を実施するための形態】
【0011】
添付図面に関連して下記に述べる詳細な説明は、種々の構成の記載として意図され、ここに記載した概念を実施可能な唯一の構成を表すことを意図するものではない。詳細な記述は、種々の概念の完全な理解を提供する目的のための特定の詳細を含む。しかしながら、当業者には、これらの概念は、これらの特定の詳細なしに実施可能であることが理解されるであろう。いくつかのインスタンスにおいて、そのような概念が不明瞭にならないように、良く知られたコンポーネントがブロック図の形態で示される。
【0012】
この開示は、量子コンピュータ(QC)、QCシステム、または量子情報処理(QIP)システムをインプリメントするためのアプローチの種々の態様を記載し、ほとんどではないにしても、QCの機能的態様のいくつかは、ソフトウェア(すなわち、ソフトウェア定義された機能性)により定義される。すなわち、QCの機能性は、ハードウェア設計により柔軟性に欠けるまたは制限される必要がなく、ソフトウェアを用いて構成することができる。QCのためにソフトウェア定義されたアーキテクチャをインプリメントすることにより、キュービットのシステムを定義し、キュービット接続性(例えば、異なるキュービット間の接続)を制御および操作し、所定の計算タスクまたはシミュレーションタスクを実行するために、キュービット間の相互作用(例えば、異なるキュービット間の相互作用)を変更するために、ソフトウェアまたはいくつかの動的命令を使用することが可能である。このアプローチは、また、QCのためのハードウェア構成を記載するシステム的な方法を含むことができる。
【0013】
古典的な、すなわち、量子でない、中央処理装置(CPU)は、典型的に、制御ユニットおよびデータパスからなり、両方とも、典型的に、デジタル相補型MOS(CMOS)を用いてインプリメントされる。制御ユニットは典型的にデータをどのように操作するかを決定するために、プログラムの命令を変換し、命令の実行に必要なCPU内のリソースの管理、並びに各命令実行のタイミングを管理する。データパスは、処理中のデータが流れる、プロセッサ内の機能ユニット、レジスタ、およびバスの集合である。計算は、種々の機能ユニット、レジスタおよびバスにデータを操作するように命令する、制御ユニットにより実行され、所望の計算タスクの最終出力を結果として得る。典型的なCPUでは、制御ユニットとデータパスは、ロジックエレメントを用いて構築され、トランジスタを用いて組み立てられたデジタル回路を用いてインプリメントされ、チップ上のレイアウトにおいて高度に結び付けられる(intertwined)。
【0014】
量子コンピュータ(またはQC/QIPシステム)は(キュービットの単位で測定された)量子データを操作し、それゆえ、データパスは、量子オブジェクトで構成されなければならない。データを記憶し、転送し、操作する機能ユニットは、キュービットを処理し、(重ね合わせやエンタングルメント(entanglement)のような)量子特性を維持し、重ね合わせ入力状態のすべてのコンポーネントについて同時に動作することができなければならない。一方、制御プログラムで指定された命令は、本質的に古典的であるので、制御ユニットは、典型的に古典的である。典型的な制御ユニットは、プログラムまたはアルゴリズムからの命令を、機能ユニットに操作してキュービットに作用して所望のデータ操作を行う、古典的制御信号に変換するように構成することができる。キュービットに対する作用は、一般に、本質的にアナログであり、古典的制御信号(典型的には、同じまたは異なるフィールドにおける作用を符号化する変調を有するキャリア電磁場(例えば、無線周波数(RF)、マイクロ波、光)から成る)が、キュービット(または、キュービットのグループ)を、量子システムの制御された時間の進化を介して異なる量子状態に変換する。すなわち、古典的制御信号は、時間に対してキュービット情報をシーケンシャルに変換する動作を制御して、所望の計算またはシミュレーションを発生させるために使用される。
【0015】
この開示において、データパスの物理的インプリメンテーションを完全に柔軟で再構成可能にしながら、制御ユニットがハードウェアで特別に設計され、構築されている量子コンピュータ(またはQC/QIPシステム)のインプリメンテーションが考察される。データパスの物理的インプリメンテーションは、ハードウェアで事前に設計および製造されるのではなく、ハードウェアユニットに提供される命令のセットにより記述される。同様に、キュービットデータパス間の相互作用も、ソフトウェアプログラムを用いた制御ユニットにより生成された、制御信号により指示される、キュービットシステムの時間発展を実行する(enact)一連の命令としてインプリメントされる。
【0016】
この開示で記載されるアプローチは、このアプローチを以前のアプローチと差別化するいくつかのユニークな特徴を有する。例えば、トラップイオンテクノロジーに基づくQCの場合、提案されたシステムのユニークな特徴が以下に記載される。トラップイオンテクノロジーは、トラップまたは同様の構造にロードされ配置された、イオンまたは原子を用いて、量子操作/シミュレーションを実行するために、それらの状態を制御することに言及することができる。
【0017】
第1の態様において、システム内のキュービットの数と接続性(例えば、相互作用)は、ハードウェアの設計によりあらかじめ決定されていない。例えば、QCは、ハードウェア(制御ユニット)設計において、ある時刻におけるn(例えば、nは整数であり、16、32、64、あるいはそれより大きい数)のキュービットを制御する能力を有する制御ユニットを有することができ、次に、QCを操作することを選択するたびに1とm(例えば、mも整数であり、nよりはるかに大きな数になる可能性がある)のキュービットとの間のどこかで「ロード」することができる。
【0018】
図1Aは、この開示の態様に従うソフトウェア定義された量子コンピュータの一例を図示する図100を示す。図1A図100に示されるシステムは、上述したように、mのキュービットまでロードまたはイネーブルにすることができ、次に、nのキュービット(例えば、図1Aのキュービット130を参照されたい)の任意のサブセットを制御することができ、ただし、m≧nである。ここで使用されるように、量子コンピュータ、量子コンピュータシステム、量子コンピューティングシステム、量子情報処理システムという用語は、互いに交換可能に使用することができる。
【0019】
上述したように、ハードウェア記述言語をソフトウェア定義された量子コンピュータに使用してソフトウェア定義された量子コンピュータに利用可能な種々のリソースを構成し、特定のタスク、機能、プログラム、またはルーチンを実行することができる。ハードウェア記述言語は、例えば、計算のサイズ(例えば、キュービットの数)を臨機応変に(on the fly)調節することができる(例えば、任意の時点で一方のサイズから他方のサイズへ変更することができる)ようにソフトウェア定義された量子コンピュータを動的に構成するために使用することができる。一例において、ハードウェア記述言語は、ソフトウェア定義された量子コンピュータの構造と動作を指定することができる。このアプローチは、構成に柔軟性を欠きハードウェアにより固定された従来の量子コンピュータとは異なる。代わりに、ソフトウェア定義された量子コンピュータは、例えば、フィールドプログラマブルデバイスを構成し得る方法と類似の方法で、ハードウェア記述言語(または量子ハードウェア記述言語)を用いて構成することができる。従って、ソフトウェア定義された量子コンピュータは、実行している特定の動作に対して、必要に応じて、10キュービット、20キュービット、または100キュービット(または、任意の数)をロードおよび使用するように構成することができる。
【0020】
第2の態様において、それらの間で利用可能なすべての(all-to-all)相互作用を有し、そのような相互作用の形態は、通常オフであり得る。言い換えれば、各キュービットは、(単一の他のキュービットを含む)残りのキュービットのサブセットに対して、または残りのキュービットのすべてに対して相互作用する、または何らかの接続性(例えば、図1Aの接続または相互作用140参照)を有することができる。キュービット間の相互作用のいくつかは、制御ユニット(例えば、図1Aの制御ユニット120)により「オン」にされるか、または有効にされ、キュービットのセット上のある命令(例えば、論理ゲートのセット)に影響を及ぼすことができる。各命令の性質は、命令(複数の場合もあり得る)を実行するために、必要な制御信号(例えば、制御信号125)を生成するために、制御ユニットが(例えば、プログラミング命令115を用いたプログラム110により)プログラムされる方法により決定することができる。プログラム110により提供されるプログラミング命令115は、それゆえ、命令のセットを反映することができ、制御ユニット120は、プログラミング命令115を処理して適切な制御信号125を生成し、命令のセットを実行することができる。
【0021】
他の態様において、1つのインプリメンテーションでは、命令のセットは、各ゲートが、キュービットの量子入力について離散アクション(discrete action)を実行してキュービットの出力状態を生成する代数量子ゲートの集合として記述することができる。他の態様では、他のインプリメンテーションにおいて、命令のセットは、各ゲートが、量子入力についてパラメータに依存するアクションを実行する、広義に定義された、パラメータ化された連続量子ゲートの集合として記述することができる。例えば、所望の相互作用ハミルトニアン(Hamiltonian)に関連するQC内のキュービットのセットの所定の発展は、発展の性質を指示する連続変数でインプリメントされる。
【0022】
さらに他の態様において、使用されるキュービットのセットの時間発展は、それらが良く知られている限り、断熱的(adiabatic)(例えば、断熱的時間発展)、非断熱的(diabatic)(例えば、非断熱的時間発展)、またはその間の任意のもの(例えば、断熱的/非断熱的、または混合された時間発展)でありえる。さらに、他の態様において、他のインプリメンテーションにおいて、命令のセットは、量子ロジックゲートとハミルトニアン発展の結合であり得る。この結合は、時間的、空間的またはその両方でありえる。
【0023】
他の態様において、拡張されたまたは拡張可能なシステムは、また、この開示で記載したソフトウェア定義された量子コンピュータのタイプの一部とみなすことができる。全体的な複合システムは、個々のコンポーネントキュービットシステムのグループで構成することができ、構成するキュービットシステム間の量子接続は、構成するキュービットシステムのサブセット間の共有エンタングルメントにより、または、構成するキュービットシステム間のキュービットを物理的に移動することにより、確立される。
【0024】
図1Bは、制御ユニット122の一例を説明する図170を示す。図170の単一の制御ユニット122は、図1Aの制御ユニット120のいくつかのインプリメンテーションを表すことができる。これらの複数の制御ユニット120は、互いに物理的および/または論理的に分離しているが、より高いレベルの構造内で、この場合には、単一の制御ユニット122内で組織化、またはインプリメントすることができる。例えば、図170において、制御ユニット122は、制御ユニット120a、120b...120kを含み、それはまた制御ユニット122に対するサブ制御ユニットまたはサブユニットと呼ぶことができる。
【0025】
この例では、制御ユニット後120a、120b、...120kの各々は、制御ユニット122により受信したプログラミング命令115のサブセット、またはプログラミング命令115のそれ自体の別個のセットを処理することができる。図2は、拡張可能なソフトウェア定義された量子コンピュータを示し、以下でより詳細に説明され、2以上の制御ユニット120が使用される場合を図示し、これらの制御ユニット120は、別個にインプリメントすることができる。制御ユニット120a、120b、...120kの各々は、独立してプログラム可能であり、キュービット(例えば、キュービット130)の異なるセットを(例えば、制御信号125を用いて)制御するために使用することができる。キュービットの数は、受信したプログラミング命令および制御ユニット120a、120b、...、120kのそれぞれの制御ユニットによりロードすることができるか、またはイネーブルにすることができるかに依存して、制御ユニットのすべてに対して同じであり得るか、または制御ユニット間で変更することができる。他の態様において、キュービットは、イオントラップテクノロジーを用いてインプリメントされ、制御ユニット120a、120b、...120の各々は、イオントラップの異なる領域内のキュービットを処理する。次に、イオントラップ内の隣接領域に関連してこれらの制御ユニットが、どのように使用されるかにより、ソフトウェア定義された量子コンピュータを拡張することができる。
【0026】
図1Cおよび1Dは、それぞれ、異なる制御ユニット間(例えば、イオントラップ内の異なる領域間)のイオンまたは原子の「シャトリング(shuttling)」を説明する。例えば、図180において、制御ユニット120aは、xキュービット(例えば、イオンまたは原子)を制御し、制御ユニット1206は、yキュービット(例えば、イオンまたは原子)を制御する。破線は、制御ユニット120aと制御ユニット120が別個のデバイスとして示されているけれども、それらは、オプションで、同じ構造の一部(例えば、図1Bの制御ユニット122)としてモノリシックにインプリメントすることができる。
【0027】
ダイアグラム190は、制御ユニット120aにより制御されたキュービットから制御ユニット120bにより制御されたキュービットへのzキュービットの「シャトリング」または変換を示す。このプロセスの結果として、制御ユニット120aは、制御(x-z)キュービットを制御したままであり、制御ユニット120bは、制御(y+z)キュービットを制御したままである。一例において、両方の制御ユニットが、最初に30個のイオンまたは原子を処理し、5個のイオンが、または原子が、シャトルまたは変換された場合、制御ユニット120bは、35個のイオンまたは原子を制御または処理したままであり、制御ユニット120aは、25個のイオンまたは原子を制御、または処理したままである。これらのシャトルされたまたは変換されたイオンまたは原子を用いてキュービットの一方のセットからキュービットの他方のセットへ情報を通信することができる。
【0028】
図1B-1Dに記載されたさらなる態様に基づいて、ソフトウェア定義された量子コンピュータ(例えば、図1Aのソフトウェア定義された量子コンピュータ100の変形例のような)は、第1の制御ユニット(例えば、制御ユニット120a)および第2の制御ユニット(例えば、制御ユニット120b)を含むことができ、第1の制御ユニットは、ソフトウェアプログラムからプログラミング命令(例えば、プログラミング命令115)を受信し、第1の制御信号(例えば、制御信号125a)を生成するように構成され、第1の複数のキュービットは、第1の制御ユニットから第1の制御信号によりイネーブルにされ、制御され(例えば、xキュービット)、第2の制御ユニットは、ソフトウェアプログラムからプログラミング命令を受信し、第2の制御信号(例えば、制御信号125b)を生成し、第2の複数のキュービットは、第2の制御ユニットからの第2の制御信号によりイネーブルにされ、制御される(例えば、yキュービット)。そのような量子コンピュータにおいて、第1の制御ユニットと第2の制御ユニットを含む制御ユニットの数は、動的に変更することができる(例えば、必要とされるキュービットの数およびこれらのキュービットを制御するのに必要な制御ユニットの数に基づいて増加したり減少したりすることができる)。
【0029】
第1の制御ユニットはさらに、第2の複数のキュービットの数がシャトルされる第1の複数のキュービットの数だけ増加される(例えば、T+zキュービット)ように第2の制御ユニットにより制御される第1の複数のキュービット(例えば、zキュービット)の数をシャトルするように構成される。第1の制御ユニットの制御下に留まるキュービットの数は、シャトルされるキュービットの量だけ低減される(例えば、x-zキュービット)。
【0030】
第1の制御ユニットにより受信されたプログラミング命令は、第2の制御ユニットにより受信されたプログラミング命令とは異なり得る。第1の制御ユニットにより受信されたプログラミング命令は、第2の制御ユニットにより制御される第1の複数のキュービットの数をシャトルするための通信命令を含む。
【0031】
他の態様において、シャトルされる第1の複数のキュービットの数は、第1の複数のキュービットに関連した情報を含み、この情報は、シャトルされる第1の複数のキュービットの数だけ、第2の複数のキュービットに転送される。第2の制御ユニットにより制御され、シャトルされる第1の複数のキュービットは、1つまたは複数のキュービットを含み、1つまたは複数のキュービットのシャトリングは、第1の複数のキュービットと第2の複数のキュービットとの間に通信チャネルを確立する。
【0032】
他の態様において、第1の複数のキュービットは、第1の制御ユニットからの制御信号によりイネーブルにされ、制御された、メモリ/オペレーションキュービット(例えば、図2のメモリ/オペレーションキュービット130a参照)および通信キュービット(例えば、図2の通信キュービット130b参照)を含み、シャトルされる第1の複数のキュービットの数は、1つまたは複数の通信キュービットを含む。
【0033】
イオンまたは原子の数およびイオンまたは原子を制御するのに必要な制御ユニットの数を調節することにより、図1A-1Dに関連して上述した技術を介してソフトウェア定義された、量子コンピュータの能力を格調することが可能である。そのような拡張した能力の一例は、図2において以下により詳細に記載される。
【0034】
図2は、この開示の態様に従う、拡張可能なソフトウェア定義された量子コンピュータ、または量子コンピューティングシステムの一例を図示する。図2のダイアグラム200に示される拡張可能な量子コンピューティングシステムは、図1Aのダイアグラム100および図1B-1Dに示すシステムのアーキテクチャの複数の態様のいくつかに従う。例えば、ダイアグラム200のシステムは、制御ユニット120aおよび通信制御ユニット220a(図2のComm.Ctl.ユニット220aと呼ばれる)を有するモジュール210a(モジュール1)へプログラミング命令を供給するプログラム110aを含む。プログラミング命令115aは、制御ユニット120aにより生成された制御信号を介してモジュール210a内にロードされた、1つまたは複数のキュービット上の命令のセットに影響を与えるように、制御ユニット120aをプログラムするために使用することができる。さらに、プログラミング命令115aは、スイッチ/ルータユニット230を用いて通信チャネル225aをイネーブルにし、インプリメントし、または制御するために、通信制御ユニット220aにより生成された制御信号を介して、1つまたは複数のキュービット上の命令のセットに影響を与えるように、通信制御ユニット220aをプログラムするために使用することができる。
【0035】
プログラム110aは、また、制御ユニット120bと、スイッチ/ルータユニット230を備えた通信チャネル225bをイネーブルにし、インプリメントし、または制御することができる、通信制御ユニット220b(図2のComm.Ctl.ユニット220aと呼ばれる)を含むように構成されたモジュール210b(モジュール2)に、プログラミング命令115bを提供することができる。略図200に示すように、システムに使用されるモジュールの数は、構成可能または拡張可能であり、最大k個のモジュールまで存在する可能性があり、モジュール210k(モジュールK)は、また、(複数のインターナルキュービットに加えて)制御ユニットと通信制御ユニットを含むことができ、通信チャネル225kは、モジュール210kとスイッチ/ルータユニット230との間でイネーブルにすることができる。スイッチ/ルータユニット230は、モジュールとスイッチ/ルータ230との間のインタフェースを介して異なるモジュール間に、接続性を提供するように構成される。
【0036】
図2の通信制御ユニット220aおよび220bは、それぞれの制御ユニット120aおよび120bから独立してインプリメントすることができるか、またはそれぞれの制御ユニット120aおよび120b内に集積することができる。通信制御ユニット220aおよび220b並びにスイッチ/ルータユニット230を用いて達成される通信は、また、少なくとも一部、キュービットの1つのセットからの情報が、キュービットのシャトリングの結果として、キュービットの他のセットに利用可能である、図1Cおよび1Dに記載されたシャトリング技術を用いて成就または実現することもできる。
【0037】
モジュール210a、...210kの各々内には、それぞれの制御ユニットと通信制御ユニットにより制御することができる、多数のキュービット130がある。キュービットのいくつかは、メモリ/オペレーション(例えば、キュービット130a)に使用することができ、他は、通信チャネル225(例えば、キュービット130b)をイネーブルにするために使用される、通信キュービットであり得る。例えば、モジュール内のキュービットが、イオントラップ技術を用いてインプリメントされると、メモリ/オペレーションキュービット130aは、171Yb原子イオンに基づくことができ、通信キュービット130bは、138Ba原子イオンに基づくことができる。他の種および/または同位体もまた、メモリ/オペレーションおよび通信キュービットのペアに使用することができる。メモリ/オペレーションキュービット130aは、それぞれの制御ユニットからの制御信号によりイネーブルにされ制御され、通信キュービット130bは、それぞれの通信制御ユニットからの制御信号によりイネーブルにされ制御される。
【0038】
他の態様において、ハードウェア構成(例えば、図1A-1Dおよび図2に記載したシステムのハードウェア構成)の特定のインスタンスは、各ハードウェア(またはキュービットのセット)インストレーション、それらの利用可能性、相対接続、およびその構成によりイネーブルにされる量子ハードウェアの低レベル機能性をキャプチャ(capture)するハードウェア記述言語(HDL)の量子バージョンを用いて提供することができる。それは、ハイレベルソフトウェアにより生成される量子プログラムがハードウェア(例えば、プログラム110、110a、および制御ユニット120、120z、120b)の操作を制御するインタフェースも有する。
【0039】
さらに他の態様において、この開示に記載されたアプローチは、ソフトウェア定義されたアーキテクチャを用いることによりQCまたはQCシステムのハードウェア仕様の基礎となる詳細からのコード独立性が可能となるため、量子プログラム(例えば、QCまたはQCシステムを用いて実行されるプログラムまたは命令)の最大ポータビリティも保証する。すなわち、図1Aおよび図2のプログラム110および110aは、それぞれ移植(port)することができる。他の態様において、この開示において記載したアプローチの柔軟性は、最適化されたグラフ配置の使用と、異なるソフトウェア定義されたアーキテクチャ間でプログラムを移植するために、ヒューリスティック(heuristics)(例えば、カスタムタブー検索(TS))と、ディープラーニングの両方を用いてアルゴリズムの埋め込みを可能にする。ヒューリスティックのためのカスタムタブー検索(custom tabu search)を用いることは、グローバル最適アルゴリズムと、埋め込まれたヒューリスティック技術を制御するためのメタヒューリスティックあるいはメタストラテジーを用いることを含む。
【0040】
他の態様において、この開示で記載したアプローチは、形式的アプローチとアルゴリズム的アプローチの両方を用いてソフトウェア定義されたアーキテクチャへのプログラムの移植を検証することを可能にする。他の態様において、この開示はまた、入力されるジョブのための最も効率の良いソフトウェア定義されたアーキテクチャを提供するためのリソースマネージャ(例えば、図3の略図300のリソースマネージャ330を参照)のインプリメンテーションを記載する。最適化は、以下のパラメータに対して行われる。
【0041】
(a)ソフトウェア定義されたアーキテクチャは2つの態様を有する:
キュービットの可変数と可変接続。リソースマネージャは、要求されたアーキテクチャのためのリソースを最適化しながら両方の態様をキャプチャするように構成することができる。(b)イオンの数が32未満(例えば、イオントラップされたQCシステムの場合)のとき32のハードワイヤードチャネルまたは相互作用とのイオンのアライメントの最適性。正しいアライメントを見つけることは自明であり得る。
nイオンの場合、n<32であり、イオンをアライメントする33-nの方法がある。
すべてのこれらのアライメントのコストは、同じであると想定されるが、システムが校正を開始すると、コストをさらに良く理解することができる。上述したリソースマネージャは、非自明な費用関数(cost function)がある場合、最適化を提供するように構成される。
【0042】
(c)キュービットが少ない場合、波形(例えば、アナログ制御信号)の計算時間を増加させることができ、これは、使用されるキュービットの数が動的に構成されるソフトウェア定義された、アーキテクチャの使用に有利である。すなわち、キュービットの数における可変性および構成可能性は、ソフトウェア定義されたQCのハードウェアサイドに利点を提供する。(d)接続性における可変性は、例えば、堅固なアプリケーションプログラミングインタフェース(API)スタックの構築を可能にすることにより、ソフウェアサイドに利点を提供するであろう。現在のシステムは、本質的に制限されたグラフを有することができるけれども、ハードウェアサイドにも利点があるかもしれない。
【0043】
さらに、他の態様において、この開示で記載したソフトウェア定義されたQCアプローチは、また、クラウドコンピューティングからの弾性(elasticity)の概念に適合させることもできる。例えば、キュービットをリザーブ領域(すでに別個のトラッピングゾーンにロードされている)からコンピューティング領域にシャトルし、プログラムの実行中にオンデマンドで戻すことができる、弾性コンピューティング環境をインプリメントすることができる。すなわち、プログラムの実行中にシステムに課せられた要求を使用して、コンピューティング環境を動的に変更する(例えば、弾性を提供する)ことができる。それゆえ、さらなるコンピューティングリソース(例えば、事前ロードされたイオン)を有する、トラップに容易に利用可能なゾーンを有し、オンデマンドでコンピューティング環境を容易に拡張することが可能である。
【0044】
他の態様において、ソフトウェア定義されたQCsおよびQC/QIPシステムに関してここに記載したアーキテクチャは、同種(homogenous)及び異種(heterogeneous)のマルチコア量子処理ユニット(QPU)システムの両方をサポートすることができる。同種のマルチコアQPUは、同一トラップ(例えば、イオントラップ)のネットワークである。他方、異種のマルチコアQPUは、異なる構成のトラップのネットワーク、または異なる技術(例えば、イオントラップ、超電導回路、等)を用いて構成されたQPUsのネットワークである。
【0045】
異なる技術を有する、異種のマルチコアQPUの場合、異なる物理システムのキュービットを接続するためにトランスデューサ(例えば、量子トランスデューサ)の使用が必要になるかもしれない。1つのインプリメンテーションにおいて、単一のトランスデューサは、異なる技術の2つのキュービット間に使用することができる。他のインプリメンテーションにおいて、異なるトランスデューサは、接続または相互作用の方向(例えば、キュービット1からキュービット2の方向に第1のトランスデューザ、およびキュービット2からキュービット1の方向へ第2のトランスデューサ)に基づいて使用することができる。
【0046】
この開示に関連して記載した、ソフトウェア定義されたQCおよびQC/IPシステムの種々の態様は、これらに限定されないが、アーキテクチャグラフ、回路グラフ、ポータビリティ、二次代入問題、深度最適レイアウト、(ヒューリスティック)最適埋め込みのシーケンス、単一命令マルチデータ(SIMD)QC、量子回路コンパイル、量子回路設計、および量子回路最適化を含む、アーキテクチャ、インプリメンテーション、構成および最適化に関連する態様を含む。
【0047】
図3は、この開示に従うソフトウェア定義されたQCのためのシステムアーキテクチャの一例を説明する概略図300を示す。概略図300に示されるシステムは、イオントラップまたはイオントラップ技術に基づき、一例として提供され、限定のためではない。イオントラップ技術とは異なる技術に基づくシステム(例えば、トラップされたニュートラル原子または超電導回路)はまた、図3の概略図300に関連して記載された技術を用いてインプリメントすることができる。
【0048】
ソフトウェア定義された量子コンピュータは、一般に3つの主要なアーキテクチャレイヤを含むことができる。最上部にあるのは、コンピュータのユーザのためのプログラマブルインタフェースを見せるように構成された、APIスタック310が置かれている。典型的には、APIスタック310は、ハードウェアの変動性を露呈せず、完全に接続された、仮想の大型量子コンピュータを想定している。すなわち、ハードウェアが構成される態様は、コンピュータのユーザに知られる必要はない。
【0049】
量子オペレーティングシステム(OSまたはQOS)320は、ハードウェアとAPIスタック310との間に存在する。ソフトウェア定義された量子アーキテクチャのプリミティブ(primitives)は、このレイヤ内で公開およびプログラム可能である。量子OS320は、キュービットアロケーションを処理するための最適な方法を見つけるためのリソースマネージャ330(少なくとも一部を上述した)を含むことができる。すなわち、リソースマネージャ330の役割は、入力ジョブに対する最も効率的なソフトウェア定義されたアーキテクチャを識別することである。キュービットアロケーションは、イントラ(intra)またはインター(inter)量子コア(例えば、量子コア370a、370bおよび370mを参照)であり得る。量子コアは、また量子ユニット、コアユニット、または単にコアと呼ぶこともできる。特にそうでないと指定しない限り、この開示で使用されるように、量子コアは、例えば、個々のイオントラップ(他の技術の量子コアも使用することができるけれども)を意味することができる。個々のイオントラップは、1つまたは複数のキュービットを含むことが理解される。ネットワークまたはアーキテクチャ内のコアユニットが同一でない場合、アーキテクチャは、異種(heterogeneous)アーキテクチャと呼ばれる(これは、異なるイオントラップ、またはイオントラップと、トラップされたニュートラル原子、または超電導キュービットのような、異なる技術からなる異なるコアを意味することができる)。一方、ネットワークまたはアーキテクチャが同一のコアユニット(例えば、同一のイオントラップ)を有するとき、アーキテクチャは、同種(homogeneous)アーキテクチャと呼ばれる。リソースマネージャ330は、キュービットがコアユニット(例えば、イオントラップ)内でどのように割当てられ、整列されるかを決定(decide)または判断(determine)するように構成される。リソースマネージャ330は、また、複数のコアユニット(例えば、トラップ)に対するキュービット割り当てに対する最良のキュービット接続(例えば、相互作用140)と通信チャネル(例えば、通信チャネル225)(例えば、フォトニックインターコネクト(photonic interconnect))を決定するように構成される。マッピングがリソースマネージャ330により決定された後で、量子OS320内のスイッチ340は、すべての操作および読出しをルーティングする(route)ことができる。スイッチ340は、量子コアに接続された古典的チャネル380(破線)と量子チャネル385(実線)を有することができる。
【0050】
ソフトウェア定義された量子アーキテクチャに割り当てられたリソースの他の態様において、図4A-4Cは、この開示の態様に従うリソースマネージャワークフローの一例を図示するフローチャート400を示す。ソフトウェア定義された量子アーキテクチャには、リソースマネージャ(例えば、リソースマネージャ330)を自由に使える多くの異なる種類のリソースがある。これらのリソースは、キュービット、接続性、コヒーレンス、コアユニット(例えば、イオントラップ)間の(フォトニック)相互接続ネットワーク、古典的通信チャネル、並びに他のタイプのリソースを含む。ソフトウェア定義された量子アーキテクチャは、リソースマネージャを介して、合理的なタイムフレーム内でリソースの使用率を最適化する必要がある。プログラム(例えば、命令のセット)がAPIスタック310(405を参照)を介して提出されると、リソースマネージャ(410を参照)に渡される次のレベルの中間表現に変換される。ネットリスト(netlist)のような表現から、リソースマネージャは、プログラムを実行するコストを推定する(415参照)。このコストは、リソース割り当てについての決定を行うためにリソースマネージャにより使用される。リソースマネージャにより行われる最初の決定は、プログラムを実行するために、ハードウェアが必要かつ十分なリソースを有しているかどうかである。マルチ量子コアシステムの場合、リソースマネージャは、プログラムを実行することができる最小数のコアを選択する。2以上のセットの最小数のコアがある場合、リソースマネージャは、プログラムの配布が最も安いコアを選択する。例えば、現在の要求されている操作は、あるソフトウェア定義されたアーキテクチャ上で実行された一連の従前の操作に従っている(430参照)。リソースマネージャは、既存のソフトウェア定義されたアーキテクチャ上の操作をマッピングする(440参照)コストと、操作にネイティブの(native to)ソフトウェア定義されたアーキテクチャを作るコストと、を比較し、それに従って決定することができる(445、450参照)。任意の決定が回路深さ(circuit depth)を増加させる場合(455参照)、あるいは、丸め込みエラー(rounding off error)が生じる場合(465参照)、結果を返しながら、適切なフラッグを立てる必要がある(460、470参照)。次に、ジョブがターゲットコア(複数の場合もある)の優先度キューに配置することができる(475参照)。
【0051】
この開示で記載されるソフトウェア定義された量子コンピュータアーキテクチャに関連した他の態様は、量子プログラムをコンパイルする必要性である。図5を参照すると、この開示の態様に従って、APIアクセスポイントのレベルの一例を図示するチャート500が示される。チャート500は、一番上のレベルとして、クライアント510を示し、次に、rest API520、量子プログラミング言語(QPL)530、ハイレベル中間表現(HLIR)540、ソフトウェア定義アーキテクチャのための中間レベル中間表現(MLIR)550、良否ハードウェア定義または記述言語(HDL)560、ロウレベル中間表現(LLIR)570、量子制御システム言語580、および最下位レベルとしてのマシン言語590が続く。
【0052】
理想的なシステムインプリメンテーションにおいて、ソフトウェア定義された量子アーキテクチャは、最高位レベルのAPI(例えば、rest API520)を介して公開されない場合がある(may not be exposed)。QPL(例えば、QPL 530)を用いて書かれたコードは、以前として理想的な量子アーキテクチャを想定することができるハイレベル中間表現(540)に変換することができる。ソフトウェア定義された量子architectureのための言語プリミティブ(language primitive)にアクセスするインタプリタ(interpreter)は、コードを中間レベルの中間表現に変換することができる(550)。この中間レベルの中間表現は、次に、ハードウェア記述言語(HDL)または量子HDL(QHDL)の量子バージョンに変換することができる(560)。ソフトウェア定義されたアーキテクチャのためのハイレベル中間表現から中間レベルの中間表現への、プログラマのエラーの伝搬を制限するための、堅固な型システム(type system)が必要である。堅固な型システムの開発は、型理論のアプリケーションを介して成就することができる。これらのアプリケーションのためのロジックの標準言語は、Floyd-Hoareロジックおよび直観主義型論理(intuitionistic type theory)である。命令型の中間レベルの中間表現(imperative mid-level intermediate representation)のためにFloyd-Hoareロジックを使用することは自然であり得るけれども、表現が、分散量子コンピュータのための機能エレメントを有する場合、直観主義型論理から利益を得ることができる。上述したように、QHDLの使用の後で、ロウレベル中間表現(570)、量子制御システム言語(580)、およびマシンコード(590)を取得するかまたは適用することができる。
【0053】
さらに、量子プログラムのコンパイルに関して、図6は、この開示の態様に従う量子コンパイラの典型的コンポーネントの一例を図示する略図600を示す。略図600に示すように、量子コンパイラ620は、量子プログラミング言語ソースコード610を受信する。量子コンパイラ620は、字句アナライザ630およびセマンティックアナライザ640を含み、セマンティックアナライザ640は、操作セマンティックアナライザ650と意味論的セマンティックアナライザ660を有する。量子コンパイラ620の出力は、中間表現670である。
【0054】
ソフトウェア定義されたアーキテクチャの場合、量子コンパイラ620の変形(variant)を使用して、ソースコードのハイレベル中間表現(HLIR)(610)を中間レベルの中間表現(MLIR)(670)に変換する。HLIRは、字句アナライザ630を通過し、字句アナライザ630は、プログラムのシンタックスが適切であることをチェックまたは検証する。目標は、ソフトウェア定義されたアーキテクチャが適切にフォーマットされたパラメータおよび命令で使用されているかどうかを確認することである。次に、セマンティックアナライザ640は、コードの有意味性を決定する。概略図600に示すように、これは2つのレベルで行われる。操作セマンティックアナライザ650は、コードの組織がソフトウェア定義されたアーキテクチャに準拠しているかどうかをチェックする。次に、意味論的セマンティックアナライザ660は、各ステートメントの入力と出力の予想されるタイプと実際のタイプの同等性を検証する。セマンティックアナライザが完了すると、ハイレベル中間表現(HLIR)から中間レベルの中間表現(MLIR)への変換が完了し、MLIRは、ソフトウェア定義されたアーキテクチャの言語プリミティブを含む。
【0055】
ソフトウェア定義されたQCアーキテクチャの操作に関連した他の態様は、例外処理である。ソフトウェア定義された量子コンピュータ上でプログラムが実行されている間、例外が起こり得る。図7A-7Cは、この開示の態様に従って免除分類法の一例を図肢する略図700、740、650を示す。
【0056】
図7のダイアグラム700に示すように、免除710は、ハードウェア720またはソフトウェア730から起こる可能性がある。ソフトウェア定義されたQCアーキテクチャのためのAPIスタック(例えば、APIスタック310)は、一般に、これらの例外を適切に処理し、適切なレベルの抽象化で、例外メッセージを返すのに十分に堅固である。図7Bのダイアグラム740は、ハードウェア例外720を示す。これらの例外は、限定する必要はないが、デコヒーレンスエラー721、測定エラー722、シャトリングエラー725、リセット726、インタラプト727、テレポーテーションエラー728、および周波数クラウド729を含むことができる。測定エラー722は、グローバル測定エラー723または部分測定エラー724のいずれかから起こり得る。
【0057】
図7Cのダイアグラム750は、ソフトウェア例外730を示す。これらの例外は、スタックトレース760、エラー770およびプログラマイニシエート(programmer initiated)780を含むことができる。唯一のプログラマイニシエート例外は測定である。ソフトウェアエラー770は、これらに限定されないが、アドレスエラー771、回転丸め込みエラー772、特権違反(privilege violation)エラー773、不正な命令エラー、ゼロ除算エラー775、クローニングエラー(cloning error)776、トモグラフィーエラー777を含む。ソフトウェア定義されたQCアーキテクチャにおいて、中間層がハードウェアエラーを抽象化し、多数のソフトウェアエラーを処理する上で重要な役割を果たす。
【0058】
図8を参照すると、この開示の態様に従う例示コンピュータデバイス800が図示される。コンピュータデバイス800は、例えば、単一コンピュータデバイス、複数のコンピューティングデバイス、または分散コンピューティングシステムを表すことができる。コンピュータデバイス800は、量子コンピュータ(またはQC/QIPシステム)、古典的コンピュータ、または量子および古典的コンピューティング機能の組み合わせとして構成することができる。例えば、コンピュータデバイス800は、モジュラー拡張性、アーキテクチャ、リソースマネージャ機能性およびワークフロー、APIアクセスポイント、および免除分類法/処理を含むソフトウェア定義された量子コンピュータのために、ここに記載された特徴のいくつか、または全てをインプリメントすることができる。さらに、コンピュータデバイス800は、古典的コンピュータの態様をインプリメントして、コンパイル、最適化等のある機能を実行することができる。さらに、コンピュータデバイス800は、ここに記載した種々の態様を可能にするためにシーケンシャルに、および/または同時に古典的コンピュータおよび量子コンピュータの特徴の組み合わせをインプリメントすることができる。このため、コンピュータデバイス800は、図1乃至3に関連して記載されたハードウェアおよび/またはソフトウェアコンポーネントの1つまたは複数を含むことができる。
【0059】
より一般的には、コンピュータデバイス800は、ここに記載した特徴の1つまたは複数に関連づけられた処理機能を実行するためのプロセッサ848を含むことができる。プロセッサ848は、単一のまたは複数のプロセッサ、またはマルチコアプロセッサを含むことができる。さらに、プロセッサ848は、集積処理システムおよび/または分散処理システムとしてインプリメントすることができる。
【0060】
プロセッサ848は、中央処理装置(CPU)、量子処理ユニット(QPU)、または両方を含むことができる。このため、プロセッサ848は、古典的動作、量子動作、または古典的動作と量子動作の組み合わせを、実行またはインプリメントするために使用することができる。プロセッサ848は、例えば、制御ユニット、通信制御ユニット、および/またはスイッチ/ルータユニット(図1および2を参照)の少なくとも一部をインプリメントして、プログラム、APIsおよび/QOS(図1乃至3参照)、の少なくとも一部を実行し、および/またはキュービット制御(図1乃至3を参照)に関連した態様をインプリメントするために使用することができる。
【0061】
プロセッサ848は、例えば、図4A乃至4Cに記載したリソースマネージャワークフローを実行し、図5に記載したアプリケーションプログラミングインタフェース(API)のレベルをインプリメントし、図6に記載したコンパイラアーキテクチャの機能をインプリメントし、および/または図7A乃至7Cに記載した例外をインプリメントするために使用することができる。
【0062】
コンピュータデバイス800は、データを記憶するためのメモリ850を含むことができ、メモリ850は、ここに記載した機能を実行するためのプロセッサ848により実行可能な命令を含むことができる。インプリメンテーションにおいて、メモリ850は、ここに記載した1つまたは複数の機能または動作を実行するためのコードまたは命令を記憶するコンピュータ可読記憶媒体に対応することができる。一例において、メモリ850は、図1および2のプログラム110および110aを含むことができる。他の例において、メモリ850は、図(例えば、QOS320の少なくとも一部を記憶することにより)、図3に記載したソフトウェア定義された量子コンピュータアーキテクチャ、図4A乃至4Cのリソースマネージャワークフロー、図5に記載したAPIアクセスポイントのレベル、図6に記載したコンパイラアーキテクチャ、および/または図7A乃至7Cに記載した例外をイネーブルにするために使用することができる。
【0063】
さらに、コンピュータデバイス800は、ここに記載したハードウェア、ソフトウェアおよびサービスを利用する、1つまたは複数の当事者との通信を確立し維持することを提供する通信コンポーネント852を含むことができる。通信コンポーネント852は、コンピューティングデバイス800上のコンポーネント間の通信と、並びに、コンピュータデバイス800と外部デバイス、例えば、コンピュータデバイス800に、シリアルに、またはローカルに接続された通信ネットワークおよび/またはデバイス上に位置するデバイス間の通信を運ぶことができる。例えば、通信コンポーネント852は、1つまたは複数のバスを含むことができ、さらに、外部デバイスとインタフェースするために動作可能な、それぞれ送信機および受信機に関連づけられたチェーンコンポーネントを送信し、チェーンコンポーネントを受信することを含むことができる。
【0064】
一態様において、コンピュータデバイス800が、量子演算をインプリメントするとき、通信コンポーネント852は、図2の通信制御ユニット(例えば、通信制御ユニット220aおよび220b)およびスイッチ/ルータユニット230の態様を含み、および/またはインプリメントすることができる。
【0065】
さらに、コンピュータデバイス800は、データストア854を含むことができ、それは、ここに記載したインプリメンテーションに関連して採用された、情報、データベース、およびプログラムのマスストレージを提供するハードウェアおよび/ソフトウェアの任意の適切な組み合わせであり得る。例えば、データストア854は、オペレーティングシステム840(例えば、古典的OS、量子OS、または両方)のためのデータリポジトリであり得る。1つのインプリメンテーションにおいて、データストア854は、メモリ850を含むことができる。
【0066】
コンピュータデバイス800は、また、コンピュータデバイス800のユーザから入力を受信するように動作可能であり、さらに、ユーザに提示するための出力を生成するように動作可能なユーザインタフェースコンポーネント856を含むことができる。
【0067】
ユーザインタフェースコンポーネント856は、これらに限定されないが、キーボード、テンキー、マウス、タッチセンサー式ディスプレイ、デジタイザ、ナビゲーションキー、ファンクションキー、マイクロフォン、音声認識コンポーネント、ユーザからの入力を受信することができる任意の他のメカニズム、あるいはそれらの任意の組み合わせを含む、1つまたは複数の入力デバイスを含むことができる。さらに、ユーザインタフェースコンポーネント856は、これらに限定されないが、ディスプレイ、スピーカ、ハプティックフィードバックメカニズム、プリンタ、出力をユーザに提示することができる任意の他のメカニズム、あるいはそれらの任意の組み合わせを含む、1つまたは複数の出力デバイスを含むことができる。
【0068】
1つのインプリメンテーションにおいて、ユーザインタフェースコンポーネント856は、オペレーティングシステム840の動作に対応するメッセージを送信および/または受信することができる。さらに、プロセッサ848は、オペレーティングシステム856および/またはアプリケーションまたはプログラムを実行することができ、メモリ850またはデータストア854は、それらを記憶することができる。コンピュータデバイス800がクラウドベースのインフラストラクチャーソリューションの一部として、インプリメントされると、ユーザインタフェースコンポーネント856は、クラウドベースインフラストラクチャーソリューションのユーザが遠隔的にコンピュータデバイス800と相互作用することを可能にするために使用することができる。例えば、ユーザは、コンピュータデバイス800により実行するようにプログラムされたアルゴリズムまたはシミュレーションを提供することにより相互作用することができる。
【0069】
さらに他の態様において、コンピュータデバイス800は、量子コンピュータまたはQC/QIPシステムの態様をインプリメントするとき、キュービットハードウェア870を含むことができる。上述したように、キュービットハードウェア870は、イオントラップ技術のような1つの型の量子技術に基づくことができ、この場合、キュービットハードウェア870は、量子演算を実行するための少なくとも1つのイオントラップを含む。キュービッドハードウェア870は、超電導技術のような他の型の量子技術に基づくことができ、この場合、キュービットハードウェア870は、量子演算を行うための超電導回路を含む。
【0070】
図示するインプリメンテーションに従ってこの開示を述べたけれども、当業者は、実施形態に対する変形例があり得ること、そしてこれらの変形例はこの開示の範囲内であることを容易に認識するであろう。したがって、多くの変形例は、添付した請求項の範囲から逸脱することなく当業者により作ることができる。

図1A
図1B
図1C
図1D
図2
図3
図4A
図4B
図4C
図5
図6
図7A
図7B
図7C
図8