(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-05-14
(54)【発明の名称】ハイブリッド古典/量子システムを採用する改良された量子回路の動作のための通信の調整およびノードの同期
(51)【国際特許分類】
G06N 10/80 20220101AFI20240507BHJP
【FI】
G06N10/80
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2023558850
(86)(22)【出願日】2022-04-29
(85)【翻訳文提出日】2023-09-25
(86)【国際出願番号】 EP2022061633
(87)【国際公開番号】W WO2022233750
(87)【国際公開日】2022-11-10
(32)【優先日】2021-05-04
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
(71)【出願人】
【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレーション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
【住所又は居所原語表記】New Orchard Road, Armonk, New York 10504, United States of America
(74)【代理人】
【識別番号】100112690
【氏名又は名称】太佐 種一
(74)【代理人】
【識別番号】100120710
【氏名又は名称】片岡 忠彦
(72)【発明者】
【氏名】ルーディンガー、ジェフリー
(57)【要約】
量子ビットのセットに対して量子回路を操作するためのシステム、コンピュータ実装方法、またはコンピュータ・プログラム製品、あるいはその組み合わせが提供される。実施形態によれば、システムは、2つ以上のノード間のデータ転送の制御を容易にすることができる。システムは、コンピュータ実行可能コンポーネントを格納するメモリ、およびメモリに格納されたコンピュータ実行可能コンポーネントを実行するプロセッサを備えることができる。コンピュータ実行可能コンポーネントは、1つまたは複数のコンパイルされた通信経路に沿った、まだ決定されていないデータの転送のために、2つ以上のノード間の1つまたは複数の通信経路をコンパイルするコンパイル・コンポーネントを含むことができる。代替または追加あるいはその両方として、コンピュータ実行可能コンポーネントは、1つまたは複数の量子ゲート動作の2つ以上のノードでの実行を揃えるように、2つ以上のノードで連続的に繰り返す時点を共通に設定し、トリガーすることができる、間隔境界実装コンポーネントを含むことができる。
【特許請求の範囲】
【請求項1】
コンピュータ実行可能コンポーネントを格納するメモリと、
前記メモリに格納された前記コンピュータ実行可能コンポーネントを実行するプロセッサとを備えているシステムであって、前記コンピュータ実行可能コンポーネントが、
1つまたは複数の量子タスクの2つ以上のノードでの実行を揃えるように、前記2つ以上のノードで連続的に繰り返す時点を共通に設定し、トリガーする、間隔境界実装コンポーネントを含む、システム。
【請求項2】
前記コンピュータ実行可能コンポーネントが、
2つ以上の量子ビットに対する1つまたは複数の量子タスクの実行のために、前記連続的に繰り返す時点を採用する実行コンポーネントをさらに含む、請求項1に記載のシステム。
【請求項3】
前記コンピュータ実行可能コンポーネントが、
前記連続的に繰り返す時点の2つ以上のインスタンスで、2つ以上の量子ビットに対する同時に開始される量子タスクを引き起こす実行コンポーネントをさらに含む、請求項1または2のいずれかに記載のシステム。
【請求項4】
前記連続的に繰り返す時点の反復が、連続的に繰り返す同じ長さの時間間隔の境界を示す、請求項1ないし3のいずれかに記載のシステム。
【請求項5】
前記コンピュータ実行可能コンポーネントが、
前記1つまたは複数のコンパイルされた通信経路に沿った、まだ決定されていないデータの転送のために、前記2つ以上のノード間の1つまたは複数の通信経路をコンパイルするコンパイル・コンポーネントをさらに含み、
前記連続的に繰り返す時点のうちの連続的時点間の共通の時間間隔の長さが、前記1つまたは複数の通信経路に沿った最大データ伝搬時間と少なくとも同じくらいである、請求項1ないし4のいずれかに記載のシステム。
【請求項6】
前記コンピュータ実行可能コンポーネントが、
前記1つまたは複数の量子タスクを含んでいる量子プログラムを実行するための1つまたは複数の命令をコンパイルするコンパイル・コンポーネントをさらに含み、
前記コンパイル・コンポーネントが、前記連続的に繰り返す時点と一致しない方法で前記1つまたは複数の量子タスクのうちの少なくとも1つを実行する、請求項1ないし5のいずれかに記載のシステム。
【請求項7】
前記コンピュータ実行可能コンポーネントが、
前記1つまたは複数のコンパイルされた通信経路に沿った、まだ決定されていないデータの転送のために、前記2つ以上のノード間の1つまたは複数の通信経路をコンパイルするコンパイル・コンポーネントをさらに含み、
前記データのコンパイルされた転送または受信後の使用が、前記連続的に繰り返す時点の1つまたは複数の反復に揃えられる、請求項1ないし6のいずれかに記載のシステム。
【請求項8】
プロセッサに動作可能に結合されたシステムによって、1つまたは複数の量子タスクの2つ以上のノードでの実行を揃えるように、前記システムの前記2つ以上のノードで連続的に繰り返す時点を共通に設定し、トリガーすることを含む、コンピュータ実装方法。
【請求項9】
前記システムによって、2つ以上の量子ビットに対する1つまたは複数の量子タスクの実行のために、前記連続的に繰り返す時点を採用することをさらに含む、請求項8に記載のコンピュータ実装方法。
【請求項10】
前記連続的に繰り返す時点の反復が、連続的に繰り返す同じ長さの時間間隔の境界を示す、請求項8または9のいずれかに記載のコンピュータ実装方法。
【請求項11】
前記システムによって、前記連続的に繰り返す時点の2つ以上のインスタンスで、2つ以上の量子ビットに対する同時に開始される量子タスクを引き起こすことをさらに含む、請求項8ないし10のいずれかに記載のコンピュータ実装方法。
【請求項12】
前記システムによって、前記1つまたは複数のコンパイルされた通信経路に沿ったデータの転送のために、前記2つ以上のノード間の1つまたは複数の通信経路をコンパイルすることをさらに含み、
前記連続的に繰り返す時点のうちの連続的時点間の共通の時間間隔の長さが、前記1つまたは複数の通信経路に沿った最大データ伝搬時間と少なくとも同じくらいである、請求項8ないし11のいずれかに記載のコンピュータ実装方法。
【請求項13】
前記システムによって、前記1つまたは複数の量子タスクを含んでいる量子プログラムを実行するための1つまたは複数の命令をコンパイルすることと、
前記システムによって、前記連続的に繰り返す時点と一致しない方法で前記1つまたは複数の量子タスクのうちの少なくとも1つを実行することとをさらに含む、請求項8ないし12のいずれかに記載のコンピュータ実装方法。
【請求項14】
前記システムによって、前記1つまたは複数のコンパイルされた通信経路に沿ったデータの転送のために、前記2つ以上のノード間の1つまたは複数の通信経路をコンパイルすることをさらに含み、
前記データのコンパイルされた転送または受信後の使用が、前記連続的に繰り返す時点の1つまたは複数の反復に揃えられる、請求項8ないし13のいずれかに記載のコンピュータ実装方法。
【請求項15】
システムの2つ以上のノードでの量子タスクの制御を容易にするコンピュータ・プログラム製品であって、前記コンピュータ・プログラム製品が、プログラム命令が具現化されているコンピュータ可読ストレージ媒体を備えており、前記プログラム命令が、前記システムのプロセッサによって実行可能であり、前記プロセッサに、
前記プロセッサによって、1つまたは複数の量子タスクの2つ以上のノードでの実行を揃えるように、前記システムの前記2つ以上のノードで連続的に繰り返す時点を共通に設定し、トリガーすることを実行させる、コンピュータ・プログラム製品。
【請求項16】
前記プログラム命令が、前記プロセッサに、
前記プロセッサによって、2つ以上の量子ビットに対する1つまたは複数の量子タスクの実行のために、前記連続的に繰り返す時点を採用することを実行させるようにさらに実行可能である、請求項15に記載のコンピュータ・プログラム製品。
【請求項17】
前記プログラム命令が、前記プロセッサに、
前記プロセッサによって、前記連続的に繰り返す時点の2つ以上のインスタンスで、2つ以上の量子ビットに対する同時に開始される量子タスクを引き起こすことを実行させるようにさらに実行可能である、請求項15または16のいずれかに記載のコンピュータ・プログラム製品。
【請求項18】
前記連続的に繰り返す時点の反復が、連続的に繰り返す同じ長さの時間間隔の境界を示す、請求項15ないし17のいずれかに記載のコンピュータ・プログラム製品。
【請求項19】
前記プログラム命令が、前記プロセッサに、
前記プロセッサによって、前記1つまたは複数のコンパイルされた通信経路に沿ったデータの転送のために、前記2つ以上のノード間の1つまたは複数の通信経路をコンパイルすることを実行させるようにさらに実行可能であり、
前記連続的に繰り返す時点のうちの連続的時点間の共通の時間間隔の長さが、前記1つまたは複数の通信経路に沿った最大データ伝搬時間と少なくとも同じくらいである、請求項15ないし18のいずれかに記載のコンピュータ・プログラム製品。
【請求項20】
前記プログラム命令が、前記プロセッサに、
前記プロセッサによって、前記1つまたは複数の量子タスクを含んでいる量子プログラムを実行するための1つまたは複数の命令をコンパイルすることと、
前記プロセッサによって、前記連続的に繰り返す時点と一致しない方法で前記1つまたは複数の量子タスクのうちの少なくとも1つを実行することとを実行させるようにさらに実行可能である、請求項15ないし19のいずれかに記載のコンピュータ・プログラム製品。
【発明の詳細な説明】
【技術分野】
【0001】
本明細書に記載された1つまたは複数の実施形態は、一般に、量子プログラムの制御またはスケジューリングあるいはその両方に関連しており、より詳細には、コンパイルされた通信命令または普遍的な時間間隔あるいはその両方を採用することによる、ハイブリッド古典/量子システム(hybrid classical/quantum system)を介する、改良された量子プログラムの制御またはスケジューリングあるいはその両方に関連している。
【背景技術】
【0002】
量子コンピューティングは、通常、計算機能および情報処理機能を実行するための量子力学的現象の利用である。量子コンピューティングは、トランジスタを使用して2進値に対して通常は動作する古典的コンピューティングとは対照的であると見なすことができる。すなわち、古典的コンピュータは、0または1のいずれかであるビット値に対して動作することができるが、量子コンピュータは、0と1の両方の重ね合わせを含む量子ビット(quantum bits)(量子ビット(qubit))に対して動作し、複数の量子ビットをもつれさせることができ、干渉を使用することができる。量子コンピューティングは、計算の複雑さに起因して、古典的コンピュータ上では解くことができないか、またはゆっくりと解くことしかできない問題を、解く可能性がある。
【0003】
量子コンピューティングは、量子ビットに対して動作するために、量子回路などの特殊な制御を利用することができる。量子回路は、量子ビットに対する動作を実行することができる変換である。量子回路は、例えば、量子プログラムの一部として、量子ゲートのシーケンスなどの1つまたは複数の量子ゲートとして実装され得る。量子ゲートは、パルスのシーケンスを実装するなどの、量子ビットのセットに対する1つまたは複数の物理的動作として実装され得る。パルスは、量子ビットの状態を変更するために量子ビットに適用され得る時間に依存するトーン(例えば、波または波形)である。
【0004】
大規模では、量子コンピューティング・クラウド・サービス・プロバイダは、1年間に、ユーザのために数百万の量子ジョブを実行することができる。各量子ジョブは、1つまたは複数の量子プログラムの実行を含むことができる。実現可能であれば、1つまたは複数の量子プログラムは、1つまたは複数の同じ量子ビットに対して動作することができる。量子ビットが、制限された時間量の間しか存在できない(またはコヒーレントであることができない)場合、量子回路の動作の目的は、動作の時間を減らすこと、または動作の速度を増やすこと、あるいはその両方であることができる。量子回路を操作するために費やされた時間は、1つまたは複数の量子ビットに対する動作の使用可能な時間を不必要に減らす可能性がある。これは、1つまたは複数の量子ビットのデコヒーレンスの前に使用できる1つまたは複数の量子ビットのコヒーレント時間に起因する可能性がある。例えば、場合によっては、100~200マイクロ秒未満で量子ビット状態が失われることがある。さらに、量子ビットに対する動作は、通常、ある程度のデコヒーレンスまたはある程度の量子ノイズあるいはその両方などの、何らかのエラーを導入し、量子ビットの可用性にさらに影響を与える。量子ノイズは、量子相互作用の離散的性質または確率的性質あるいはその両方に起因するノイズのことを指すことができる。
【0005】
また、大規模では、大量の量子ジョブが、各量子プログラムを素早く実行するように圧力をかけることがある。すなわち、実行速度の向上は、システムの使用を最大化すること、量子プログラムをコンパイルするためのコンパイル時間を最小化すること、コンパイルが完了するのを待機する必要があるユーザを最小化すること、または古典的計算リソースの望ましくない消費を最小化すること、あるいはその組み合わせと、直接的、または間接的に、あるいはその両方で、相互関係がある可能性がある。最大の性能が、短期のエラーが生じやすいシステムから引き出され得るように、または物理的レベルのパルスへのコンパイルの(例えば、パルスの実行の正確さ、精度、または効率、あるいはその組み合わせに関連する)品質が改善され得るように、あるいはその両方であるように、これらの量子ジョブを実行するよう圧力がかけられることもある。
【0006】
7つ以上の量子ビットを採用する量子プログラムなどの多量子ビットの量子プログラムを制御するため、またはスケジュールするため、あるいはその両方のための現在の手法は、古典的リソースおよび量子リソースの両方を採用することができ、したがって、1つまたは複数のハイブリッド古典/量子システム(hybrid classical/quantum systems)を採用することができる。1つまたは複数の活動中のノードを制御するために、古典的リソース(例えば、1つまたは複数の制御CPUなどの1つまたは複数の制御ノード)が採用され得る。1つまたは複数の量子パルスを実施することによって、1つまたは複数の量子プロセッサなどの1つまたは複数の活動中のノードは、量子ビットの測定、または1つまたは複数の量子回路を操作すること、あるいはその両方などの、量子ビット動作を実行することができる。
【0007】
これらの現在の制御手法またはスケジューリング手法あるいはその両方は、多量子ビットの量子プログラムを実施するように、量子演算をスケジュールするか、量子演算用のデータを渡すか、または量子演算を実行するか、あるいはその組み合わせを実行するために、大量のオーバーヘッド(例えば、エネルギー、時間、または処理能力、あるいはその組み合わせ)を利用する可能性がある。測定または量子プログラム実行命令あるいはその両方に関連するデータなどのデータを、古典的リソースまたは量子リソースあるいはその両方の間で転送するために、手法は、グローバル共有メモリに依存することがある。グローバル共有メモリは、1つまたは複数の中心的なデータ収集点を作成することがあり、中心的なデータ収集点は、1つまたは複数の制御ノードと1つまたは複数の活動中のノードの間の隘路になる可能性がある。データの隘路は、量子プログラムの実行速度を不必要に低下させることがあり、デコヒーレンスなどに起因して、採用されている量子ビットに対して実行できる量子演算の量を減らし、量子演算の性能の品質を低下させることもある。
【0008】
さらに、古典的リソース(例えば、1つまたは複数の制御ノード)は、非決定的であることがあり、データを分析すること、命令を準備すること、または命令を送信すること、あるいはその組み合わせのために、可変量の時間を必要とすることがある。可変量の時間に起因して、制御ノードまたは活動中のノードあるいはその両方の間の同期が失われることがある。この同期の喪失は、そのような同期に依存する多量子ビット動作を中断させるか、多量子ビット動作の初期化を延長するか、多量子ビット動作の実施の失敗を引き起こすか、または多量子ビット動作の実施にエラーを導入するか、あるいはその組み合わせである可能性がある。前述のデータの隘路の効果と同様に、同期の喪失は、量子プログラムの実行速度を不必要に低下させることがあり、またはデコヒーレンスもしくは量子ノイズまたはその両方などに起因して、採用されている量子ビットに対して実行され得る量子演算の量を減らすか、もしくは量子演算の性能の品質を低下させるか、またはその両方であることがあり、あるいはその組み合わせであることがある。
【発明の概要】
【0009】
以下に、本明細書に記載された1つまたは複数の実施形態の基本的理解を可能にするための概要を示す。この概要は、主要な要素または重要な要素を識別するよう意図されておらず、特定の実施形態の範囲または特許請求の範囲あるいはその両方を正確に記述するよう意図されていない。この概要の唯一の目的は、後で提示されるより詳細な説明のための前置きとして、概念を簡略化された形態で提示することである。本明細書に記載された1つまたは複数の実施形態では、ハイブリッド古典/量子システムなどの量子回路の動作を改善するために、通信命令をコンパイルすること、または普遍的な時間間隔を採用すること、あるいはその両方を容易にすることができる、デバイス、システム、コンピュータ実装方法、装置、またはコンピュータ・プログラム製品、あるいはその組み合わせが説明される。
【0010】
実施形態によれば、システムは、コンピュータ実行可能コンポーネントを格納するメモリ、およびメモリに格納されたコンピュータ実行可能コンポーネントを実行するプロセッサを備えることができる。コンピュータ実行可能コンポーネントは、1つまたは複数の量子タスクの2つ以上のノードでの実行を揃えるように、2つ以上のノードで連続的に繰り返す時点を共通に設定し、トリガーする、間隔境界実装コンポーネントを含むことができる。
【0011】
別の実施形態によれば、コンピュータ実装方法は、プロセッサに動作可能に結合されたシステムによって、1つまたは複数の量子タスクの2つ以上のノードでの実行を揃えるように、システムの2つ以上のノードで連続的に繰り返す時点を共通に設定し、トリガーすることを含むことができる。
【0012】
さらに別の実施形態によれば、システムの2つ以上のノードで量子タスクの制御を容易にするためのコンピュータ・プログラム製品が、プログラム命令が具現化されているコンピュータ可読ストレージ媒体を備えることができる。プログラム命令は、1つまたは複数の量子タスクの2つ以上のノードでの実行を揃えるように、システムの2つ以上のノードで連続的に繰り返す時点を共通に設定し、トリガーするために、プロセッサによって実行可能である。
【0013】
そのようなシステム、コンピュータ・プログラム製品、または方法、あるいはその組み合わせの利点は、そのような量子演算のより高速な実行または同期された実行あるいはその両方による、そのような量子演算の改良された(例えば、改善されたか、または最適化されたか、あるいはその両方である)性能であることができる。この同期は、2つ以上の量子演算を含んでいる量子プログラムの実行中に、2つ以上のノード間での、データを含むか、または含まないタイミング命令の転送なしで、容易にされ得る。
【0014】
上記のシステム、コンピュータ・プログラム製品、または方法、あるいはその組み合わせの1つまたは複数の実施形態では、実行コンポーネントは、2つ以上の量子ビットに対する量子回路の1つまたは複数の部分の複数の連続的実行について、連続的に繰り返す時点を採用することができる。追加または代替あるいはその両方として、実行コンポーネントは、連続的に繰り返す時点の2つ以上のインスタンスで、2つ以上の量子ビットに対する同時に開始される量子タスクを引き起こすことができる。そのようなシステム、コンピュータ・プログラム製品、または方法、あるいはその組み合わせの利点は、そのような量子演算を実行するための時間全体における短縮であることができる。すなわち、2つ以上の量子ビットに関するなどの、1つまたは複数の量子演算が実行される場合、そのような量子演算の速度または品質あるいはその両方が改良され得る(例えば、改善されるか、または最適化されるか、あるいはその両方が行われ得る)。例えば、事前に実装された共通の時点に起因して、遅延を最小限に抑えて、1つまたは複数の多量子ビット量子演算がスケジュールされ得る。
【0015】
追加または代替あるいはその両方として、上記のシステム、コンピュータ・プログラム製品、または方法、あるいはその組み合わせの1つまたは複数の実施形態では、コンパイル・コンポーネントは、1つまたは複数のコンパイルされた通信経路に沿った、まだ決定されていないデータの転送のために、2つ以上のノード間の1つまたは複数の通信経路をコンパイルすることができる。連続的に繰り返す時点のうちの連続的時点間の共通の時間間隔の長さは、1つまたは複数の通信経路に沿った最大データ伝搬時間と少なくとも同じくらいであることができる。そのようなシステム、コンピュータ・プログラム製品、または方法、あるいはその組み合わせの利点は、そのような量子演算のより高速な同期された実行によるだけでなく、2つ以上のノード間のデータのより高速な転送によっても容易にされる、そのような量子演算の改良された(例えば、改善されたか、または最適化されたか、あるいはその両方である)性能であることができる。このより高速なデータ転送は、複数の量子演算を含んでいる量子プログラムの実行中に、隘路もしくは中心的なデータ収集点またはその両方なしで、またはそれらを減らすことによって、あるいはその両方で、容易にされ得る。
【図面の簡単な説明】
【0016】
【
図1】本明細書に記載された1つまたは複数の実施形態に従って、通信命令をコンパイルし、コンパイルされた通信命令を採用することによって、量子ビットのセットに対する量子プログラムの動作を容易にすることができる例示的な非限定的システムのブロック図を示す図である。
【
図2】本明細書に記載された1つまたは複数の実施形態に従って、
図1の非限定的システムを採用することができる拡大された非限定的システムの別のブロック図を示す図であり、拡大された非限定的システムも、通信命令をコンパイルし、コンパイルされた通信命令を採用することによって、量子ビットのセットに対する量子プログラムの動作を容易にすることができる。
【
図3】本明細書に記載された1つまたは複数の実施形態に従って、
図1の非限定的システムにおいて、または
図2の拡大された非限定的システムにおいて、あるいはその両方において採用され得る複数の通信経路の図を示す図である。
【
図4】本明細書に記載された1つまたは複数の実施形態に従って、
図3に示された通信ファブリックを提供できる例示的な構成の図を示す図である。
【
図5】本明細書に記載された1つまたは複数の実施形態に従って、
図3に示された通信ファブリックの例示的な構成の2つの代替の図を示す図である。
【
図6】量子プログラムの実行のためのスケジュールの一部の概略図を示す図である。
図6は、
図6のフロー図に示された量子プログラムなどの量子プログラムを実行するために、1つまたは複数の通信命令をコンパイルすることにおいて使用するための、例示的なコンパイル・アルゴリズムをさらに示している。
【
図7】本明細書に記載された1つまたは複数の実施形態に従って、通信命令をコンパイルし、コンパイルされた通信命令を採用することによって、量子ビットのセットに対する量子プログラムの動作を容易にすることができる例示的な非限定的コンピュータ実装方法のフロー図を示す図である。
【
図8】本明細書に記載された1つまたは複数の実施形態に従って、通信命令をコンパイルし、コンパイルされた通信命令を採用することによって、量子ビットのセットに対する量子プログラムの動作を容易にすることができる例示的な非限定的コンピュータ実装方法の、
図7のフロー図の続きを示す図である。
【
図9】本明細書に記載された1つまたは複数の実施形態に従って、普遍的な時間間隔を採用することによって、量子ビットのセットに対する量子プログラムの動作を容易にすることができる例示的な非限定的システムのブロック図を示す図である。
【
図10】本明細書に記載された1つまたは複数の実施形態に従って、普遍的な時間間隔の例示的な実装のブロック図を示す図である。
【
図11】本明細書に記載された1つまたは複数の実施形態に従って、普遍的な時間間隔の例示的な実装の別のブロック図を示す図である。
【
図12】本明細書に記載された1つまたは複数の実施形態に従って、普遍的な時間間隔を採用することによって、量子ビットのセットに対する量子プログラムの動作を容易にすることができる例示的な非限定的コンピュータ実装方法のフロー図を示す図である。
【
図13】本明細書に記載された1つまたは複数の実施形態に従って、普遍的な時間間隔を採用することによって、量子ビットのセットに対する量子プログラムの動作を容易にすることができる例示的な非限定的コンピュータ実装方法の、
図12のフロー図の続きを示す図である。
【
図14】本明細書に記載された1つまたは複数の実施形態に従って、通信命令をコンパイルし、コンパイルされた通信命令を採用することによって、および普遍的な時間間隔を採用することによって、量子ビットのセットに対する量子プログラムの動作を容易にすることができる例示的な非限定的システムのブロック図を示す図である。
【
図15】本明細書に記載された1つまたは複数の実施形態に従って、通信命令をコンパイルし、コンパイルされた通信命令を採用することによって、および普遍的な時間間隔を採用することによって、量子ビットのセットに対する量子プログラムの動作を容易にすることができる例示的な非限定的コンピュータ実装方法のフロー図を示す図である。
【
図16】本明細書に記載された1つまたは複数の実施形態に従って、通信命令をコンパイルし、コンパイルされた通信命令を採用することによって、および普遍的な時間間隔を採用することによって、量子ビットのセットに対する量子プログラムの動作を容易にすることができる例示的な非限定的コンピュータ実装方法の、
図15のフロー図の続きを示す図である。
【
図17】本明細書に記載された1つまたは複数の実施形態に従って、通信命令をコンパイルし、コンパイルされた通信命令を採用することによって、および普遍的な時間間隔を採用することによって、量子ビットのセットに対する量子プログラムの動作を容易にすることができる例示的な非限定的コンピュータ実装方法の、
図15のフロー図の別の続きを示す図である。
【
図18】本明細書に記載された1つまたは複数の実施形態に従って、通信ファブリックの対および普遍的な時間間隔の対の例示的な実装のブロック図を示す図である。
【
図19】本明細書に記載された1つまたは複数の実施形態を容易にすることができる例示的な非限定的動作環境のブロック図を示す図である。
【
図20】本明細書に記載された1つまたは複数の実施形態に従って、例示的な非限定的クラウド・コンピューティング環境のブロック図を示す図である。
【
図21】本明細書に記載された1つまたは複数の実施形態に従って、複数の例示的な非限定的抽象モデル・レイヤのブロック図を示す図である。
【発明を実施するための形態】
【0017】
以下の詳細な説明は、例にすぎず、実施形態、実施形態の適用、または実施形態使用、あるいはその組み合わせを制限するよう意図されていない。さらに、先行する「背景技術」もしくは「発明の概要」またはその両方のセクションにおいて、またはこの「発明を実施するための形態」のセクションにおいて、あるいはその組み合わせにおいて提示された、いずれかの明示されたか、または暗示されたか、あるいはその両方である情報によって、制約されるという意図はない。
【0018】
多量子ビットの量子プログラムを制御すること、またはスケジュールすること、あるいはその両方のための現在の手法と共に、前述の1つまたは複数の問題を考慮して、(例えば、1つまたは複数の量子プログラムを含んでいる)量子ジョブを実行するための実行時間または量子ジョブの実行の品質あるいはその両方を改善することが望ましいことがある。そのため、説明される主題は、量子ジョブを実行するための実行時間を改善する(例えば、改良する、最適化する、または短縮する、あるいはその組み合わせを行う)か、またはそのような量子ジョブの実行の品質を改善する(例えば、改良する、最適化する、または向上させる、あるいはその組み合わせを行う)か、あるいはその両方を行うことができるさまざまな技術を採用することができる。1つまたは複数の事例では、本明細書に記載された1つまたは複数の実施形態は、量子回路を実装している関連する量子プログラムの実行の増大したスケーリングを可能にすることができる。
【0019】
ここで、図を参照して、これらの実施形態のうちの1つまたは複数が説明され、全体を通じて、類似する参照番号が類似する要素を参照するために使用されている。本明細書において使用されるとき、「実体」、「要求している実体」、および「ユーザ実体」という用語は、機械、デバイス、コンポーネント、ハードウェア、ソフトウェア、スマート・デバイス、または人間、あるいはその組み合わせのことを指すことができる。以下の説明では、説明の目的で、1つまたは複数の実施形態を十分に理解できるように、多数の特定の詳細が示されている。しかし、これらの特定の詳細がなくても、1つまたは複数の事例において、1つまたは複数の実施形態が実践され得るということは明らかである。
【0020】
さらに、本明細書に記載された1つまたは複数の図に示された実施形態が、単に説明のためであり、そのため、実施形態のアーキテクチャが本明細書に示されているシステム、デバイス、またはコンポーネント、あるいはその組み合わせに限定されず、本明細書に示されているシステム、デバイス、またはコンポーネント、あるいはその組み合わせのいずれかの特定の順序、接続、または結合、あるいはその組み合わせにも限定されないということが、理解されるべきである。例えば、1つまたは複数の実施形態では、
図1、2、9、10、および14に示されている非限定的システム100、100E、900、900E、もしくは1400、またはその組み合わせ、またはこれらのシステム、あるいはその組み合わせが、
図14に示された動作環境1400などの動作環境を参照して本明細書において説明された1つまたは複数のコンピュータまたは計算に基づく要素あるいはその両方をさらに備えることができる。複数の説明された実施形態では、コンピュータまたは計算に基づく要素あるいはその両方は、本明細書において説明された
図1、2、9、10、および14、または他の図、あるいはその両方に関連して示されるか、または説明されるか、あるいはその両方であるシステム、デバイス、コンポーネント、またはコンピュータ実装動作、あるいはその組み合わせのうちの1つまたは複数を実装することに関連して、使用され得る。
【0021】
最初に
図1を大まかに参照すると、本明細書に記載された1つまたは複数の実施形態は、通信命令をコンパイルすることを容易にすることができる1つまたは複数のシステム、コンピュータ実装方法、装置、またはコンピュータ・プログラム製品、あるいはその組み合わせを含むことができる。例えば、
図1は、量子ジョブの実行を改良するための通信命令をコンパイルすることを容易にすることができる例示的な非限定的システム100のブロック図を示している。量子ジョブ・コンポーネントは、1つまたは複数の量子プログラムの実行を要求する量子ジョブ要求を取得することができる(例えば、ダウンロードすること、受信すること、検索すること、または同様のこと、あるいはその組み合わせを実行することができる)。決定コンポーネントは、量子プログラムを実行するために、1つまたは複数の抽象レイヤを含んでいる1つまたは複数の量子回路を決定することができる。コンパイル・コンポーネントは、量子プログラムを実行するために、1つまたは複数の通信経路に沿って、まだ決定されていないデータの転送のための1つまたは複数の通信経路をコンパイルすることができる。コンパイル・コンポーネントは、代替的または追加的あるいは両方で、転送されるまだ決定されていないデータの1つまたは複数のデータ・パラメータをコンパイルすることができる。
【0022】
通常、非限定的システム100は、量子ジョブを実行するために、コンパイルされた通信命令を実行することを容易にすることもできる。実行コンポーネントは、2つ以上の量子ビットに対して量子回路の動作を実行するために、決定されたデータを1つまたは複数の通信経路に沿って方向付けることができる。出力コンポーネントは、量子ジョブ要求に応答して、1つまたは複数の量子ジョブ結果を出力することができる。
【0023】
以下の説明が、単一の量子ジョブ要求からの単一の量子プログラムの動作のことを指しているということが、理解されるであろう。しかし、本明細書に記載されたプロセスのうちの1つまたは複数が拡張可能であることができるということも理解されるであろう。例えば、以下で理解されるであろうように、量子プログラム実装システム102は、1つまたは複数の通信ファブリック140を実装すること、または1つまたは複数の量子プログラムを実行すること、あるいはその両方を行うことができ、これらの各々が下で詳細に説明される。これらのさまざまなレベルのスケーリングは、量子プログラムを実行するために採用されている1つまたは複数の量子ビットの相関性がある減らされたデコヒーレンスまたはデコヒーレンス時間あるいはその両方に少なくとも部分的に起因して、量子プログラムのより高速、より効率的、またはよりエラーが生じにくい、あるいはその組み合わせである実行を可能にすることができる。
【0024】
1つまたは複数の実施形態では、非限定的システム100は、ハイブリッド・システムであることができ、したがって、量子プログラム実装システム102などの1つまたは複数の古典的システム、および量子システム101などの1つまたは複数の量子システムを、両方とも含むことができる。1つまたは複数の他の実施形態では、量子システム101は、非限定的システム100から分離することができるが、非限定的システム100と組み合わせて機能することができる。
【0025】
量子システム101(例えば、量子コンピュータ・システム、超伝導量子コンピュータ・システム、または同様のもの、あるいはその組み合わせ)は、量子アルゴリズムまたは量子回路あるいはその両方を採用することができ、入力データに対して量子演算または量子機能あるいはその両方を実行し、実体に出力され得る結果を生成するためのコンピューティング・コンポーネントまたはコンピューティング・デバイスあるいはその両方を含む。量子回路は、多ビットの量子ビット、物理的回路レベルのコンポーネント、高レベルのコンポーネント、または関数、あるいはその組み合わせなどの、量子ビット(quantum bits)(量子ビット(qubits)))を備えることができる。量子回路は、データ(例えば、入力データまたは入力データから導出された中間データあるいはその両方)に対して望ましい量子機能または量子計算あるいはその両方を実行し、出力として1つまたは複数の量子結果を生成するように構造化され得る(例えば、配置され得るか、または設計され得るか、あるいはその両方である)物理パルスを備えることができる。量子結果は、量子ジョブ要求に応答し、入力データに関連付けられることが可能であり、入力データ、量子機能、または量子計算、あるいはその組み合わせに少なくとも部分的に基づくことができる。
【0026】
1つまたは複数の実施形態では、量子システム101は、量子演算コンポーネント103および量子プロセッサ105などの、1つまたは複数の量子コンポーネントを備えることができる。量子演算コンポーネント103は、1つまたは複数の量子ビットに対して1つまたは複数の量子回路を操作するために、1つまたは複数の量子プロセス、量子計算、または量子測定、あるいはその組み合わせを実行することができる。例えば、量子演算コンポーネント103は、1つまたは複数のパルスに、量子システム101に存在する1つまたは複数の量子ビットの状態を刺激すること、または操作すること、あるいはその両方を実行させるために、量子ビット発振器、調波発振器、パルス発生器、または同様のもの、あるいはその組み合わせなどの、1つまたは複数の量子ビット・エフェクタ(qubit effectors)を操作することができる。量子プロセッサ105は、量子ビット生成などを制御できるなどの、任意の適切なプロセッサであることができる。量子プロセッサ105は、量子演算コンポーネント103の1つまたは複数のプロセスを制御するための1つまたは複数の命令を生成することができる。
【0027】
非限定的システム100の古典的部分を参照すると、量子プログラム実装システム102は、プロセッサを備えているか、または有線ネットワークもしくはワイヤレス・ネットワークまたはその両方と効果的通信もしくは動作可能な通信またはその両方を実行することができるか、あるいはその両方である、任意の種類のコンポーネント、機械、デバイス、設備、装置、または機器、あるいはその組み合わせを備えることができる。そのようなすべての実施形態が想定される。例えば、量子プログラム実装システム102は、サーバ・デバイス、コンピューティング・デバイス、汎用コンピュータ、専用コンピュータ、量子コンピューティング・デバイス(例えば、量子コンピュータ)、タブレット・コンピューティング・デバイス、ハンドヘルド・デバイス、サーバ・クラス・コンピューティング・マシンもしくはデータベースまたはその両方、ラップトップ・コンピュータ、ノートブック・コンピュータ、デスクトップ・コンピュータ、携帯電話、スマートフォン、民生用装置もしくは民生用機器またはその両方、工業用デバイスもしくは商用デバイスまたはその両方、デジタル・アシスタント、インターネットが有効化されたマルチメディア電話、マルチメディア・プレイヤー、または別の種類のデバイス、あるいはその組み合わせを備えることができる。
【0028】
1つまたは複数の実施形態では、量子プログラム実装システム102は、プロセッサ106(例えば、コンピュータ処理ユニット、マイクロプロセッサ、古典的プロセッサ、量子プロセッサ、または同様のプロセッサ、あるいはその組み合わせ)を備えることができる。1つまたは複数の実施形態では、量子プログラム実装システム102に関連付けられたすべてのコンポーネントは、1つまたは複数の実施形態の1つまたは複数の図を参照して、または参照せずに本明細書において説明されているように、1つまたは複数のコンピュータまたは機械あるいはその両方が読み取ることができるか、書き込むことができるか、または実行することができるか、あるいはその組み合わせが可能であるコンポーネントまたは命令あるいはその両方を備えることができ、これらのコンポーネントまたは命令あるいはその両方は、そのようなコンポーネントまたは命令あるいはその両方によって定義された1つまたは複数のプロセスの実行を容易にするように、プロセッサ106によって実行され得る。
【0029】
1つまたは複数の実施形態では、量子プログラム実装システム102は、プロセッサ106に動作可能に接続されたコンピュータ可読メモリ104を備えることができる。メモリ104は、コンピュータ実行可能命令を格納することができ、これらのコンピュータ実行可能命令は、プロセッサ106による実行時に、プロセッサ106または量子プログラム実装システム102の他のコンポーネント(例えば、量子ジョブ・コンポーネント108、決定コンポーネント110、コンパイル・コンポーネント112、実行コンポーネント116、または出力コンポーネント118、あるいはその組み合わせ)あるいはその両方に、1つまたは複数の動作を実行させる。1つまたは複数の実施形態では、メモリ104は、コンピュータ実行可能コンポーネント(例えば、量子ジョブ・コンポーネント108、決定コンポーネント110、コンパイル・コンポーネント112、実行コンポーネント116、または出力コンポーネント118、あるいはその組み合わせ)を格納することができる。
【0030】
本明細書に記載されている量子プログラム実装システム102またはそのコンポーネントあるいはその両方は、非限定的システム100、量子プログラム実装システム102、またはそれらの任意のコンポーネント、もしくはそれらに結合された任意のコンポーネント、またはその両方、あるいはその組み合わせの機能を実行するために、通信可能に、電気的に、動作可能に、光学的に、または他の方法で、あるいはその組み合わせで、バス124を介して互いに結合され得る。バス124は、メモリ・バス、メモリ・コントローラ、ペリフェラル・バス、外部バス、ローカル・バス、量子バス、または1つまたは複数のバス・アーキテクチャを採用することができる別の種類のバスのうちの1つまたは複数を含むことができる。バス124のこれらの例のうちの1つまたは複数が、本明細書に記載された任意の1つまたは複数の実施形態を実装するために採用され得る。
【0031】
1つまたは複数の実施形態では、量子プログラム実装システム102は、ネットワークなどを介して、1つまたは複数の外部のシステム、ソース、またはデバイス(例えば、古典的コンピューティング・デバイスもしくは量子コンピューティング・デバイスまたはその両方、通信デバイス、または同様のデバイス、あるいはその組み合わせ)、あるいはその組み合わせに(例えば、通信可能に、電気的に、動作可能に、光学的に、または同様の機能で、あるいはその組み合わせで)結合され得る。1つまたは複数の実施形態では、非限定的システム100のコンポーネントのうちの1つまたは複数は、クラウドに存在することができ、またはローカルなコンピューティング環境に(例えば、望ましい位置に)存在することができ、あるいはその両方が可能である。
【0032】
前述のプロセッサ106またはメモリ104あるいはその両方に加えて、量子プログラム実装システム102は、1つまたは複数のコンピュータまたは機械あるいはその両方が読み取ることができるか、書き込むことができるか、または実行することができるか、あるいはその組み合わせが可能であるコンポーネントまたは命令あるいはその両方を備えることができ、これらのコンポーネントまたは命令あるいはその両方は、プロセッサ106によって実行された場合に、そのようなコンポーネントまたは命令あるいはその両方によって定義された1つまたは複数の動作の実行を容易にすることができる。例えば、1つまたは複数の実施形態では、量子プログラム実装システム102は、量子ジョブ・コンポーネント108、決定コンポーネント110、コンパイル・コンポーネント112、実行コンポーネント116、または出力コンポーネント118、あるいはその組み合わせを備えることができる。
【0033】
量子ジョブ・コンポーネント108は、要求している実体から、量子ジョブ要求109を受信するか、ダウンロードするか、ストリーミングするか、または他の方法で取得するか、あるいはその組み合わせなどで、取得することができる。非限定的システム100は、量子プログラム実装システム102および量子システム101を使用して、量子ジョブ要求109において実装されるよう要求された1つまたは複数の量子プログラムを実行することができる。1つまたは複数の事例では、量子ジョブ要求109は、採用する1つまたは複数の特定の量子回路に関する1つまたは複数の命令を含むことができる。
【0034】
要求された1つまたは複数の量子プログラムに関連して、決定コンポーネント110は、1つまたは複数の量子プログラムを実装するために、1つまたは複数の量子回路を決定することができる。この決定は、量子プログラム実装システム102または非限定的システム100あるいはその両方の内部または外部あるいはその両方にある1つまたは複数のデータベースを検索することを含むことができる。1つまたは複数の事例では、決定コンポーネント110は、1つまたは複数のコンパイルされた量子回路を格納するためのデータベース部分を含むことができる。
【0035】
ここでコンパイル・コンポーネント112を参照し、本明細書では、1つまたは複数の機能を詳細に説明する前に、最初に、コンパイル・コンポーネント112によって実行され得る1つまたは複数の機能の1つまたは複数の概要説明を始める。
【0036】
通常、コンパイル・コンポーネント112は、下で詳細に説明される、1つまたは複数の制御ノードまたは1つまたは複数の動作ノードあるいはその両方の間のまだ決定されていないデータのスケジュールされた転送のために、通信命令をコンパイルすることができる。このコンパイルは、下で詳細に説明される、1つまたは複数の通信経路または1つまたは複数のデータ・パラメータあるいはその両方の識別を含むことができる。このコンパイルは、追加または代替あるいはその両方として、1つまたは複数の識別された通信経路に沿って1つまたは複数のデータ転送をスケジュールすることを含むことができる。このスケジューリングは、識別された1つまたは複数のデータ・パラメータに少なくとも部分的に基づくことができる。
【0037】
1つまたは複数の通信経路が識別されるか、生成されるか、またはスケジュールされるか、あるいはその組み合わせであるときに、特定の命令、測定結果、変分量子パラメータ(variational quantum parameters)、または同様のもの、あるいはその組み合わせなどの、1つまたは複数の量子プログラムの側面が、まだ計算されていないなど、まだ決定されていないという点において、データは、まだ決定されていないことが可能である。実際、これらの量子プログラムの側面は、量子プログラムの実行中に決定され得る。1つの例では、前の量子測定結果が分析されることが可能になり、量子プログラムを続行するためにその後の命令または量子パラメータ(例えば、変分量子パラメータ)あるいはその両方が決定されることが可能になるまで、1つまたは複数の量子ビットに対する物理パルスなどの1つまたは複数の物理的動作を操作するために、命令は事前に確立され得ない。すなわち、コンパイル・コンポーネント112によって実際のデータ・ビットが決定されることは可能でないが、データ転送経路(通信経路)、データ単位の数、転送ごとのデータの総量、または転送のスケジュール、あるいはその組み合わせを含んでいる情報が、下で説明されるコンパイル・コンポーネント112によって決定され得る。
【0038】
ここで、
図1に加えて
図2を参照すると、
図2は拡大された非限定的システム100Eの図を含んでいる。非限定的システム100Eは、
図1に示された非限定的システム100の代わりに採用され得る。すなわち、本明細書において提供された(または提供される)1つまたは複数の説明に関して、非限定的システム100および100Eは、互いに交換可能であることができる。非限定的システム100および100Eのうちの1つの説明または開示された態様あるいはその両方は、本明細書では、非限定的システム100および100Eのうちの他のものに当てはまることができる。
【0039】
本明細書において使用されるとき、ノード(例えば、制御ノードまたは動作ノード)は、1つまたは複数の機械を含むことができる。1つまたは複数の機械は、コンピューティング・デバイス、汎用コンピュータ、専用コンピュータ、量子コンピューティング・デバイス(例えば、量子コンピュータ)、タブレット・コンピューティング・デバイス、ハンドヘルド・デバイス、サーバ・クラス・コンピューティング・マシンもしくはデータベースまたはその両方、ラップトップ・コンピュータ、ノートブック・コンピュータ、デスクトップ・コンピュータ、携帯電話、スマートフォン、民生用装置もしくは民生用機器またはその両方、工業用デバイスもしくは商用デバイスまたはその両方、デジタル・アシスタント、インターネットが有効化されたマルチメディア電話、または別の種類のデバイス、あるいはその組み合わせのうちの1つまたは複数を含むことができる。
【0040】
図に示されているように、量子プログラム実装システム102は、制御ノード204Aの古典的システムに含まれ得る。制御ノードは、スケジューリング、命令、データ分析、測定分析、量子パラメータの最適化、または同様のもの、あるいはその組み合わせを提供できる古典的リソースであることができる。これらの制御ノードが、ローカルに、または非中心的に、あるいはその両方で、互いに相対的に分散されることが可能であるか、または任意の2つ以上の制御ノードが、通信可能に互いに接続されることが可能であるか、あるいはその両方が可能である。1つまたは複数の他の実施形態では、1つまたは複数の制御ノードが量子リソースであることができるか、または1つまたは複数の量子コンポーネントを含むことができるか、あるいはその両方が可能であるということが、理解されるであろう。
【0041】
示された古典的制御ノード204Aは、中央処理装置206Aを含むことができるが、1つまたは複数の他の実施形態では、CPU206Aおよびプロセッサ106は、同じであることができるか、またはハードウェアもしくはソフトウェアまたはその両方の1つまたは複数の態様を共有することができるか、あるいはその両方であることができる。
図2での拡大された非限定的システム100Eは、CPU206Bを含んでいる別の制御ノード204Bを含むこともできる。任意の適切な数の制御ノードが含まれ得るということが、理解されるであろう。1つまたは複数の実施形態では、量子プログラム実装システム102は、制御ノード(図示されていない)のいずれからも離れて配置され得る。1つまたは複数の実施形態では、2つ以上の制御ノードが、量子プログラム実装システム102を含むことができる。そのような場合、2つ以上の量子プログラム実装システム102が、1つまたは複数の通信経路またはデータ・パラメータあるいはその両方をコンパイルするように、一緒に機能することができるか、または量子プログラム実装システム102のうちの1つのみが、1つまたは複数のそのような機能を容易にすることができるか、あるいはその両方であることができる。
【0042】
動作ノードは、パルス生成、波形生成、量子測定、または1つまたは複数の量子ビットに関連するか、もしくは1つまたは複数の量子ビットを含むか、またはその両方である他の機能、あるいはその組み合わせなどの、1つまたは複数の量子タスクを実行することができる、量子リソースであることができる。これらの動作ノードが、ローカルに、または非中心的に、あるいはその両方で、互いに相対的に分散されることが可能であるか、または任意の2つ以上の動作ノードが、通信可能に互いに接続されることが可能であるか、あるいはその両方が可能である。1つまたは複数の他の実施形態では、1つまたは複数の動作ノードが量子リソースであることができるか、または1つまたは複数の量子コンポーネントを含むことができるか、あるいはその両方が可能であるということが、理解されるであろう。追加または代替あるいはその両方として、1つまたは複数の動作ノードが、上でリストされた制御ノードの機能のうちの1つまたは複数を提供することができるか、または1つまたは複数の制御ノードが、上でリストされた動作ノードの機能のうちの1つまたは複数を提供することができるか、あるいはその両方が可能であるということが、理解されるであろう。
【0043】
追加または代替あるいはその両方として、動作ノードおよび制御ノード以外に、他のノードの種類が可能であることができる。例えば、物理的分散または接続性あるいはその両方に役立つように、通過ノードが採用されることが可能であり、量子システム間にインターフェイス・ノードが採用されることが可能であり、または例えば、単一誤り保護量子ビット(single error protected qubit)のような不完全な量子ビットの集合を管理するために、量子ビット・グループ・コントローラが採用されることが可能であり、あるいはその組み合わせが可能である。
【0044】
図2に示された拡大された非限定的システム100E、および(図示されていないが)
図1の非限定的システム100も、互いに相対的にローカルに分散された3つの動作ノード220A、220B、および220Cを含んでいる量子システム101を含むことができる。これらの動作ノード220A、220B、および220Cの各々は、拡張器(EX:expander)、波形再生機(WP:waveform player)、デジタル/アナログ・コンバータ(DAC:digital to analog converter)デバイス、アナログ/デジタル・コンバータ(ADC:analog to digital converter)デバイス、またはカーネル/選別器(KD:kernel/discriminator)、あるいはその組み合わせなどの、1つまたは複数の動作ノードのコンポーネントを含むことができる。1つまたは複数の実施形態では、1つまたは複数の動作ノードのコンポーネントの1つまたは複数の機能が、動作ノードのコンポーネントのうちの別の1つまたは複数によって実行され得る。1つまたは複数の実施形態では、動作ノードのコンポーネントのうちの1つまたは複数が結合されるか、または省略されるか、あるいはその両方であることができる。
【0045】
これらの動作ノード220A、220B、および220Cの各々は、少なくとも1つの量子ビット226A、226B、および226Cにそれぞれ作用することができる。さらに、3つの量子ビット(量子ビット(0)226A、量子ビット(1)226B、および量子ビット(2)226C)のみが示されているが、例えば、7個以上の量子ビット、10個以上の量子ビット、または100個以上の量子ビット、あるいはその組み合わせなどの、追加の量子ビットに作用するために、追加の動作ノードが含まれ得るということが理解されるであろう。
【0046】
ここで、動作ノード220A、220B、または220Cのいずれにも適用可能であるが、動作ノード220Aを参照して、動作ノード220Aの1つまたは複数の態様が詳細に説明される。動作ノード220Aは、拡張器(EX)221A、波形再生機(WP)222A、デジタル/アナログ・コンバータ(DAC)デバイス223A、アナログ/デジタル・コンバータ(ADC)デバイス224A、およびカーネル/選別器(KD)225Aを含むことができ、量子ビット(0)226Aに作用することができる。拡張器221Aは、量子ゲートに関する凝縮された情報(例えば、例示的な情報またはexinfo232A)を1つまたは複数の量子ゲートのシーケンスに変換することができる。シーケンスの少なくとも一部は、非限定的システム100/100Eの外部または内部あるいはその両方にあるデータベースでコンパイルされ得る。波形再生機222Aは、2つ以上の量子ゲートのシーケンスを、DACデバイス223Aによって利用するためのコード・ポイントに変換することができる。例えば、波形再生機222Aは、1つまたは複数の量子ゲートを表すコード・ポイントのライブラリを参照することができ、このライブラリを使用して、コード・ポイントのシーケンスを構築する。コード・ポイントのライブラリは、拡大された非限定的システム100Eの外部または内部あるいはその両方にあるデータベースに格納され得る。DACデバイス223Aは、コード・ポイントのシーケンスを、アナログ制御信号またはアナログ測定信号あるいはその両方などの、1つまたは複数のアナログ信号に変換することができる。量子ビット(0)226Aなどの量子ビットの状態の測定の時間ウィンドウの間に、ADCデバイス224Aは、アナログ信号のうちの1つまたは複数をサンプリングして、電圧を表す1つまたは複数のデジタル・コードを生成することができる。
【0047】
カーネル/選別器225Aは、測定の1つまたは複数のサンプルを、量子ビットの状態を表す2進数に変換することができる。1つまたは複数の他の実施形態では、カーネル/選別器225Aは、状態(例えば、00、01、10、および11として定義された4つの異なる量子状態)のうちの1つまたは複数を表すために、2進列が採用されるか、または渡されるか、あるいはその両方が可能であるなどの場合に、測定の1つまたは複数のサンプルを1つまたは複数の2進状態に変換することができる。カーネル/選別器225Aは、量子ビット(0)226Aのqv(0)234Aなどの量子ビット値を出力することができる。さらに、
図2に特に示されていないが、1つまたは複数の実施形態では、カーネル/選別器から出力された量子ビット測定結果は、各拡張器に供給されるか、異なる拡張器に供給されるか、または各システム内の2つ以上のノードにブロードキャストされるか、あるいはその組み合わせであることができる。
【0048】
現在のシステムでは、制御ノードと動作ノードの間の(例えば、制御ノード204Aから動作ノード220Aへの)例示的な情報(例えば、exinfo232A)の転送、または動作ノードと制御ノードの間の(例えば、動作ノード220Aから制御ノード204Aへの)結果として得られた測定された量子ビット値(例えば、qv(0)234A)の転送の遅延は、標準的であることができる。これは特に、複数の量子ビットの制御を実施するために、例示的な情報および量子ビット値などの多くのデータの側面が受け渡されている場合に当てはまる。ノード(例えば、制御ノードまたは動作ノードあるいはその両方)間の(例えば、ソフトウェアまたはハードウェアあるいはその両方を介する)ボトルネック、隘路、またはデータ収集点、あるいはその組み合わせが、データ転送の速度を制限することがある。すなわち、従来の複数のCPUの通信および管理技術は、標準的な量子ビットのデコヒーレンスを考慮することができるスケールで、データを転送すること、分析すること、または決定すること、あるいはその組み合わせが、できない可能性がある。多数の量子ビットに作用する量子プログラムにスケーリングするときに、この問題が悪化することがある。
【0049】
1つまたは複数の遅延を考慮すると、多量子ビット・ゲートを実装するために複数の動作ノード間の調整が利用されるなどの場合に、複数の量子ビットに対して動作する1つまたは複数の量子タスクに関するデータの転送が、少なくとも1つの動作ノードで遅延する可能性がある。これらの1つまたは複数の遅延は、次に、多量子ビット・ゲートを実装する準備ができているが、代わりに、(例えば、1つまたは複数の下流の実行時間に影響を与える)そのようなすべての動作ノードの準備もできるまで遅延している動作ノードで、さらなる遅延を引き起こすことがある。これは、量子プログラムの実行中に量子システムに存在するデコヒーレンスまたは他のエラー(例えば、量子ノイズ)あるいはその両方をさらに悪化させることがある。さらに、量子プログラムを実行するために複数の量子タスクが順に実行され得るということが理解されるべきである。これは、各量子システム、古典的システム、またはハイブリッド・システム、あるいはその組み合わせに導入される前述の遅延、デコヒーレンス、またはエラー、あるいはその組み合わせをさらに悪化させることがある。
【0050】
これらの問題のうちの1つまたは複数を考慮するために、本明細書における1つまたは複数の実施形態は(例えば、量子プログラム実装システム102またはコンパイル・コンポーネント112あるいはその両方によって)、非限定的システム100/100Eなどのシステムのさまざまな制御ノードおよび動作ノード間のデータ転送のスケジューリングのために、本明細書ではコンパイルされた通信ファブリック140と総称される通信経路242の通信インフラストラクチャをコンパイルすることができる。すなわち、コンパイル・コンポーネント112は、非限定的システム100/100E全体を通じたデータの転送のために、1つまたは複数の通信経路に対してデータ転送を識別することおよびスケジュールすることを含めて、1つまたは複数の通信経路をコンパイルすることができる。コンパイルされた通信ファブリック140によって、コンパイル・コンポーネント112は、1つまたは複数の通信経路242を介して、制御ノード204Aの互いの通信、ならびに動作ノード220A、220B、および220Cのうちの1つまたは複数との制御ノード104Aおよび104Bの通信を容易にすることができる。このコンパイル(例えば、識別またはスケジューリングあるいはその両方)が、下で詳細に説明される。
【0051】
通信ファブリック140は、1つまたは複数の事例では、1つまたは複数の特定の量子プログラムの実行のために具体的にコンパイルされ得る。1つまたは複数の他の量子プログラムに関連して、同じ通信ファブリック140または異なる通信ファブリックあるいはその両方がコンパイルされ得る。
【0052】
最初に、通常、コンパイル・コンポーネント112は、非限定的システム100/100Eが各量子ジョブ要求(例えば、量子ジョブ要求109)を受信した後などの、量子プログラムの実行前に、1つまたは複数の通信経路を識別することができる。追加または代替あるいはその両方として、各量子プログラムの実行の初期化後、ただし1つまたは複数の通信経路242を採用する(量子プログラムの)特定の量子タスクの実行前に、コンパイル・コンポーネント112によって、1つまたは複数の通信経路242またはそのセグメントあるいはその両方が識別され得る。
【0053】
コンパイル・コンポーネント112は、コンパイル・コンポーネント112に通信可能に結合された1つまたは複数の他のプログラム、データベース、アプリケーション、または同様のもの、あるいはその組み合わせを介して識別されたか、またはそれらによって利用されたか、あるいはその両方である1つまたは複数のそのような経路を検索することなどによって、1つまたは複数の通信経路を識別することができる。1つまたは複数の実施形態では、コンパイル・コンポーネント112は、非限定的システム100/100Eのさまざまな制御ノードまたは動作ノードあるいはその両方の間で、pingなどの1つまたは複数の信号をトリガーすることができる。受信された1つまたは複数の信号、ping、メタデータ、または他の結果、あるいはその組み合わせに基づいて、コンパイル・コンポーネント112は、通信経路または経路遅延あるいはその両方を識別することができる。例えば、最悪の場合の伝搬遅延は、ノード間の動作を計画するときに、コンパイル・コンポーネント112にとって有用であることがある。同様に、コンパイル・コンポーネント112は、さまざまな制御ノードまたは動作ノードあるいはその両方の間のデータ集中点またはデータ密集点あるいはその両方を最小限に抑えるか、または回避するか、あるいはその両方である通信経路を識別することができる。例えば、1つの実施形態では、コンパイル・コンポーネント112は、較正プログラムを使用して、バックエンド構造および最悪の場合の伝搬待ち時間を記録することができ、この記録された情報は、非限定的システム100によって、ノード間の1つまたは複数のゲート動作を計画するために使用され得る。
【0054】
図2をさらに参照すると、通信ファブリック140の複数の通信経路242が、1つまたは複数の制御ノード204Aおよび204Bならびに1つまたは複数の動作ノード220A、220B、および220Cを概略的に接続していることが分かる。特定の通信経路242Aが制御ノード204Aから動作ノード220Aへの通信に関して示されており、異なる通信経路242Bが動作ノード220Aから制御ノード204Aへの通信のためにコンパイルされているが、1つまたは複数の通信経路242が任意のノード間の通信に使用され得るということが理解されるであろう。すなわち、コンパイル・コンポーネント112は、ノードの1つまたは複数の対の間の1つまたは複数の経路を識別することができる(例えば、制御ノードもしくは動作ノードまたはその両方、または少なくとも通信経路242のセグメント、あるいはその組み合わせが、3つ以上のノード(例えば、制御ノードもしくは動作ノードまたはその両方)間の転送に利用され得る)。したがって、通信経路242の使用は、量子プログラムの実行中に動的であることができる。しかし、そのような動的使用は、量子プログラムの実行前に、コンパイル・コンポーネント112によってスケジュールされたままであることができる。
【0055】
さらに、図に示されているように、各制御ノードと各動作ノードの間の反対方向(例えば、相対的送信および相対的受信)の各々で、データの転送のための別々の通信経路242が識別され得る。これによって、同時に共通の通信経路に沿ったデータ転送の重複の回避を容易にすることができるか、またはノードの対の間の各受信方向および送信方向の両方での同時データ転送を可能にすることができるか、あるいはその両方が可能である。コンパイル・コンポーネント112によって容易にされるこのコンパイル戦略を考慮すると、量子プログラムの実行中の1つまたは複数の瞬間に、データ転送の密集が最小限に抑えられるか、または回避されるか、あるいはその両方が可能である。
【0056】
さらに、
図2に示されている特定の通信経路242および通信経路242の数が、単に通信ファブリック140の例示的な図であるということが、理解されるであろう。適切な場合、より多いか、またはより少ない通信経路242が識別され得る。
【0057】
ここで
図3を参照すると、1つまたは複数の実施形態では、コンパイル・コンポーネント112が、1つまたは複数の通信経路の1つまたは複数の経路の側面を識別することができるか、または生成することができるか、あるいはその両方が可能であるということも、理解されるであろう。これらの経路の側面は、1つまたは複数の端点352、1つまたは複数のファブリック・ポート・インターフェイス354、または1つまたは複数のルーティング・ブロック356、あるいはその組み合わせを含むことができる。通常、コンパイル・コンポーネント112は、非限定的システム100/100Eが各量子ジョブ要求(例えば、量子ジョブ要求109)を受信した後などの、量子プログラムの実行前に、1つまたは複数の経路の側面を識別することができる。追加または代替あるいはその両方として、各量子プログラムの実行の初期化後、ただし1つまたは複数の経路の側面または経路の側面の一部あるいはその両方を採用する(量子プログラムの)特定の量子タスクの実行前に、コンパイル・コンポーネント112によって、1つまたは複数の経路の側面または経路の側面の一部あるいはその両方が識別され得る。
【0058】
コンパイル・コンポーネント112は、少なくとも経路の側面の一部として、サーバ、ルータ、ケーブル、または物理的な通信の結び付き、あるいはその組み合わせなどを含む任意の適切なハードウェアなどの、1つまたは複数の物理的側面を識別することができる。例えば、量子アプリケーションに関して、伝搬待ち時間を最小限に抑えるために、少なくとも経路の側面の一部が、軽量のプロトコルを有するか、またはプロトコルが存在しないか、あるいはその両方である特注設計のインターフェイスとして実装され得る。追加または代替あるいはその両方として、コンパイル・コンポーネント112は、少なくとも経路の側面の一部として、1つまたは複数のソフトウェアの側面を識別することができるか、または1つまたは複数のソフトウェアの側面を生成することができるか、あるいはその両方が可能である。1つまたは複数の実施形態では、ソフトウェアの側面は、クラウド・ネットワークを含むか、またはクラウド・ネットワークの一部であることができる。
【0059】
したがって、コンパイル・コンポーネント112によってコンパイルされ、非限定的システム100/100Eによって提供された通信ファブリック140(例えば、1つまたは複数のコンパイルされた通信命令を含んでいる)が、ソフトウェア、ハードウェア、またはハードウェアとソフトウェアの組み合わせ、あるいはその組み合わせによって実現され得るということが理解されるであろう。
【0060】
さまざまな経路の側面を参照すると、1つまたは複数の端点352が、
図2に示された制御ノードまたは動作ノードあるいはその両方などの、各制御ノードまたは動作ノードあるいはその両方の側面に(ソフトウェア、ハードウェア、またはハードウェアとソフトウェアの組み合わせ、あるいはその組み合わせのいずれであるかにかかわらず)接続されるか、またはそれらの側面であるか、あるいはその両方であることができる。例えば、各端点352は、制御ノードのCPUへ、あるいは動作ノードの拡張器もしくは各量子プロセッサまたはその両方へなど、各ノードに通信可能に接続され得る。データ転送を登録すること、受信すること、または出力すること、あるいはその組み合わせのために、端点352が識別されること、または生成されること、あるいはその両方を実行されることが可能である。
【0061】
1つまたは複数の端点352は、それぞれ、少なくとも1つのファブリック・ポート・インターフェイス(FPI:fabric port interface)354に接続され得る。通信ファブリック140の1つまたは複数のFPI354は、通信ファブリック140の1つまたは複数の通信経路242に含まれているハードウェアまたはソフトウェアあるいはその両方のための、端点352とのインターフェイス接続として機能することができる。1つまたは複数の通信経路とインターフェイスをとるため、またはデータ転送を駆動するため、あるいはその両方のために、FPI354が識別されること、または生成されること、あるいはその両方を実行されることが可能である。例えば、FPIは、ソフトウェアの制御下で読み込まれたか、または転送されたか、あるいはその両方であるデータを保持するか、送信するか、または受信するか、あるいはその組み合わせを実行するために使用される、レジスタのブロックであることができる。別の例では、FPIは、ルーティング情報などと共に転送パケットにカプセル化されたデータを形成すること、注入すること、受信すること、または抽出すること、あるいはその組み合わせを実行することができる、より複雑なハードウェア・コントローラであることができる。
【0062】
FPI354は、少なくとも1つの送信データ・ブロック355および少なくとも1つの受信データ・ブロック358を含むことができる。送信データ・ブロック355および各受信データ・ブロック358は、比喩的な(例えば、ソフトウェアによって生成された)ブロックまたは文字どおりの(例えば、コンパイル・コンポーネント112によって識別された)ハードウェアあるいはその両方であることができる。1つの実施形態では、図に示されているように、各送信データ・ブロック355および各受信データ・ブロック358は、1つまたは複数の送信先ブロック360を含むことができる。送信先ブロック360は、比喩的な(例えば、ソフトウェアによって生成された)ブロックまたは文字どおりの(例えば、コンパイル・コンポーネント112によって識別された)ハードウェアあるいはその両方であることができる。送信先ブロック360は、連結されて、隣接するインデックス可能な配列を形成することができる。
【0063】
1つの実施形態では、各送信先ブロック360は、特定のFPI354へのデータの転送に専用であることができる。したがって、送信データ・ブロック355および受信データ・ブロック358に含まれている送信先ブロック360の数が、
図3に示されている数と異なることができるということが理解されるであろう。すなわち、混雑を減らした例示の目的で、
図3の送信データ・ブロック355および受信データ・ブロック358の各々には2つの送信先ブロック360のみが示されている。しかし、1つまたは複数の実施形態では、FPIは、送信先ブロックのためのレジスタのバンクを含むことができる。すなわち、データ・ブロック355および358は、それぞれ、レジスタの一部またはセクションであることができ、データ・ブロック355および358の各々は、各通信ファブリック140の複数のFPI354の数に等しい複数の送信先ブロック360を含んでいる。
【0064】
各送信先ブロック360は、1つまたは複数のデータ単位362を含むことができる。各データ単位362は、1つまたは複数の隣接するビットを包含するか、または含むか、あるいはその両方であることができる。データ単位362は、比喩的な(例えば、ソフトウェアによって生成された)ユニットまたは文字どおりの(例えば、コンパイル・コンポーネント112によって識別された)ハードウェアあるいはその両方であることができる。1つまたは複数の実施形態では、送信先ブロック360に含まれ得る隣接するビットの量は、量子プログラムが実行しているときの1クロック・サイクルなどの間に別のFPI354に送信されること、または別のFPI354から受信されること、あるいはその両方が可能なデータ量に等しくなることができる。
【0065】
本明細書において使用されるとき、「データ量」は、「データ単位の数」とは別の概念である。すなわち、単一のデータ単位は、第1のデータ量を含むことができ、複数のデータ単位は、より大きい第2のデータ量を一緒に含むことができる。例えば、「データ単位」は、通信ファブリック140がどのように実装されるかに応じて、ビット、ニブル、またはバイトであることができる。
【0066】
図3に示されているように、通信ファブリック140の通信経路242の1つまたは複数のセグメントは、一般に「クラウド」として表され得る。1つまたは複数の通信経路242が少なくとも部分的にワイヤレスである(例えば、LANまたはWANあるいはその両方などのネットワークを通って広がる)ことができるということが理解されるであろう。すなわち、少なくとも1つまたは複数の通信経路242のセグメントは、非有形であることができる。
【0067】
端点352およびFPI354に加えて、1つまたは複数の通信経路242は、
図3の「クラウド」内に配置されたルーティング・ブロック356などの、1つまたは複数のルーティング・ブロック356を含むこともできる。すなわち、各通信経路242などの、1つまたは複数の通信経路242は、1つの端点352から別の端点352に伸びることができる。1つまたは複数の通信経路242は、FPI354および0個以上のルーティング・ブロック356の対を含むことができる。ルーティング・ブロック356は、比喩的な(例えば、ソフトウェアによって生成された)ブロックまたは文字どおりの(例えば、コンパイル・コンポーネント112によって識別された)ハードウェアあるいはその両方であることができる。端点352間のデータ転送を駆動すること、またはルーティングすること、あるいはその両方のために、ルーティング・ブロック356が識別されること、または生成されること、あるいはその両方を実行されることが可能である。
【0068】
1つまたは複数の実施形態では、ルーティング・ブロックは、マルチプレクサによって相互接続されるなどの、入力レジスタおよび出力レジスタのセットを含むことができる。マルチプレクサの制御または選択あるいはその両方は、配列から読み取られたハードウェア制御ワードの配列(例えば、プログラム)によって管理され得る。この配列は、量子ジョブ要求が受信されたときに構成され得る。
【0069】
図に示されているように、通信ファブリック140は、FPI354または端点352あるいはその両方より少ないルーティング・ブロック356を含むことができる。すなわち、単一のルーティング・ブロック356は、量子プログラムの実行中に、任意の1つまたは複数のFPI354のために働くことができる。追加または代替あるいはその両方として、通信経路242は、2つ以上のルーティング・ブロック356を含むことができる。さらに、任意の適切な数のルーティング・ブロック356が、コンパイルされた通信ファブリック140に含まれ得る。代替として、1つまたは複数のルーティング・ブロック356、および1つまたは複数の事例では、すべてのルーティング・ブロック356が、省略され得る。
【0070】
通信ファブリック140に含まれている端点352、ファブリック・ポート・インターフェイス354、またはルーティング・ブロック356、あるいはその組み合わせの数が、さまざまな量子プログラムの実行に適したものになるように、
図3に示されている数より多いか、または少なくなることができるということが、理解されるであろう。
【0071】
さらに、多数または大量あるいはその両方のハードウェアまたはソフトウェアあるいはその両方の側面が非限定的システム100/100Eに含まれている場合、存在する端点352、ファブリック・ポート・インターフェイス354、またはルーティング・ブロック356、あるいはその組み合わせのいずれかの数は、拡張可能であることができる。この拡張性は、制御ノード(例えば、CPU)の増やされた数、動作ノードの増やされた数(例えば、量子プログラムにおいて採用された量子ビットの増やされた数と相互関係がある)、または量子プログラムの実行中の任意の特定の時間間隔の間の、コンパイル・コンポーネント112によってスケジュールされたデータ転送の増やされた数(例えば、増やされた制御ノード、動作ノード、または採用された量子ビット、あるいはその組み合わせのいずれかに起因する)を考慮することができる。このスケジューリングが下で詳細に説明されるということが、理解されるであろう。
【0072】
図1および2を再び簡単に参照すると、コンパイル・コンポーネント112によって通信ファブリック140の1つまたは複数のソフトウェアの側面の識別または生成あるいはその両方を容易にするために、非限定的システム100/100Eに通信可能に結合された、1つまたは複数の制御ノード、動作ノード、量子プログラム実装システム102、または他の古典的システムもしくは量子システムまたはその両方、あるいはその組み合わせに関連して、1つまたは複数のソフトウェア・アプリケーション、プログラム、またはコード、あるいはその組み合わせが、インストールされるか、または他の方法で入力されるか、あるいはその両方であることができる。すなわち、実体は、コンパイル・コンポーネント112によって採用される1つまたは複数のソフトウェア・アプリケーション、プログラム、またはコード、あるいはその組み合わせを提供することによって、通信ファブリック140のコンパイルを容易にすることができる。代替または追加あるいはその両方として、量子プログラム実装システム102またはコンパイル・コンポーネント112あるいはその両方は、コンパイル・コンポーネント112によって採用される1つまたは複数のソフトウェア・アプリケーション、プログラム、またはコード、あるいはその組み合わせの提供を容易にすることができる。
【0073】
追加または代替あるいはその両方として、コンパイル・コンポーネント112によって通信ファブリック140の1つまたは複数のハードウェアの側面の識別または生成あるいはその両方を容易にするために、ルータ、サーバ、ケーブル、ルーティング・ボックス、カスタム・ハードウェア・インターフェイス、または同様のもの、あるいはその組み合わせなどの、1つまたは複数の物理的ハードウェア・コンポーネントが、非限定的システム100/100Eに通信可能に結合された、1つまたは複数の制御ノード、動作ノード、量子プログラム実装システム102、または他の古典的システムもしくは量子システムまたはその両方、あるいはその組み合わせの間に配置されて、提供されるか、またはインストールされるか、あるいはその両方であることができる。すなわち、実体は、コンパイル・コンポーネント112によって採用される1つまたは複数のハードウェア・コンポーネントを提供すること、またはインストールすること、あるいはその両方によって、通信ファブリック140のコンパイルを容易にすることができる。追加または代替あるいはその両方として、量子プログラム実装システム102またはコンパイル・コンポーネント112あるいはその両方は、コンパイル・コンポーネント112によって採用される1つまたは複数のハードウェア・コンポーネントの提供またはインストールあるいはその両方を容易にすることができる。
【0074】
図4および5を参照すると、前述のソフトウェアまたはハードウェアあるいはその両方の経路の側面の接続トポロジーは、さまざまな異なる形態をとることができる。前述したように、コンパイルされた通信ファブリックのための接続トポロジーは、ハードウェアまたはソフトウェアあるいはその両方として実現され得る。例えば、接続トポロジーは、実行される量子プログラム、または制御ノードもしくは動作ノードまたはその両方がアクセスできる(例えば、1つまたは複数の制御ノードおよび1つまたは複数の動作ノードを接続する)ハードウェアの側面もしくはソフトウェアの側面またはその両方、あるいはその組み合わせに依存することができる。1つまたは複数の接続トポロジーが、単一の通信ファブリック内で結び付けられることが可能であり、または異なる通信ファブリックが、異なる接続トポロジーを含むことができ、あるいはその両方が可能である。
【0075】
図4に示されているように、例示的な接続トポロジー400は、共通の結び付き464によって他のノード・ブロック462にそれぞれ接続された複数のノード・ブロック462を含むことができる。結び付き464が、それを通る複数の通信経路を含むことができるということが、理解されるであろう。各ノード・ブロック462(例えば、端点452およびFPI454をそれぞれ含んでいる)は、共通のルーティング・ブロック456にそれぞれ接続された複数のノード460を含むことができる。ノード・ブロック462の各共通のルーティング・ブロック456は、共通の結び付き464のルーティング・ブロックで、共通の結び付き464に接続され得る。共通の結び付き464は、各端点、FPI、およびルーティング・ブロックを含むことができる。
【0076】
代替として、
図5に示されているように、例示的な接続トポロジー500は、1つまたは複数のノードをそれぞれ含んでいる複数のノード・ブロック562を含むことができる。各ノード・ブロック562は、ノード・ブロック562用の各ルーティング・ブロック556を含むことができるか、または各ルーティング・ブロック556に接続され得るか、あるいはその両方であることができる。複数の結び付き564が、接続トポロジー500に含まれ得る。1つまたは複数の結び付き564が、各ルーティング・ブロックなどで、1つまたは複数の他の結び付き564に接続され得る。
図5の500での表現では、各結び付き564が、ノード・ブロック562の対に直接接続され、1つまたは複数の他の結び付き564を介して他のノード・ブロック562に間接的に接続される。
【0077】
それとは異なって、
図5にやはり示されているように、例示的な接続トポロジー580は、結び付きを省略することができる。代わりに、ルーティング・ブロック586をそれぞれ含んでいる複数のノード・ブロック590が含まれ得る。複数のノード・ブロック590がリング状に接続され得る。すなわち、各ルーティング・ブロック586は、2つの隣接するルーティング・ブロック586に直接接続され得る。
【0078】
図2~5を全体的に簡単に参照して、結合されたアーキテクチャの側面(例えば、端点、ファブリック・ポート・インターフェイス、またはルーティング・ブロック、あるいはその組み合わせ)の相互接続された機能が説明される。端点での(例えば、CPU、拡張器、または各量子プロセッサ、あるいはその組み合わせへの入力またはそれらからの出力としての)データ転送(例えば、1つまたは複数のデータ単位)の受信時に、データ転送が登録され得る。コンパイル・コンポーネント112は、登録のタイミングが量子プログラム実行スケジュールに適合すること、または量子プログラムのクロック・サイクルに適合すること、あるいはその両方を検証することができる。量子プログラム実装システム102、実行コンポーネント118、または量子システム101、あるいはその組み合わせは、量子プログラム実行スケジュールに従って、データ転送を、1つの端点から次の送信先の端点まで、適切な方向に(例えば、CPU、拡張器、量子プロセッサ、ファブリック・ポート・インターフェイス、ルーティング・ブロック、または同様のもの、あるいはその組み合わせに)駆動することができる。
【0079】
ここで
図6を参照すると、コンパイル・コンポーネント112によって量子プログラム実行スケジュール600がコンパイルされ得る。すなわち、さらに効率的な通信ファブリック140を提供するために、コンパイル・コンポーネント112は、識別された通信経路に沿って転送されるまだ決定されていないデータの1つまたは複数のデータ・パラメータをコンパイルすることもできる。コンパイルされた1つまたは複数のデータ・パラメータは、(例えば、データ転送ごとの)特定の数のデータ単位、またはノードの対(例えば、制御ノードまたは動作ノードあるいはその両方)の間を移動されるデータの最大サイズ(例えば、データ単位の数に含まれているビットまたは他の単位の合計)、あるいはその組み合わせを含むことができる。データの最大サイズは、量子プログラムの完全な実行の間の、任意の1つの瞬間に、任意の1つクロック・サイクルに、または任意の1つ量子タスクごとに、あるいはその組み合わせに、各通信経路で転送される最大値として決定され得る。コンパイル・コンポーネント112は、量子プログラムの異なる量子タスクまたはクロック・サイクルあるいはその両方に関する1つまたは複数のデータ・パラメータをコンパイルすることができる。
【0080】
実際、1つまたは複数のデータ・パラメータを考慮すると、量子プログラムの実行中にデータ単位の数は変化しないが、データ単位に保持されている(例えば、ビットに含まれている)値のみが、何のデータが転送されるかに応じて変化する。例えば、量子プログラムの実行中に、量子ゲートの実装などに関する制御ノードからの量子ビット測定結果または決定情報あるいはその両方などによって、データ値が決定され得る。
【0081】
コンパイル・コンポーネント112は、まだ決定されていないデータの送信先に関して、(例えば、1つまたは複数のデータ・パラメータを利用して)データ単位の数および最大データ・サイズを含むスケジューリング命令をコンパイルすることもできる。言い換えると、コンパイル・コンポーネント112は、データ単位の数、最大データ・サイズ、またはデータの転送先、あるいはその組み合わせを含む、データ移動に関する1つまたは複数のデータ・パラメータをコンパイルすることができ、したがって、これらのデータ・パラメータは、量子プログラムの実行中にすべて静的であることができ、一方、実行中にデータの内容のみが変化することができる。すなわち、量子プログラムの実行前に、何の情報を渡すか、情報の行き先、およびデータを渡す方法が決定され得るが、量子プログラムが実行されているときに、転送されるデータ(例えば、データ・ビット)の内容(例えば、値)は動的に変化することができる。
【0082】
例えば、量子プログラム602などの量子プログラムは、複数の動作ノードで実行される複数の量子タスクを含むことができる。量子タスクは、量子タスクが実行される特定の順序を有することができる。1つまたは複数の量子タスクは、他の量子タスクより時間がかかることがある。1つまたは複数の量子タスクは、他の量子タスクと並列に実行され得る。1つまたは複数の量子タスクは、1つまたは複数の他の量子タスクが最初に実行されるか、または開始されるか、あるいはその両方が行われるまで、実行され得ない。各動作ノードで実行される量子タスクのこの順序は、非限定的システム100/100Eが各量子ジョブ要求(例えば、量子ジョブ要求109)を受信した後などの、量子プログラム602の実行前に、コンパイル・コンポーネント112によってスケジュールされ得る。追加または代替あるいはその両方として、各量子プログラムの実行の初期化後、ただし1つまたは複数の特定の量子タスクの実行前に、コンパイル・コンポーネント112によって、1つまたは複数の量子タスクがスケジュールされ得る。
【0083】
1つまたは複数の量子タスクのスケジューリングが、コンパイル・コンポーネント112による、1つまたは複数の量子タスクによって採用されるまだ決定されていないデータの(例えば、1つまたは複数の通信経路に沿った)1つまたは複数のデータ・ルートのスケジューリングを含むことができるということが、理解されるであろう。1つまたは複数の量子タスクのスケジューリングは、1つまたは複数のデータ・ルートに沿って転送されるまだ決定されていないデータの1つまたは複数のデータ・パラメータをスケジュールすることを含むこともできる。これらの動作は、一緒に、または同時に、あるいはその両方で、完了することができる。コンパイル・コンポーネント112によって、1つまたは複数のデータ・ルートをスケジュールするために1つまたは複数のデータ・パラメータが利用されることが可能であり、またはこの逆も同様であり、あるいはその両方が可能であるということが、理解されるであろう。
【0084】
図6を参照すると、量子プログラム602に関して、コンパイル・コンポーネント112などのコンパイル・コンポーネントによってコンパイルされ得るスケジュール600の一部の表現が概略的に示されている。各通信ファブリック640は、制御ノード604A、動作ノード620A、および動作ノード620Bを、通信可能に接続することができる。量子プログラム602の実行前などに、複数のクロック・サイクルI~Vの間に、データ・ブロック数、最大データ・サイズ、転送先、および通信経路(具体的に示されていない)がコンパイルされ得る。量子プログラム602が、それぞれ実行されるのに1つまたは複数のクロック・サイクルを必要とする可能性がある複数の量子タスクを含むことができるということ、異なる動作ノードが異なる時間に異なる量子タスクを実行できるということ、または動作ノードが1つまたは複数の量子タスクを一緒に実行できるということ、あるいはその組み合わせが、理解されるであろう。
【0085】
例えば、クロック・サイクルIで、合計で8つのデータ単位662(例えば、
図3のデータ単位362に似ている)の転送のために、通信経路が(例えば、通信ファブリック640を介して)コンパイルされ得る。コンパイル・コンポーネント112などの各コンパイル・コンポーネントによって、通信経路ごとに、データ転送ごとの最大データ・サイズが決定され、コンパイルされ得る。
【0086】
1つの例では、クロック・サイクルIに関連して、制御ノード604Aから通信ファブリック640のルーティング・ブロック(図示されていない)に伸びることができる共通の通信経路(または通信経路のセグメント)に沿った転送のために、データ単位662Aおよび662B(例えば、
図3のデータ単位362に似ている)の最大データ・サイズが決定され得る。1つの例では、ルーティング・ブロック(図示されていない)から動作ノード602Aおよび602Bの各々に伸びることができる別々の通信経路(または通信経路のセグメント)に沿った転送のために、別々の最大データ・サイズが決定され得る。
【0087】
別の例では、クロック・サイクルIIに関連して、別々の通信経路に共通する少なくとも1つのルーティング・ブロックがないなどの、制御ノード604Aから動作ノード602Aおよび602Bの各々に伸びることができる別々の通信経路(または通信経路のセグメント)に沿った転送のために、データ単位662Cおよび662D(例えば、
図3のデータ単位362に似ている)の別々の最大データ・サイズが決定され得る。
【0088】
図6に示されている概略スケジュール600または別のスケジュールあるいはその両方を実現するため、およびしたがって、量子プログラム(例えば、量子プログラム602)の各量子タスクまたはクロック・サイクルあるいはその両方の間に転送されるデータの量ごとに、送信データ・ブロック(例えば、
図3の送信データ・ブロック355に似ている)および受信データ・ブロック(例えば、
図3の受信データ・ブロック358に似ている)を決定するために、各コンパイル・コンポーネント(例えば、コンパイル・コンポーネント112)は、データ転送リストをコンパイルすることができる。データ転送リストは、ファブリック番号(FN)、データ単位(
図3のデータ単位362)の数における転送の長さ(LEN)、各通信ファブリックのFPI送信データ・ブロック配列へのソース識別子(SID)およびソース・オフセット(SOFF)、ならびに各通信ファブリックのFPI受信データ・ブロック配列への送信先識別子(DID)および送信先オフセット(DOFF)の代表的データを含む、送信先ブロック(例えば、
図3の送信先ブロック360)のリストを含むことができる。
【0089】
本明細書において使用されるとき、送信データ・ブロック配列は、各通信ファブリックのすべてのFPIのすべての送信データ・ブロックを含むことができる。同様に、本明細書において使用されるとき、受信データ・ブロック配列は、各通信ファブリックのすべてのFPIのすべての受信データ・ブロックを含むことができる。1つまたは複数の他の実施形態では、送信データ・ブロック配列または受信データ・ブロック配列あるいはその両方は、各通信ファブリックのすべてのFPIのすべての送信データ・ブロックまたは受信データ・ブロックあるいはその両方より少ない送信データ・ブロックまたは受信データ・ブロックあるいはその両方をそれぞれ含むことができる。
【0090】
単一の量子タスクまたはクロック・サイクルあるいはその両方に関して、例示的なデータ転送リストが下の表Iに提供されている。表Iに関しては、各コンパイル・コンポーネント(例えば、コンパイル・コンポーネント112)によってコンパイルされた各通信ファブリックFN-0およびFN-1の対に関連して、4つのデータ転送が含まれている。FNおよびSIDの組み合わせ(例えば、(FN,SID))によって、送信FPIが個別に識別される。送信FPI(1,12)が2回供給されるということには、3つの送信FPIが含まれる。送信FPI(1,12)の場合、LENおよびSOFFが同じであるため、同じデータが2つの異なる送信先にブロードキャストされ得る。基礎になる実装がブロードキャストをサポートすることができる場合、適切な場合に、同じ動作でこれらの2つの転送が実行され得る。FNおよびDIDの組み合わせ(例えば、(FN,DID))によって、受信FPIも個別に識別される。3つの受信FPI(0,1)、(1,0)、および(1,1)が含まれる。受信FPI(1,0)が2回ターゲットにされるが、LENフィールドおよびDOFFフィールドが異なるため、異なるデータが異なる送信先ブロックに読み込まれ得る。
【0091】
【0092】
図1および
図6も、再び簡単に参照すると、1つまたは複数の実施形態では、コンパイル・コンポーネント112は、前述の1つまたは複数の通信命令をコンパイルするため(例えば、通信ファブリックをコンパイルするため)の1つまたは複数の命令を含んでいるコンパイル・アルゴリズム113を採用することができる。コンパイル・アルゴリズム113によって実行されるか、命令されるか、または指示されるか、あるいはその組み合わせが行われる動作は、1つまたは複数の量子タスクに関して、1つまたは複数の通信経路をコンパイルすること、1つまたは複数のデータ・パラメータをコンパイルすること、または1つまたは複数のデータ移動をスケジュールすること、あるいはその組み合わせを含むことができる。コンパイル・アルゴリズム113またはコンパイル・アルゴリズム113を実施するための命令あるいはその両方が、コンパイル・コンポーネント112、メモリ104、もしくは外部メモリ/ストレージ、またはその組み合わせに格納され得るということ、または関連するクラウド・コンピューティング環境、WAN、LAN、もしくは同様のもの、またはその組み合わせを介して、コンパイル・コンポーネント112もしくは非限定的システム100またはその両方によってアクセス可能であるということ、あるいはその両方が、理解されるであろう。
【0093】
図6に、例示的な部分的コンパイル・アルゴリズム113Aが示されている。非限定的システム100/100Eの1つまたは複数の実施形態では、
図1に示されたコンパイル・アルゴリズム113の代わりに、コンパイル・アルゴリズム113Aが採用され得る。すなわち、本明細書において提供された(または提供される)1つまたは複数の説明に関して、コンパイル・アルゴリズム113および113Aは、互いに交換可能であることができる。コンパイル・アルゴリズム113および113Aのうちの1つの説明または開示された態様あるいはその両方は、本明細書では、コンパイル・アルゴリズム113および113Aのうちの他のものに当てはまることができる。
【0094】
コンパイル・アルゴリズム113Aは、1つまたは複数のデータ・パラメータに基づくことができる1つまたは複数の各データ転送リストを使用して経路配列を生成するか、または満たすか、あるいはその両方のための、1つまたは複数の命令を含むことができる。すなわち、1つまたは複数のデータ・パラメータに基づいて、非限定的システム100によって採用されたコンパイルされた通信経路242が少なくとも部分的に識別されることが可能であるか、または特定のデータ転送が、コンパイルされた通信経路242に沿って発生するようにスケジュールされることが可能であるか、あるいはその両方が可能である。上で示されたように、コンパイル・コンポーネント112は、各通信ファブリックを通るどの経路および待ち時間が使用可能であるかを発見するなどのために、非限定的システム100/100Eのさまざまな制御ノードまたは動作ノードあるいはその両方の間で、pingなどの1つまたは複数の信号をトリガーすることができる。受信された1つまたは複数の信号、ping、メタデータ、または他の結果、あるいはその組み合わせに基づいて、コンパイル・コンポーネント112は、さまざまな制御ノードまたは動作ノードあるいはその両方の間のデータ集中点またはデータ密集点あるいはその両方を最小限に抑えるか、または回避するか、あるいはその両方であることができる通信経路を識別することができる。
【0095】
経路配列(例えば、命令シーケンサまたはISEQ配列)を満たすために、コンパイル・アルゴリズム113Aは、各量子プログラム(例えば、量子ジョブ要求109に基づく量子プログラムまたは量子プログラム602あるいはその両方)を含んでいるさまざまな量子タスクに関して、ソース(例えば、制御ノードまたは動作ノードあるいはその両方)と送信先(例えば、制御ノードまたは動作ノードあるいはその両方)の間の通信経路のセグメントを識別するための1つまたは複数の命令を含むことができる。コンパイル・アルゴリズム113Aは、さまざまな量子タスクに含まれている1つまたは複数のデータ転送(例えば、ステップ)のための識別された通信経路に沿った1つまたは複数のルートのスケジューリングをさらに含むことができる。すなわち、利用される通信命令および通信経路が、コンパイル・アルゴリズム(例えば、コンパイル・アルゴリズム113または113A)を採用しているコンパイル・コンポーネント112によってコンパイルされ得る。
【0096】
加えて、経路(ISEQ)配列を満たすために、コンパイル・アルゴリズム113Aは、1つまたは複数のデータ転送をスケジュールするために、1つまたは複数の指標、または1つまたは複数の指標に従うための1つまたは複数の命令、あるいはその両方を含むことができる。すなわち、いかに良くルーティング・リソースが利用されているかを測定するために、スケジュールされた出力を検査するための1つまたは複数の指標が作成され得る。1つの例は、ルーティング・リソースごとに、使用された時間スロットに対する未使用の時間スロットの比率をチェックすること、およびこの比率を理想的な事例と比較することであることができる。ハードウェアの待ち時間がルーティング・リソースの命令シーケンスにおけるすき間を引き起こす可能性があるため、「理想的な」は、ルーティング・リソースの各時間スロットが使用されるということを必ずしも意味しない。むしろ、「理想的な」は、空のシステムを通る最長のルートのグループからの1つの経路をルーティングすることに要する最小時間を計算し、次に、最長のルートのグループ内の経路の数だけ、その時間を加算することとして定義され得る。理想的な事例では、最長の経路のグループによって残されたすき間内で、他のすべての経路(すなわち、より短い経路)がスケジュールされ得るため、他の経路のための余分な時間が必要とされない。実際の事例に対する理想的な事例における未使用のスロットの比率が、各ISEQ配列の圧縮の間に考慮され得る。
【0097】
例えばハードウェアのパケット・スイッチを採用する、異なる実装では、異なる指標が開発され得る。一例として、異なる指標は、ルーティング要素の入力ポートまたは出力ポートの競合が発生するなどの場合にパケットの失速を含む可能性があるデータの実際の転送に対する、パケットの完全なルートの比率の比較を含むことができる。
【0098】
指標に関して上で示されたように、例えば、より短い経路のルーティングによって、伝搬待ち時間からのすき間が埋められることを可能にするために、識別された最長の通信経路が最初にルーティングされ得るということに注意する。1つまたは複数の実施形態では、コンパイル・コンポーネント112によって、または非限定的システム100によって、あるいはその両方によって採用されるクロック・サイクルを決定するために、最長のルーティングされたデータ転送(例えば、ステップ)または最長の通信経路あるいはその両方が採用され得る。すなわち、通信ファブリック140は、単一のクロック・ソースで動作するように、コンパイル・コンポーネント112によってコンパイルされ得る。すなわち、同じ周波数が使用され得るが、異なるクロック位相が許可され得る。これによって、非同期データ転送の交差の待ち時間を防ぐことができる。他の実施形態では、ルーティング・リソース間の非同期転送が実施され、サポートされ得るが、スケジューリングの複雑さを増大させることがある。
【0099】
コンパイル・アルゴリズム113Aの性能にも含まれ得るように、コンパイル・コンポーネント112は、1つまたは複数のデータ・パラメータ、ならびに(例えば、1つまたは複数の通信経路の識別中に)受信された1つまたは複数の前述の信号、メタデータ、または他の結果、あるいはその組み合わせをさらに採用することができる。コンパイル・コンポーネント112は、コンパイル・アルゴリズム113Aを介して提供された1つまたは複数の命令によって、1つまたは複数の通信経路に沿った1方向または両方向での1つまたは複数の異なる量のデータの転送時間をさらに決定することができる。
【0100】
ここで、コンパイル・アルゴリズム113/113Aによって命令され得るか、またはコンパイル・アルゴリズム113/113Aによって命令され得ないか、あるいはその両方である、コンパイル・コンポーネント112の1つまたは複数の追加機能について説明する。例えば、1つまたは複数の事例では、ブロードキャスト機能が通信ファブリック140に追加され得る。本明細書において使用されるとき、ブロードキャストは、複数のノードへ、または複数の端点へなどの複数の送信先へ、同じソース・データのコピーを送信することを含むことができる。すなわち、そのような事例では、各データ転送リストのエントリが同一のFPN、LEN、SID、およびSOFFを含む場合、そのような同一のエントリは、ブロードキャスト動作として一緒にまとめられ得る。
【0101】
1つまたは複数の実施形態では、通信ファブリックの実装がブロードキャスト機能をサポートする場合、各データ転送リストの形式が、1つのソースおよび複数の送信先を表すことをサポートするように拡張され得る。代替として、データ転送リストは、単一のソースから単一の送信先へのルートを表すことができ、データ転送リストの処理は、同じソースを含むが、ブロードキャストされる経路への異なる送信先を含む、ルートの集合および組み合わせを可能にすることができる。通信ファブリックがブロードキャスト機能をサポートしない場合、データ転送リストに現れる1つのソースおよび複数の送信先を含む経路は、それぞれ単一のソースおよび送信先を含む個別の経路のルートに分解され得る。すなわち、ブロードキャスト機能は、量子プログラムの実行中に通信ファブリックを使用しているときに、伝搬待ち時間全体を減らすためなどの、データ転送リストに対する改良または通信ファブリックの実装に対する改良あるいはその両方と見なされ得る。
【0102】
コンパイル・コンポーネント112は、実行コンポーネント116による1つまたは複数のコンパイルされた通信経路を経由する決定された量子回路の実施のために、コンパイルされた通信ファブリック140を実行コンポーネント116に提供することができる。コンパイルされた通信ファブリック140は、前述の1つまたは複数の通信経路、データ・パラメータ、またはデータ移動スケジュール、あるいはその組み合わせを含むことができる。コンパイル・コンポーネント112は、コンパイルされた通信ファブリック140の提供を容易にするために、実行コンポーネント116と、直接的または間接的あるいはその両方で、通信可能に結合され得る。
【0103】
ここで非限定的システム100/100Eの1つまたは複数の追加のコンポーネントを参照すると、実行コンポーネント116は、量子システム101でコンパイルされた通信ファブリック140を使用して、量子ジョブ要求109の初期化、命令、または実施、あるいはその組み合わせを方向付けることができる。
【0104】
量子システム101は、コンパイルされた通信ファブリック140に少なくとも部分的に基づいて、量子ジョブ要求109を実行することができる。すなわち、量子システム101(例えば、1つまたは複数の動作ノード)は、非限定的システム100またはコンパイル・コンポーネント112あるいはその両方によってコンパイルされたとおりの、通信ファブリック140の1つまたは複数のコンパイルされた通信命令に基づいて、量子システム101で量子ビットに対して量子ジョブ要求109を実行することができる。量子システム101は、1つまたは複数の量子測定結果117を量子プログラム実装システム102に、または非限定的システム100の古典的部分に(例えば、1つまたは複数の制御ノードに)、あるいはその両方に提供することができる。完全な量子プログラムの動作後に、非限定的システム100は、量子システム101から1つまたは複数の最終的な量子測定結果117を受信するか、ダウンロードするか、ストリーミングするか、または他の方法で取得するか、あるいはその組み合わせを実行することができる。
【0105】
量子プログラム実装システム102は、出力コンポーネント118を備えることもできる。1つまたは複数の量子ジョブ結果119は、出力コンポーネント118を介して非限定的システム100から出力され得る。1つまたは複数の量子ジョブ結果119は、1つまたは複数の量子測定結果117を含むことができるか、もしくは1つまたは複数の量子測定結果117に少なくとも部分的に基づくことができるか、またはその両方であることができるか、または要求している実体からの量子ジョブ要求109に応答することができるか、あるいはその組み合わせであることができる。
【0106】
ここで
図7および8を参照すると、これらの図は、本明細書に記載された1つまたは複数の実施形態に従って、1つまたは複数の通信命令をコンパイルすることによって、量子ビットのセットに対する量子回路の動作を容易にすることができる例示的な非限定的コンピュータ実装方法700のフロー図を共に示している。各実施形態で採用されている類似する要素またはプロセスあるいはその両方の説明の繰り返しは、簡潔にするために省略されている。
【0107】
最初に
図7の702を参照すると、コンピュータ実装方法700は、プロセッサ(例えば、プロセッサ106、量子プロセッサ、または同様のプロセッサ、あるいはその組み合わせ)に動作可能に結合されたシステムによって(例えば、非限定的システム100、100E、量子プログラム実装システム102、または量子ジョブ・コンポーネント108、あるいはその組み合わせによって)、量子ジョブ要求(例えば、量子ジョブ要求109)を取得することを含むことができる。
【0108】
704で、コンピュータ実装方法700は、システムによって(例えば、非限定的システム100、100E、量子プログラム実装システム102、または決定コンポーネント110、あるいはその組み合わせによって)、量子ジョブ要求(例えば、量子ジョブ要求109)を少なくとも部分的に実装するために、量子プログラム(例えば、量子プログラム602)または量子回路あるいはその両方を決定することを含むことができる。
【0109】
706で、コンピュータ実装方法700は、システムによって(例えば、非限定的システム100、100E、量子プログラム実装システム102、またはコンパイル・コンポーネント112、あるいはその組み合わせによって)、1つまたは複数の通信命令を含んでいるなどの、通信ファブリック(例えば、通信ファブリック140)を決定することを含むことができる。このコンパイルは、コンパイル・アルゴリズム(例えば、コンパイル・アルゴリズム113または113Aあるいはその両方)を使用することを含むことができる。
【0110】
このコンパイルに含まれている特定のプロセスが、継続の三角形(continuation triangle)708で発生するように示されており、
図8でさらに詳細に説明される。1つまたは複数の実施形態では、継続の三角形708によって具現化された(例えば、
図8に示されているような)すべてのプロセスが実行され得る。1つまたは複数の他の実施形態では、継続の三角形708によって具現化されたプロセスのうちの1つまたは複数が回避されるか、または省略されるか、あるいはその両方であることができる。
【0111】
710で、コンピュータ実装方法700は、システムによって(例えば、非限定的システム100、100E、量子プログラム実装システム102、またはコンパイル・コンポーネント112、あるいはその組み合わせによって)、量子プログラム(例えば、量子プログラム602)の(例えば、非限定的システム100、100E、量子プログラム実装システム102、または実行コンポーネント116、あるいはその組み合わせなどへの)実行などのために、通信ファブリック(例えば、通信ファブリック140)を提供することを含むことができる。
【0112】
712で、コンピュータ実装方法700は、システムによって(例えば、非限定的システム100、100E、量子プログラム実装システム102、実行コンポーネント116、量子システム101、量子演算コンポーネント103、または量子プロセッサ105、あるいはその組み合わせによって)、通信ファブリック(例えば、通信ファブリック140)を使用して量子ジョブ要求(例えば、量子ジョブ要求109)を実行することを含むことができる。
【0113】
1つまたは複数の実施形態では、実行は、データ転送(例えば、通信命令、量子測定結果、量子ゲート・パラメータ、または同様のもの、あるいはその組み合わせ)が端点(例えば、端点352)で受信され得るという動作、端点(例えば、端点352)がデータ転送を登録することができるという動作、データ転送が(例えば、量子プログラム実装システム102、実行コンポーネント118、または量子システム101、あるいはその組み合わせによって)適切な方向に駆動され得るという動作、(量子システム101、量子演算コンポーネント103、または量子プロセッサ105、あるいはその組み合わせなどによって)1つまたは複数の物理的レベルのパルスを操作することなどによって、1つまたは複数の量子ゲートが1つまたは複数の量子ビットに対して実施され得るという動作、または1つまたは複数の量子測定結果(例えば、量子測定結果117)が量子システム(例えば、量子システム101、量子演算コンポーネント103、または量子プロセッサ105、あるいはその組み合わせ)によって出力され得るという動作のうちの1つまたは複数を含むことができる。(量子システム101、量子演算コンポーネント103、または量子プロセッサ105、あるいはその組み合わせなどによって)量子回路の1つまたは複数の部分の実行の1つまたは複数の反復に従うなど、これらの動作のうちの1つまたは複数が繰り返され得る。
【0114】
714で、コンピュータ実装方法700は、システムによって(例えば、非限定的システム100、100E、量子プログラム実装システム102、または出力コンポーネント118、あるいはその組み合わせによって)、1つまたは複数の量子ジョブ結果(例えば、量子ジョブ結果119)をユーザ実体などの実体などに出力することを含むことができる。
【0115】
図8を参照すると、この図は、
図7のコンピュータ実装方法700の拡張を示しており、具体的には、
図7の継続の三角形708で発生することができる態様を示している。これらの態様は、1つまたは複数の通信命令のコンパイルを含むなど、通信ファブリック(例えば、通信ファブリック140)のコンパイルの特定のプロセスを含むことができる。1つまたは複数の通信命令は、1つまたは複数の通信経路(例えば、通信経路242)、1つまたは複数のデータ転送スケジュール、または1つまたは複数の量子タスク・スケジュール、あるいはその組み合わせを含むことができる。
【0116】
802で、コンピュータ実装方法700は、システムによって(例えば、非限定的システム100、100E、量子プログラム実装システム102、またはコンパイル・コンポーネント112、あるいはその組み合わせによって)、まだ決定されていないデータの転送のために1つまたは複数の通信経路(例えば、通信経路242)をコンパイルすることを含むことができる。例えば、
図2および3に示されているように、通信ファブリック140は、複数の通信経路242などの、1つまたは複数の通信経路242を含むことができる。802でのコンパイルは、ブロック804、806、808、および810で次に提供される動作などの、1つまたは複数の動作を含むことができる。1つまたは複数の通信経路が識別されるか、生成されるか、またはスケジュールされるか、あるいはその組み合わせであるときに、特定の命令、測定結果、変分量子パラメータ、または同様のもの、あるいはその組み合わせなどの、1つまたは複数の量子プログラムの側面が、まだ計算されていないなど、まだ決定されていないという点において、データは、まだ決定されていないことが可能である。
【0117】
804で、コンピュータ実装方法700は、システムによって(例えば、非限定的システム100、100E、量子プログラム実装システム102、またはコンパイル・コンポーネント112、あるいはその組み合わせによって)、1つまたは複数の端点(例えば、端点352)を識別するか、または生成するか、あるいはその両方を実行することを含むことができる。端点は、ハードウェアまたはソフトウェアあるいはその両方によって実現され得る。
【0118】
806で、コンピュータ実装方法700は、システムによって(例えば、非限定的システム100、100E、量子プログラム実装システム102、またはコンパイル・コンポーネント112、あるいはその組み合わせによって)、1つまたは複数のFPI(例えば、FPI354)を識別するか、または生成するか、あるいはその両方を実行することを含むことができる。FPIは、ハードウェアまたはソフトウェアあるいはその両方によって実現され得る。
【0119】
808で、コンピュータ実装方法700は、システムによって(例えば、非限定的システム100、100E、量子プログラム実装システム102、またはコンパイル・コンポーネント112、あるいはその組み合わせによって)、1つまたは複数のルーティング・ブロック(例えば、ルーティング・ブロック356)を識別するか、または生成するか、あるいはその両方を実行することを含むことができる。ルーティング・ブロックは、ハードウェアまたはソフトウェアあるいはその両方によって実現され得る。
【0120】
810で、コンピュータ実装方法700は、システムによって(例えば、非限定的システム100、100E、量子プログラム実装システム102、またはコンパイル・コンポーネント112、あるいはその組み合わせによって)、1つまたは複数の端点、FPI、またはルーティング・ブロック、あるいはその組み合わせ(例えば、端点352、FPI354、またはルーティング・ブロック356、あるいはその組み合わせ)を採用するか、または接続するか、あるいはその両方を実行するなど、1つまたは複数の通信経路(例えば、通信経路242)を識別するか、または生成するか、あるいはその両方を実行することを含むことができる。通信経路は、ハードウェアまたはソフトウェアあるいはその両方によって実現され得る。
【0121】
812で、コンピュータ実装方法700は、システムによって(例えば、非限定的システム100、100E、量子プログラム実装システム102、またはコンパイル・コンポーネント112、あるいはその組み合わせによって)、まだ決定されていないデータの1つまたは複数のデータ・パラメータ(例えば、データ単位の数、最大データ・サイズ、またはデータ転送先、あるいはその組み合わせを含んでいる、データ移動に関する1つまたは複数のデータ・パラメータ)をコンパイルすることを含むことができる。1つまたは複数の通信経路が識別されるか、生成されるか、またはスケジュールされるか、あるいはその組み合わせであるときに、特定の命令、測定結果、変分量子パラメータ、または同様のもの、あるいはその組み合わせなどの、1つまたは複数の量子プログラムの側面が、まだ計算されていないなど、まだ決定されていないという点において、データは、まだ決定されていないことが可能である。
【0122】
814で、コンピュータ実装方法700は、システムによって(例えば、非限定的システム100、100E、量子プログラム実装システム102、またはコンパイル・コンポーネント112、あるいはその組み合わせによって)、量子プログラムの実行のための1つまたは複数のデータ移動を含んでいる(例えば、関連する量子プログラムの)1つまたは複数の量子タスクをスケジュールすることを含むことができる。814でのスケジューリングは、ブロック816および818で次に提供される動作などの、1つまたは複数の動作を含むことができる。
【0123】
816で、コンピュータ実装方法700は、システムによって(例えば、非限定的システム100、100E、量子プログラム実装システム102、またはコンパイル・コンポーネント112、あるいはその組み合わせによって)、1つまたは複数のデータ転送リスト(例えば、表Iに示されたデータ転送リスト)を生成することを含むことができる。
【0124】
818で、コンピュータ実装方法700は、システムによって(例えば、非限定的システム100、100E、量子プログラム実装システム102、またはコンパイル・コンポーネント112、あるいはその組み合わせによって)、(例えば、1つまたは複数の通信経路または通信経路の1つまたは複数のセグメントあるいはその両方に沿って)まだ決定されていないデータの1つまたは複数のデータ・ルートをスケジュールすることを含むことができる。
【0125】
ここで
図1~8を組み合わせて参照すると、本明細書に記載された1つまたは複数の実施形態は、開示された内容を実用的応用に統合することができる。実際、本明細書において説明されるように、システム、コンピュータ実装方法、またはコンピュータ・プログラム製品、あるいはその組み合わせの形態をとることができる1つまたは複数の実施形態は、1つまたは複数の量子ビットに対する量子回路の改良された動作を容易にすることができるコンピュータ化されたツールと見なされ得る。一般に、本明細書に記載された1つまたは複数の実施形態は、量子回路を採用している量子プログラムの実行によって生じる時間またはエラーあるいはその両方を減らすことができる。これは、特に、採用された量子ビットのデコヒーレンスに対する時間およびエラーの影響を考慮すると、コンピュータの有用な実用的応用であり、したがって、採用された量子ビットの改良された(例えば、改善されたか、または最適化されたか、あるいはその両方の)動作を容易にすることができる。これらの改良は、量子結果の精度の向上または採用された量子ビットの可用性の向上あるいはその両方を含むことができる。全体的に、そのようなコンピュータ化されたツールは、量子コンピューティングの分野における具体的な有形の技術的改善を構成することができる。
【0126】
さらに、本明細書に記載された1つまたは複数の実施形態は、開示された内容に基づいて現実世界のデバイスを制御することができる。例えば、本明細書に記載された1つまたは複数の実施形態は、量子ジョブ要求を入力として受信することができ、量子システムの1つまたは複数の量子ビットに対する、現実世界の物理パルスなどの1つまたは複数の物理的動作として、量子プログラムの実装を制御するための1つまたは複数のコンパイルされた通信命令を含んでいる、コンパイルされた通信ファブリックを第1の出力として生成することができる。本明細書に記載された1つまたは複数の実施形態は、量子システムの現実世界の量子ビットに対する1つまたは複数の物理的動作の実行に応答して、1つまたは複数の量子結果を第2の出力として生成することができる。
【0127】
1つまたは複数の実施形態では、量子プログラム実装システム102およびコンパイル・コンポーネント112を採用している非限定的システム100/100Eは、通信命令をコンパイルすることによって、量子プログラムの実行を改良する(例えば、改善するか、または最適化するか、あるいはその両方を行う)ことができる。したがって、量子プログラムの実行中の高速なデータ転送が容易にされ得る。すなわち、コンパイル・コンポーネント112は、単一の集中点またはグローバル共有メモリあるいはその両方との間でのデータの収集および配布という、複雑であるか、または時間がかかるか、あるいはその両方である量子プログラムの実装の問題を最小限に抑えるか、または防ぐか、あるいはその両方を行うことができる。このようにして、コンパイル・コンポーネント112は、データの重複する転送、または並列な転送、あるいはその両方の場合においても、そのような単一の集中点またはグローバル共有メモリあるいはその両方に伴って生じる可能性がある待ち時間を最小限に抑えるか、または防ぐか、あるいはその両方を行うためのハイブリッド古典/量子システムを容易にすることができる。これは、量子プログラムの実行前に、コンパイル・コンポーネント112が1つまたは複数の通信経路、データ・パラメータ、または量子タスク・スケジュール、あるいはその組み合わせをコンパイルすることに少なくとも部分的に起因する。
【0128】
したがって、説明される主題は、コンパイル・コンポーネント112を採用することによって、ハイブリッド古典/量子非限定的システム100/100Eによるジョブの実行速度における改善を引き起こすことができる。例えば、量子システム101を採用する増大した数の量子プログラムの実行に対する高い需要が存在する場合、非限定的システム100/100E(例えば、量子プログラム実装システム102またはコンパイル・コンポーネント112あるいはその両方を含む)の使用が、量子プログラムのスケーリングされた実行を容易にし得るという結果になることができる。すなわち、1つまたは複数の量子ビットに対して量子回路を操作するために1つまたは複数の量子タスクの実行中に生じる時間またはエラーあるいはその両方を減らすことによって、1つまたは複数の量子ビットのデコヒーレンスのより遅い発生が、量子ビットに対して追加の量子プログラムが実行されることを可能にし得る。
【0129】
さらに、動作時間または発生するエラーあるいはその両方における減少が、量子システム101の改良された(例えば、改善されたか、または最適化されたか、あるいはその両方である)機能、または量子システム101上のコンパイルされた通信ファブリック140を介する動作によって提供される改良された(例えば、改善されたか、または最適化されたか、あるいはその両方である)量子結果、あるいはその両方を容易にすることができるということが、理解されるであろう。1つまたは複数の事例では、これらの1つまたは複数の改良は、発生する時間またはエラーあるいはその両方の減少による、そのような実行中の量子ビットのデコヒーレンスのより少ない発生に、少なくとも部分的に起因することができる。これが次に、1つまたは複数の量子ビットを備えている量子システムによる新しい量子ビットの提供における関連する減少につながることができ、その結果、新しい量子ビットの減少した提供に少なくとも部分的に起因して、量子システムの量子プロセッサの処理能力の可用性の向上につながることができる。
【0130】
さらに、例えば、量子結果、量子ゲート命令、または量子パラメータ、あるいはその組み合わせの転送および分析を伴うサイクル間のデータ移動のインターリービングおよびスケジューリングなしで、各ハイブリッド古典/量子システム(例えば、非限定的システム100/100E)の古典的リソースおよび量子リソースの両方の処理速度が、さらに改善され得る。そのため、非限定的システム100/100E(例えば、量子プログラム実装システム102またはコンパイル・コンポーネント112あるいはその両方を含む)は、それによって、コンパイルされた通信ファブリック(例えば、コンパイルされた通信ファブリック140)に従って1つまたは複数の量子タスクを実行する量子処理ユニット(例えば、量子システム101の量子プロセッサ105)に関連する性能の向上、効率の向上、または計算コストの減少、あるいはその組み合わせを促進することができる。
【0131】
要約すると、前述の1つまたは複数の実施形態は、コンピュータ実行可能コンポーネントを格納するメモリと、メモリに格納されたコンピュータ実行可能コンポーネントを実行するプロセッサとを備えるシステムを提供することができ、コンピュータ実行可能コンポーネントは、1つまたは複数のコンパイルされた通信経路に沿って、まだ決定されていないデータの転送ための2つ以上のノード間の1つまたは複数の通信経路をコンパイルする、コンパイル・コンポーネントを含む。
【0132】
このシステムは、(a)コンパイル・コンポーネントが、コンパイルされた通信経路に沿って転送されるまだ決定されていないデータの1つまたは複数のデータ・パラメータをさらにコンパイルし、コンパイルされた1つまたは複数のデータ・パラメータが、データ単位の数、データの最大サイズ、またはその組み合わせを含む、態様、(b)コンパイル・コンポーネントが、1つまたは複数の通信経路をコンパイルするために、データのコンパイルされた1つまたは複数のデータ・パラメータをさらに採用する、態様、(c)コンピュータ実行可能コンポーネントが、2つ以上の量子ビットに対して量子回路の動作を実行するために、決定されたデータを1つまたは複数の通信経路に沿って方向付ける実行コンポーネントをさらに含む、態様、(d)コンピュータ実行可能コンポーネントが、1つまたは複数の量子ゲート動作の複数のノードのうちの2つ以上のノードでの実行を揃えるように、複数のノードのうちの2つ以上で同じ連続的に繰り返す時間間隔を共通に設定し、トリガーする、間隔設定コンポーネントをさらに含む、態様、(e)コンパイル・コンポーネントが、1つまたは複数の通信経路に沿ったデータの送信およびその後の受信の最大予測転送時間をさらに決定し、間隔設定コンポーネントが、最大予測転送時間を、時間間隔の時間の長さとして採用する、態様、または(f)コンパイル・コンポーネントが、通信経路に沿った1つまたは複数の中心的なデータ収集点なしで、1つまたは複数の通信経路をコンパイルする、態様、あるいはその組み合わせのうちの1つまたは複数を備えることができる。
【0133】
要約すると、前述の1つまたは複数の実施形態は、プロセッサに動作可能に結合されたシステムによって、1つまたは複数のコンパイルされた通信経路に沿った、まだ決定されていないデータの転送のために、2つ以上のノード間の1つまたは複数の通信経路をコンパイルすることを含む、コンピュータ実装方法を提供することができる。
【0134】
この方法は、(a)システムによって、コンパイルされた通信経路に沿って転送されるまだ決定されていないデータの1つまたは複数のデータ・パラメータをコンパイルする態様であって、コンパイルされた1つまたは複数のデータ・パラメータが、データ単位の数、データの最大サイズ、またはその組み合わせを含む、態様、(b)システムによって、1つまたは複数の通信経路をコンパイルするために、データのコンパイルされた1つまたは複数のデータ・パラメータを採用する、態様、(c)システムによって、2つ以上の量子ビットに対して量子回路の動作を実行するために、決定されたデータを1つまたは複数の通信経路に沿って方向付ける、態様、(d)システムによって、1つまたは複数の量子ゲート動作の複数のノードのうちの2つ以上のノードでの実行を揃えるように、複数のノードのうちの2つ以上で同じ連続的に繰り返す時間間隔を共通に設定し、トリガーする、態様、(e)システムによって、1つまたは複数の通信経路に沿ったデータの送信およびその後の受信の最大予測転送時間を決定し、システムによって、最大予測転送時間を、時間間隔の時間の長さとして採用する、態様、または(f)システムによって、通信経路に沿った1つまたは複数の中心的なデータ収集点なしで、1つまたは複数の通信経路をコンパイルする、態様、あるいはその組み合わせのうちの1つまたは複数を含むことができる。
【0135】
要約すると、前述の1つまたは複数の実施形態は、2つ以上のノード間のデータ転送の制御を容易にするコンピュータ・プログラム製品を提供することができ、このコンピュータ・プログラム製品は、プログラム命令が具現化されているコンピュータ可読ストレージ媒体を備え、これらのプログラム命令は、プロセッサによって実行可能であり、プロセッサに、1つまたは複数のコンパイルされた通信経路に沿ったまだ決定されていないデータの転送のために、2つ以上のノード間の1つまたは複数の通信経路を、プロセッサによってコンパイルさせる。
【0136】
このコンピュータ・プログラム製品は、(a)プログラム命令が、プロセッサに、コンパイルされた通信経路に沿って転送されるまだ決定されていないデータの1つまたは複数のデータ・パラメータをプロセッサによってコンパイルさせるように、プロセッサによってさらに実行可能であり、コンパイルされた1つまたは複数のデータ・パラメータが、データ単位の数、データの最大サイズ、またはその組み合わせを含む、態様、(b)プログラム命令が、プロセッサに、1つまたは複数の通信経路をコンパイルするために、データのコンパイルされた1つまたは複数のデータ・パラメータをプロセッサによって採用させるように、プロセッサによってさらに実行可能である、態様、(c)プログラム命令が、プロセッサに、2つ以上の量子ビットに対して量子回路の動作を実行するために、決定されたデータを1つまたは複数の通信経路に沿ってプロセッサによって方向付けさせるように、プロセッサによってさらに実行可能である、態様、(d)プログラム命令が、プロセッサに、1つまたは複数の量子ゲート動作の複数のノードのうちの2つ以上のノードでの実行を揃えるように、複数のノードのうちの2つ以上で同じ連続的に繰り返す時間間隔をプロセッサによって共通に設定させ、トリガーさせるように、プロセッサによってさらに実行可能である、態様、または(e)プログラム命令が、プロセッサに、1つまたは複数の通信経路に沿ったデータの送信およびその後の受信の最大予測転送時間をプロセッサによって決定させ、最大予測転送時間を、時間間隔の時間の長さとしてプロセッサによって採用させるように、プロセッサによってさらに実行可能である、態様、あるいはその組み合わせのうちの1つまたは複数を備えることができる。
【0137】
そのようなシステム、コンピュータ・プログラム製品、または方法、あるいはその組み合わせの利点は、量子ジョブの速度における改善または量子ジョブの実行の改善あるいはその両方であることができ、これらの改善は、そのような量子ジョブの間に実装される1つまたは複数の関連する量子回路の動作の時間における減少、または発生するエラーにおける減少と直接相関性があることができる。すなわち、動作時間における減少または発生するエラーにおける減少あるいはその両方は、関連する量子システムの改良された(例えば、改善されたか、または最適化されたか、あるいはその両方である)機能、または関連する量子システム上の動作によって提供される改良された(例えば、改善されたか、または最適化されたか、あるいはその両方である)量子結果、あるいはその両方を容易にすることができる。1つまたは複数の事例では、これらの改良は、発生する時間の減少またはエラーの減少あるいはその両方による、そのような動作中の量子ビットのデコヒーレンスのより少ない発生に、少なくとも部分的に起因することができる。
【0138】
追加または代替あるいはその両方として、そのようなシステム、コンピュータ・プログラム製品、または方法、あるいはその組み合わせの利点は、実行される複数の量子演算を含んでいる量子プログラムの実行中に、隘路もしくは中心的なデータ収集点またはその両方を減らす能力、または回避する能力、あるいはその両方であることができる。すなわち、データが複数のノード間で転送されて、動作命令、測定、または結果、あるいはその組み合わせの1つまたは複数の反復、およびその後の動作命令が実行される場合、複数の量子演算の実行が改良され得る(例えば、改善されるか、または最適化されるか、あるいはその両方が行われ得る)。例えば、隘路または中心的なデータ収集点あるいはその両方がないか、または減らされるか、あるいはその両方によって、データの1つまたは複数の並列な転送がより素早く実行され得る。
【0139】
追加または代替あるいはその両方として、そのようなシステム、コンピュータ・プログラム製品、または方法、あるいはその組み合わせの利点は、データのより高速な転送によるだけでなく、そのような量子演算のより高速で同期された実行によっても容易にされる、そのような量子演算の改良された(例えば、改善されたか、または最適化されたか、あるいはその両方である)性能であることができる。この同期は、2つ以上の量子演算を含んでいる量子プログラムの実行中に、1つまたは複数のコンパイルされた通信経路に沿った、データを含むか、または含まないタイミング命令の転送なしで、容易にされ得る。
【0140】
ここで
図9を参照すると、非限定的システムの別の実施形態が900に示されている。適切な場合、
図1の非限定的システム100の類似する要素を参照するために、類似する番号が利用される。
図1の非限定的システム100の実施形態で採用されている類似する要素またはプロセスあるいはその両方の説明の繰り返しは、簡潔にするために省略されている。
【0141】
図9を(および
図10~13も)参照すると、本明細書に記載された1つまたは複数の実施形態は、1つまたは複数の量子ビットに対する量子回路の動作を改良するために普遍的な時間間隔を実装することを容易にすることができる1つまたは複数のシステム、コンピュータ実装方法、装置、またはコンピュータ・プログラム製品、あるいはその組み合わせを含むことができる。例えば、
図9は、1つまたは複数の量子ビットに対する量子回路の動作を改良するために普遍的な時間間隔を実装することを容易にすることができる例示的な非限定的システム900のブロック図を示している。
【0142】
以下の説明が、単一の量子ジョブ要求からの単一の量子プログラムの動作のことを指しているということが、理解されるであろう。しかし、本明細書に記載されたプロセスのうちの1つまたは複数が拡張可能であることができるということも理解されるであろう。例えば、以下で理解されるであろうように、量子プログラム実装システム102は、1つまたは複数の間隔境界942を実装すること、または1つまたは複数の量子プログラムを実行すること、あるいはその両方を行うことができ、これらの各々が下で詳細に説明される。これらのさまざまなレベルのスケーリングは、量子プログラムを実行するために採用されている1つまたは複数の量子ビットの相関性がある減らされたデコヒーレンスまたはデコヒーレンス時間あるいはその両方に少なくとも部分的に起因して、量子プログラムのより高速、より効率的、またはよりエラーが生じにくい、あるいはその組み合わせである実行を可能にすることができる。本明細書において使用されるとき、間隔境界とは、2つ以上のノード(例えば、制御ノードまたは動作ノードあるいはその両方)で実装された連続的に繰り返す普遍的な時間間隔のことを指す。
【0143】
1つまたは複数の実施形態では、非限定的システム900は、ハイブリッド・システムであることができ、したがって、量子プログラム実装システム902などの1つまたは複数の古典的システム、および量子システム901などの1つまたは複数の量子システムを含むことができる。1つまたは複数の他の実施形態では、量子システム901は、非限定的システム900から分離することができるが、非限定的システム900と組み合わせて機能することができる。1つまたは複数の実施形態では、量子システム901は、量子演算コンポーネント903および量子プロセッサ905などの、1つまたは複数の量子コンポーネントを備えることができる。量子システム101に関して上で提供された説明は、量子システム901にも当てはまることができる。同様に、量子演算コンポーネント103および量子プロセッサ105に関して上で提供された説明は、それぞれ、量子演算コンポーネント903および量子プロセッサ905にも当てはまることができる。
【0144】
非限定的システム900の古典的部分を参照すると、量子プログラム実装システム102の一般的な態様に関して上で提供された説明は、量子プログラム実装システム902にも当てはまることができる。1つまたは複数の実施形態では、量子プログラム実装システム902は、プロセッサ906またはプロセッサ906に動作可能に接続されたコンピュータ可読メモリ904あるいはその両方を備えることができる。プロセッサ106およびコンピュータ可読メモリ104に関して上で提供された説明は、それぞれ、プロセッサ906およびコンピュータ可読メモリ904にも当てはまることができる。本明細書に記載されている量子プログラム実装システム902またはそのコンポーネントあるいはその両方は、非限定的システム900、量子プログラム実装システム902、またはそれらの任意のコンポーネント、もしくはそれらに結合された任意のコンポーネント、またはその両方、あるいはその組み合わせの機能を実行するために、通信可能に、電気的に、動作可能に、光学的に、または他の方法で、あるいはその組み合わせで、バス924を介して互いに結合され得る。
【0145】
通常、量子プログラム実装システム902は、普遍的な間隔境界の実装によって、2つ以上の量子ビットに対する量子プログラムの実行中に同期を容易にすることができる。通常、量子プログラム実装システム902は、量子ジョブ要求を実行することを容易にすることもできる。すなわち、実行コンポーネントは、普遍的な間隔境界に従って、2つ以上の量子ビットに対する量子回路に関連して、量子タスクのデータ転送および動作を方向付けることができる。出力コンポーネントは、量子ジョブ要求に応答して、1つまたは複数の量子ジョブ結果を出力することができる。
【0146】
ここで量子プログラム実装システム902をさらに詳細に参照すると、1つまたは複数の実施形態では、量子プログラム実装システム902は、量子ジョブ・コンポーネント908、決定コンポーネント910、間隔境界実装コンポーネント914、実行コンポーネント916、または出力コンポーネント918、あるいはその組み合わせを備えることができる。
【0147】
量子ジョブ・コンポーネント908は、要求している実体から、量子ジョブ要求909を受信するか、ダウンロードするか、ストリーミングするか、または他の方法で取得するか、あるいはその組み合わせなどで、取得することができる。非限定的システム900は、量子プログラム実装システム902および量子システム901を使用して、量子ジョブ要求909において実装されるよう要求された1つまたは複数の量子プログラムを実行することができる。1つまたは複数の事例では、量子ジョブ要求909は、採用する1つまたは複数の特定の量子回路に関する1つまたは複数の命令を含むことができる。
【0148】
要求された1つまたは複数の量子プログラムに関連して、決定コンポーネント910は、1つまたは複数の量子プログラムを実装するために、1つまたは複数の量子回路を決定することができる。この決定は、量子プログラム実装システム902または非限定的システム900あるいはその両方の内部または外部あるいはその両方にある1つまたは複数のデータベースを検索することを含むことができる。1つまたは複数の事例では、決定コンポーネント910は、1つまたは複数のコンパイルされた量子回路を格納するためのデータベース部分を含むことができる。
【0149】
量子プログラム実装システム902は、図示されていないスケジューラ/コンパイラをさらに含むことができる。スケジューラ/コンパイラは、量子プログラムの実行中に段階的なスケジューリングを実行するなど、データ転送または量子タスクあるいはその両方をスケジュールするように機能することができる。
【0150】
ハイブリッド古典/量子システムなどの、量子プログラムを実行している現在のシステムにおいて、1つまたは複数の量子回路の動作中に、複数のそのようなデータ転送または量子タスクあるいはその両方が、通常は開始されるか、または実行されるか、あるいはその両方が行われ得る。これらのデータ転送または量子タスクあるいはその両方は、それぞれ、完了するために、可変量の時間または異なる量の時間あるいはその両方を要することがある。したがって、1つまたは複数の他の量子タスクの完了またはデータ転送あるいはその両方と相対的な、1つの量子タスクの完了またはデータの転送あるいはその両方の遅延が、2つ以上のノード(例えば、古典的ノードまたは動作ノードあるいはその両方)の間の同期を減らすか、または同期の喪失を完全に引き起こすか、あるいはその両方である可能性がある。1つまたは複数の事例では、同期の喪失は、ノード(例えば、制御ノードまたは動作ノードあるいはその両方)間の(例えば、ソフトウェアまたはハードウェアあるいはその両方を介する)ボトルネック、隘路、またはデータ収集点、あるいはその組み合わせによって引き起こされることがあり、それによって、データ転送の速度を制限する。
【0151】
実際、通常はCPUが古典的リソースであることができることから、データ転送は、量子プログラムの実行中に複雑なスケジューリングを使用して、さまざまな時間に発生する可能性がある。さらに、従来の複数のCPUの通信および管理技術は、標準的な量子ビットのデコヒーレンスを考慮することができるスケールで、データを転送すること、分析すること、または決定すること、あるいはその組み合わせが、できない可能性がある。さらに、現在のシステムが、量子プログラムの実行中に1つまたは複数のデータ転送または量子タスクあるいはその両方をスケジュールするときに、スケジューリングに関連するデータまたはメタデータあるいはその両方が、データまたは通信命令あるいはその両方の転送と共に提供されることが可能であり、これが問題を複雑にする。すなわち、タイミング・データまたはメタ・データあるいはその両方が、データ転送サイズを増やすか、または関連するデータ転送の速度を低下させるか、あるいはその両方である可能性がある。さらに、ノード間で同期が失われ、タイミングが一致しない場合、量子タスクは、エラーもしくは失敗またはその両方を導入するか、または実験の崩壊を完全に引き起こすか、あるいはその組み合わせなど、適切に実施され得ない可能性がある。多数の量子ビットに作用する量子プログラムにスケーリングするときに、これらの問題が悪化することがある。
【0152】
これらの問題のうちの1つまたは複数を考慮するために、本明細書における1つまたは複数の実施形態は(例えば、量子プログラム実装システム902または間隔境界実装コンポーネント914あるいはその両方によって)、実装された間隔境界942へのデータ転送、量子タスク、またはマルチカード動作(multi-card operations)(例えば、DACの測定トーン、ADCのキャプチャ・ウィンドウ、または同様のもの、あるいはその組み合わせ)、あるいはその組み合わせの整列を可能にすることができる間隔境界942を実装することができる。すなわち、間隔境界942は、データの転送をスケジュールするため、または2つ以上の動作ノードで多量子ビット・ゲートを実装するなど、そのようなデータを実装するため、あるいはその両方のために、非限定的システム900によって(例えば、実行コンポーネント916によって)採用され得る。
【0153】
実際、このようにして、関連する量子プログラムの実行中にオーバーヘッドを採用することなどがなく、制御ノードまたは動作ノードあるいはその両方の(例えば、連続的な繰り返す間隔境界の反復での)同期点が提供され得る。さらに、次の間隔境界の反復が整列を提供できることから、間隔内(例えば、間隔境界の反復の対の間)のCPUの実行において、1つまたは複数の不正確さが許容され得る。各プログラムの量子タスクの初期スケジューリングに関して、間隔境界の反復は、「バリア」ゲートを揃えるための「自然な」位置をスケジューラ/コンパイラに提供できる。本明細書において使用されるとき、「バリア」ゲートは、2つ以上の異なる量子ビット・コントローラにわたって時間調整された方法で個別の量子演算または量子演算のサブシーケンスが実行され得るように、量子プログラムが個別の量子演算間または量子演算のサブシーケンス間の整列を伴うことができる時間インスタンスである。加えて、1つまたは複数の実施形態では、拡大された非限定的システム900E(
図10)は、量子ゲート動作を制御するために、プログラム可能なCPUの代わりに、ハードウェア・シーケンサを含んでいる1つまたは複数のプロセッサを含むことができる。
【0154】
間隔境界942を実装することに関連して、本明細書における説明は、最初に、間隔境界実装コンポーネント914を単に大まかに参照する。最初に、間隔境界実装コンポーネント914は、1つまたは複数の量子タスクのデータの転送または動作あるいはその両方の間に経過することができる1つまたは複数の期間の決定を容易にすることができる。間隔境界実装コンポーネント914は、この期間情報を使用して、非限定的システム900の2つ以上のノード(例えば、制御ノードまたは動作ノードあるいはその両方)で、連続的に繰り返す普遍的な間隔境界942を実装することができる。以下では、間隔境界実装コンポーネント914によって実行される1つまたは複数の機能、実装され得る間隔境界942、および間隔境界942が実装され得る制御ノードまたは動作ノードあるいはその両方に関して、詳細に説明される。
【0155】
2つ以上の量子ビットに対する量子プログラムの実行中に、間隔境界実装コンポーネント914によってノードの同期が容易にされ得る。本明細書において使用されるとき、ノード(例えば、制御ノードまたは動作ノード)は、1つまたは複数の機械を含むことができる。1つまたは複数の機械は、コンピューティング・デバイス、汎用コンピュータ、専用コンピュータ、量子コンピューティング・デバイス(例えば、量子コンピュータ)、ハードウェア・シーケンサ、タブレット・コンピューティング・デバイス、ハンドヘルド・デバイス、サーバ・クラス・コンピューティング・マシンもしくはデータベースまたはその両方、ラップトップ・コンピュータ、ノートブック・コンピュータ、デスクトップ・コンピュータ、携帯電話、スマートフォン、民生用装置もしくは民生用機器またはその両方、工業用デバイスもしくは商用デバイスまたはその両方、デジタル・アシスタント、インターネットが有効化されたマルチメディア電話、または別の種類のデバイス、あるいはその組み合わせのうちの1つまたは複数を含むことができる。
【0156】
1つまたは複数の実施形態では、拡大された非限定的システム900Eは、量子プログラム実装システム902に加えて、1つまたは複数の古典的リソースを含むことができる。量子プログラム実装システム902は、そのような古典的リソースによって具現化されたか、またはそのような古典的リソースを具現化するか、あるいはその両方である1つまたは複数の制御ノードに含まれるか、または1つまたは複数の制御ノードから分離しているか、あるいはその両方であることができる。すなわち、制御ノードは、スケジューリング、命令、データ分析、測定分析、量子パラメータの最適化、または同様のもの、あるいはその組み合わせを提供できる古典的リソースであることができる。これらの制御ノードが、ローカルに、または非中心的に、あるいはその両方で、互いに相対的に分散されることが可能であるか、または任意の2つ以上の制御ノードが、通信可能に互いに接続されることが可能であるか、あるいはその両方が可能である。1つまたは複数の他の実施形態では、1つまたは複数の制御ノードが量子リソースであることができるか、または1つまたは複数の量子コンポーネントを含むことができるか、あるいはその両方が可能であるということが、理解されるであろう。
【0157】
さらに、1つまたは複数の実施形態では、拡大された非限定的システム900Eは、量子システム901に加えて、1つまたは複数の量子リソースを含むことができる。量子システム901は、1つまたは複数の動作ノードを含むことができる。動作ノードは、パルス生成、波形生成、量子測定、または1つまたは複数の量子ビットに関連するか、もしくは1つまたは複数の量子ビットを含むか、またはその両方である他の機能、あるいはその組み合わせなどの、1つまたは複数の量子タスクを実行することができる、量子リソースであることができる。動作ノードが、ローカルに、または非中心的に、あるいはその両方で、互いに相対的に分散されることが可能であるか、または任意の2つ以上の動作ノードが、通信可能に互いに接続されることが可能であるか、あるいはその両方が可能である。1つまたは複数の他の実施形態では、1つまたは複数の動作ノードが量子リソースであることができるか、または1つまたは複数の量子コンポーネントを含むことができるか、あるいはその両方が可能であるということが、理解されるであろう。追加または代替あるいはその両方として、1つまたは複数の動作ノードが、上でリストされた制御ノードの機能のうちの1つまたは複数を提供することができるか、または1つまたは複数の制御ノードが、上でリストされた動作ノードの機能のうちの1つまたは複数を提供することができるか、あるいはその両方が可能であるということが、理解されるであろう。
【0158】
間隔境界(例えば、間隔境界942)を実装するために、間隔境界実装コンポーネント914は、最初に、2つ以上のノードで連続的に繰り返されるための、可能性が高いか、推定されたか、または計算されたか、あるいはその組み合わせである最長の期間を決定することができる。すなわち、最長の期間がどの基準に基づくかを決定するために、間隔境界実装コンポーネント914で、1つまたは複数の決定パラメータが、デフォルトで、または選択的に、あるいはその両方で、実装され得る。1つまたは複数の決定パラメータが選択的に実装される場合、実体によって、そのような選択的な実装が提供され得る。1つの実施形態では、実体は、間隔境界コンポーネント914または量子プログラム実装システム902あるいはその両方への通信デバイスまたは任意の適切な通信接続あるいはその両方を介して、1つまたは複数の決定パラメータを実装することができる。
【0159】
示されたように、最長の期間は、1つまたは複数のさまざまな基準を有することができる。1つまたは複数の実施形態では、最長の期間は、任意の2つ(以上)のノード(例えば、古典的ノードまたは動作ノードあるいはその両方)間の任意の方向での最長のデータ転送時間に基づくことができる。1つまたは複数の実施形態では、最長の期間は、任意の2つ(以上)のノード(例えば、古典的ノードまたは動作ノードあるいはその両方)間の最長のデータ転送およびリターン・データ転送(return data transfer)に基づくことができる。1つまたは複数の実施形態では、最長の期間は、制御ノードに基づくタスク(例えば、スケジューリング、命令の提供、データ分析、測定分析、量子パラメータの最適化、または同様のこと、あるいはその組み合わせ)の最長のタスク完了時間に基づくことができる。1つまたは複数の実施形態では、最長の期間は、動作ノードに基づくタスク(例えば、パルス生成、波形生成、量子測定、または1つまたは複数の量子ビットに関連するか、もしくは1つまたは複数の量子ビットを含むか、またはその両方である他の機能、あるいはその組み合わせ)の最長のタスク完了時間に基づくことができる。1つまたは複数の実施形態では、最長の期間は、これらの基準のうちの2つ以上の任意の組み合わせにわたる最長の期間に基づくなど、これらの基準のうちの2つ以上に基づくことができる。
【0160】
最長の期間が前述のさまざまな基準のうちの1つまたは複数に基づく場合、間隔境界実装コンポーネント914によって実行される「基づく」は、実際の期間、推定された期間、または1つまたは複数の精度の確率が提供された期間、あるいはその組み合わせを計算すること、または推定すること、あるいはその両方のうちの1つまたは複数を含むことができる。
【0161】
最長の期間を決定するときに、間隔境界実装コンポーネント914は、非限定的システム900(または拡大された非限定的システム900Eあるいはその両方)の2つ以上のノード(例えば、制御ノードまたは動作ノードあるいはその両方)で、決定された最長の期間を有する間隔境界942を共通に設定し、トリガーすることができる。このようにして、2つ以上のノードでの多量子ビット量子演算またはデータ転送あるいはその両方の実行が揃えられ得る。
【0162】
間隔境界実装コンポーネント914は、間隔境界942を実装するために、同じクロック・ソースまたは実行時間あるいはその両方を採用することができる。例えば、間隔境界実装コンポーネント914は、互いに同期される各ノードで、同じ間隔境界942を普遍的に設定し、トリガーすることができる。1つまたは複数の実施形態では、間隔境界実装コンポーネント914は、同じ瞬間に2つ以上のノードで、間隔境界942を設定し、トリガーすることができる。1つまたは複数の他の実施形態では、単一のクロック・ソースまたは実行時間あるいはその両方の利用を考慮すると、間隔境界942は、1つまたは複数の他のノードと異なる瞬間に1つまたは複数のノードで設定されるか、またはトリガーされるか、あるいはその両方であることができるが、間隔境界942は、依然として同じように実装され、同期され得る。1つまたは複数の実施形態では、このことは、異なる瞬間が、実行時に変化しない既知の反復可能な関係を互いに有する限り、当てはまることができる。
【0163】
ここで
図10を参照して、例示的な実装に関連して、間隔境界942がさらに説明される。
図10で、非限定的システム900の拡大版(例えば、拡大された非限定的システム900E)に関連して、量子回路1002を含んでいる量子プログラムが実装される量子プログラム・スケジュール(quantum program schedule)1000が示されている。非限定的システム900Eは、
図9に示された非限定的システム900の代わりに採用され得る。すなわち、本明細書において提供された(または提供される)1つまたは複数の説明に関して、非限定的システム900および900Eは、互いに交換可能であることができる。非限定的システム900および900Eのうちの1つの説明または開示された態様あるいはその両方は、本明細書では、非限定的システム900および900Eのうちの他のものに当てはまることができる。
【0164】
拡大された非限定的システム900Eは、第1のCPU1を含んでいる第1の制御ノードおよび第2のCPU2を含んでいる第2の制御ノードを含んでいるように示されている。拡大された非限定的システム900Eは、各量子ビット(例えば、Q[0]、Q[1]、およびQ[2])に作用するために、パルスなどの1つまたは複数の物理的動作をそれぞれ方向付けるための、3つの動作ノードを含んでいるようにも示されている。各動作ノードは、拡張器(EX)、波形再生機(WP)、およびカーネル/選別器(KD)を含むことができる。理解されるであろうように、量子プログラム実装システム902は、第1の制御ノードもしくは第2の制御ノードに含まれ得る(またはこれらを含むか、あるいはその両方である)か、またはこれらから分離し得るか、あるいはその両方であることができる。1つまたは複数のそのような実施形態では、CPU1もしくはCPU2が、プロセッサ906であることができるか、もしくはプロセッサ906に含まれ得るか、またはその両方であることができるか、またはプロセッサ906がCPU1およびCPU2から分離することができるか、あるいはその組み合わせが可能である。
【0165】
図10に示されているように、採用された間隔境界942は、間隔境界実装コンポーネント914による共通のトリガー1003などで、複数のノードに普遍的に実装され得る。間隔境界942は、本明細書では間隔境界の反復と呼ばれる複数の連続的に繰り返す共通の時点で、拡大された非限定的システム900Eの動作ノードおよび制御ノードの各々で実装され得る。
図10は、間隔境界の反復IB-1~IB-8を示している。1つまたは複数の他の実施形態では、追加の反復またはより少ない反復が採用され得る。間隔境界の反復の各隣接する対は、1つまたは複数の他の待ち時間、仲裁、または他の期間、あるいはその組み合わせのない、単一の時間間隔の境界を示すことができる。すなわち、(例えば、共通の間隔境界の反復または時点で)次の時間間隔が開始する場合に、1つの時間間隔が開始することができ、各時間間隔は同じ時間の長さを有する。
【0166】
上で示されたように、データ転送または量子タスクの動作あるいはその両方の最長の期間などに関連して、間隔境界実装コンポーネント914によって、同じ時間の長さが決定され得る。上で示されたように、間隔境界の反復間の最小の時間の長さとして、この最長の期間が利用され得る。実行される量子プログラムに適している場合、量子プログラム実装システム902または間隔境界実装コンポーネント914あるいはその両方は、最長の期間より長い間隔境界の反復間の時間の長さを採用することができる。例えば、より長い時間間隔は、量子プログラムまたは量子プログラムに含まれている1つまたは複数の量子タスクあるいはその両方を実行することの前の履歴に基づいて実行される量子プログラムに、より良く適合することができる。
【0167】
図10をさらに参照すると、量子プログラム・スケジュール1000は、量子ビットQ[0]およびQ[1]で動作ノードによって実行される、量子ゲート動作などの複数の量子タスクを含むことができる。これらの量子ゲート動作のうちの1つまたは複数は、CNOTゲート1004などの、複数ゲートの動作であることができる。
図10では、量子ゲートの実行が単に例として示されているということが、理解されるであろう。例えば、Xゲート(反転)、Hゲート(アダマール)、Rゲート(リセット)、?ゲート(条件付きリセット)、CNOTゲート(制御されたnot)、Mゲート(測定)、ならびにZ、S、およびTゲート(他の条件付き循環)は、ユーザのテスト・ケースから指定されたか、またはユーザのテスト・ケースを実装するために作成された、量子ゲートの例示的な集合を表している。例示的なゲートとして、これらの例は、実際の量子ゲート・シーケンスのプレース・ホルダであり、特定の順序で示されず、いずれかの特定の量子ビットの挙動を意味するよう意図されていない。
【0168】
IB-1から開始し、例えば、物理パルス動作として、量子ビットQ[0]およびQ[1]に対して量子ゲート動作(例えば、アダマール、X、およびMゲート)が実行される。(量子ビットQ[0]およびQ[1]を操作するか、または制御するか、あるいはその両方を行う)各動作ノード1006および1008によって、CPU1へのデータ転送として、測定値qv[0]、qv[1](exinfo Iに含まれる)が提供され得る。時間間隔IIの間に、CPU1によってCPU計算Aが実行され、量子ビットQ[0]およびQ[1]の各々でのRゲートの結合の実行を方向付けるための追加の例示的な情報I(exinfo I)として、動作ノード1006および1008に転送される。すなわち、間隔境界942を利用することに含まれる量子ビット間で、多量子ビット・ゲートまたは一緒に実行されるゲートあるいはその両方が正確に同期され得る。動作ノード1006および1008は、間隔境界942を使用して、IB-3である次の使用可能な間隔境界の反復で、Rゲートの結合の実行を揃えることができる。
【0169】
さらに一般的には、間隔境界942は、そのようなゲートの実行を揃えるために使用され得るシステム全体の整列点を提供することができる。関連する間隔境界の反復が規則的に発生/再発生するため、量子プログラムの実行全体を通じて、複数のゲートまたは結合ゲートあるいはその両方の実行の近くで動作ノードによって採用されるための、間隔境界の反復が使用可能であり得る。これは、多量子ビット・ゲートの実行に達するための制御フロー経路がシステム内を迷走するか、またはCPU計算などの非決定的要素を含むか、あるいはその両方である場合でも、当てはまることができる。したがって、各量子プログラムの実行中に何度も、調整された活動が確立されるか、失われるか、または再び獲得されるか、あるいはその組み合わせであることができる。
【0170】
時間間隔III~VIIを参照して、1つまたは複数の量子プログラムの実行エラーを考慮するように間隔境界942を実装することの利点が詳細に説明される。例えば、当然ながら、CPU実行時間の長さが変化する(例えば、量子ビット測定結果に基づいて選択された異なる長さの命令実行パイプラインまたはコードの分岐において変化する)可能性があるため、スケジューラ/コンパイラなどによってスケジュールされた時間間隔と異なる時間間隔の間にCPUの実行が終了する場合、ノードの同期が影響を受けることがある。しかし、間隔境界実装コンポーネント914は、間隔境界942などの間隔境界を実装することによって、そのような問題を少なくとも部分的に考慮することができる。実際、間隔境界942の使用は、CPUの実行またはデータ転送あるいはその両方の間の変動によって引き起こされた量子プログラム実行エラーを考慮することができ、次の間隔境界の反復での1つまたは複数の量子タスクまたはデータ転送あるいはその両方の継続的な動作を可能にすることができる。これは、間隔境界の反復がCPUの不確定な機能の境界を示すことができるためである。この境界は、スケジューラ/コンパイラなどによって、どの次回以降の間隔境界の反復を次の再同期点として使用するかを予測すること、または伝達すること、あるいはその両方によって、複数の量子ノードの同期された実行が正確に再確立されることを可能にすることができる。
【0171】
間隔境界942を使用しない場合、代わりに量子プログラム実行エラーが、不要なエラーを量子タスクの実行に導入する可能性があり、または関連する量子プログラムの実行の完全な失敗もしくは部分的な失敗またはその両方を引き起こす可能性があり、あるいはその両方の可能性があるということが、理解されるであろう。
【0172】
1つまたは複数の実施形態では、そのようなエラーを考慮するために、非限定的システム900E(例えば、量子プログラム実装システム902、実行コンポーネント916、または量子システム901、あるいはその組み合わせ)は、量子プログラムの実行前または実行中あるいはその両方で1つまたは複数のエラーを決定するために、1つまたは複数のチェックを実施することができる。すなわち、前述の境界のある不確定性は、どの間隔境界の反復が再開するべきであるか、または再開するか、あるいはその両方であるかを予測することによって、およびハードウェアにおいて予測を確認することによって、エラー・チェックされ得る。例えば、CPU計算Bに関して、関連する量子プログラムの実行前に、ハードウェア・チェックが実行され得る。実行に時間がかかり過ぎ、実行が次の間隔境界の反復に延びた場合(例えば、
図10のエラーI)、または実行が追加の時間間隔に及ぶと予想されたときに、実行の終了が早過ぎた場合(例えば、
図10のエラーII)、量子プログラム実行エラーが検出され得る。エラー・チェックが、CPUの結果/計算の転送と並列に、またはCPUの結果/計算の転送後に、あるいはその両方で、実行され得るということに注意する。例えば、量子プログラムが実行の失敗を認識し、それに応じて、悪い反復を結果全体から破棄することなどによって対処することができるように、予想された時間ウィンドウからの逸脱がログに記録され、実験結果と共に報告され得る。
【0173】
ここで
図10の特定の例を参照して、エラーIおよびエラーIIに関する説明が提供される。
【0174】
例えば、第1の種類のエラー(例えば、エラーI)に関して、
図10にCPU計算Bが示されており、このCPUの実行は非決定的であることがあり、可変の完了時間1012を有することがある。1つの事例では、時間間隔IIIの間の、IB-4の前に、CPU計算Bが完了時間1014のいずれかで終了し得る場合、次の間隔境界の反復IB-4で、スケジューラ/コンパイラなどに従って、例示的な情報II-aが転送され得る。さらに、IB-5での条件付きリセット・ゲート1018および多量子ビットCNOTゲート1004の揃えられた実行のために、CPU計算Bに応答して、動作ノード1006および1008によって、例示的な情報II-aが利用され得る。例えば、例示的な情報II-aは、1つまたは複数の命令または量子パラメータあるいはその両方を含むことができる。
【0175】
やはり
図10に示されている代替の事例では、CPU計算Bは、IB-4の後に、完了時間1020で終了することがある。すなわち、スケジューラ/コンパイラによって提供された1つまたは複数の実行期間に基づいて、間隔境界942に関して時間間隔の長さが計算され得る場合でも、実際の実行時間または実際のCPU計算時間あるいはその両方が変化し得るまで、1つまたは複数の推定CPU計算時間が不明であることがある。上で示されたように、CPU計算Bの可変の実行時間が、スケジューラ/コンパイラによって、間隔境界942の時間間隔の外側に出ると推定された場合、そのようなエラーのチェックが、実験のエラーを引き起こすことがある。
【0176】
それにもかかわらず、実装された後に、間隔境界の反復が規則的に発生するため、CPUの実行は、2つ以上の時間間隔に及ぶことができる(例えば、
図10の時間間隔IIIおよびIVに及ぶ)。図に示されているように、CPU計算Bに関連する例示的な情報(例えば、exinfo II-b)の転送が、時間間隔Vに移動され得る。同様に、条件付きリセット・ゲート1018および多量子ビットCNOTゲート1004の実行がIB-6に移動され得る。これらの調整は、連続的に繰り返す間隔境界の反復の可用性に起因して、可能にされ得る。実際、間隔境界942の使用は、エラーIを考慮することができ、次の間隔境界の反復(例えば、IB-6)でのそのようなゲート1018および1004の継続的な動作を可能にすることができる。間隔境界942を使用しない場合、代わりにエラーIが、不要なエラーを量子タスクの実行に導入する可能性があり、または関連する量子プログラムの実行の完全な失敗もしくは部分的な失敗またはその両方を引き起こす可能性があり、あるいはその両方の可能性があるということが、理解されるであろう。
【0177】
追加または代替あるいはその両方として、上で示されたように、CPU実行完了時間が、時間スケール1022に沿った間隔境界の反復の近く(例えば、直前)に自然に収まる場合、量子プログラム実行エラーが検出されることがある。そのような事例では、チェックが確実に実行され得るなどの場合に、影響を受けるCPU実行の可変性の範囲全体を次の間隔に移動するために、関連するスケジューラ/コンパイラなどによって、アイドル・コードまたは無演算(no-op:no-operation)コードあるいはその両方が量子プログラムの実行に追加され得る。
【0178】
例えば、ここで時間間隔V~VIIでのCPU計算Cを参照して、この概念が適用され得る。CPU計算Cが、IB-7の近くのいずれかの完了点1024で完了する場合、これは、計算結果に関連するデータのデータ転送を実施するための最小限の時間しか可能にすることができない。すなわち、CPUの実行における自然な可変性が、転送/計算がIB-7で提供されるか、またはIB-8まで遅延されることを引き起こすことがある。これが、CPUの結果に依存するゲートの適用における変動を引き起こす可能性があるため、各コンパイル・コンポーネントまたはコンパイラは、この状況に対処することができる。例えば、自然な可変性を考慮した場合でも、1つの時間間隔の間のみに計算結果が存在するように、CPU計算において、無演算コマンドまたは他の遅延メカニズムの挿入が採用され得る。間隔境界を使用しない場合、CPU命令の粒度に至るまでの正確な調整が使用され得る。しかし、コンパイラは、間隔境界を使用して、実行計画を管理し、間隔境界の時間間隔のより高い精度のウィンドウを採用することができる。例えば、CPU計算Cの完了後のデータ転送を次の時間間隔(例えば、時間間隔VII)に移動することによって、エラー2が防がれ得る。エラー1と同様に、間隔境界942に関連して、ハードウェア・チェックなどの1つまたは複数のチェックを採用することによって、エラー2が発見され得る。
【0179】
次に
図11を参照して、間隔境界942を採用する1つまたは複数の追加の概念が説明される。
【0180】
IB-2で、複数ゲートのノードなどのために、ノード(例えば、動作ノード1108および1110)間の同期が採用される場合、未来の(例えば、次の)間隔境界の反復が発生するまで、そのようなノードのうちの1つまたは複数が、受信されたデータに作用することを有利に延期することができる。例えば、Q[1]およびQ[2]の各々でのアダマール・ゲートおよびCNOTゲートの結合の実施を可能にするために、動作ノード1110によって、Q[2]で実施されるアダマール・ゲート1112およびCNOTゲート1114が、IB-2まで延期され得る。
【0181】
動作ノード1106を参照すると、他のノードとの調整を採用しない量子ゲートのシーケンスを実施する動作ノードは、間隔境界942を無視するか、または間隔境界942を採用せずに機能するか、あるいはその両方を有利に行うことができる。例えば、
図11の量子ビットQ[0]で時間間隔I~Vに実施される量子ゲートの大きいシーケンスは、間隔境界942を採用せずに実施され得る。すなわち、量子ビットQ[0]は、採用されている他の量子ビットとは無関係に操作され得る。追加または代替あるいはその両方として、動作ノード1106などの1つの動作ノードによるゲートの実行が、他の量子ビットからの入力(例えば、測定結果)、制御ノードらの入力(例えば、決定コード)、または他の動作ノードらの入力(例えば、多量子ビット・ゲートなどのための、別の量子ビットとの同期)、あるいはその組み合わせなしで動作することができる場合、この1つの動作ノードは、間隔境界942を無視することができる。この概念は、量子ビットQ[1]に関連して動作ノード1108によって採用されている量子回路に関連する位置1116および1118などの、外部の相互作用を採用しないゲートのバーストの場合に、実行ストリーム内でも適用され得る。
【0182】
図9を再び簡単に参照して、量子プログラム実装システム902または非限定的システム900/900Eあるいはその両方の1つまたは複数の追加の機能が、それらの1つまたは複数の追加のコンポーネントなどに関連して説明される。
【0183】
間隔境界実装コンポーネント914は、1つまたは複数の量子ビットに関連して、決定された量子回路を実装するために、確立された後に、間隔境界942を実行コンポーネント916に提供することができる。間隔境界実装コンポーネント914は、間隔境界942の提供を容易にするために、実行コンポーネント916と、直接的または間接的あるいはその両方で、通信可能に結合され得る。実行コンポーネント916は、量子システム901で(例えば、量子システム901の動作ノードで)間隔境界942を使用して、量子ジョブ要求909の初期化、命令、または実施、あるいはその組み合わせを方向付けることができる。すなわち、実行コンポーネント916は、2つ以上の量子ビットに対する量子タスクの連続する実行のために、間隔境界942の連続的に繰り返す間隔境界の反復(例えば、連続的に繰り返す時点)を採用することができる。1つまたは複数の事例では、そのような量子タスクのうちの1つまたは複数は、多量子ビットの量子タスクであることができる。実行コンポーネント916は、連続的に繰り返す時点の多数のインスタンス(例えば、2つ以上のインスタンス)で、2つ以上の量子ビットに対して、多量子ビットの量子タスクなどの同時に開始される量子演算を引き起こすことができる。
【0184】
量子システム901は、間隔境界942に少なくとも部分的に基づいて、量子ジョブ要求909を実行することができる。すなわち、量子システム901(例えば、1つまたは複数の動作ノード)は、量子システム901での2つ以上の量子ビットに対して量子ジョブ要求909を実行することができる。量子システム901は、1つまたは複数の量子測定結果917を量子プログラム実装システム902に、または非限定的システム900/900Eの古典的リソースに(例えば、1つまたは複数の制御ノードに)、あるいはその両方に提供することができる。量子プログラムの動作後に、非限定的システム900/900Eは、量子システム901から1つまたは複数の最終的な量子測定結果917を受信するか、ダウンロードするか、ストリーミングするか、または他の方法で取得するか、あるいはその組み合わせを実行することができる。
【0185】
量子プログラム実装システム902は、出力コンポーネント918を備えることもできる。1つまたは複数の量子ジョブ結果919は、出力コンポーネント918を介して非限定的システム900/900Eから出力され得る。1つまたは複数の量子ジョブ結果919は、1つまたは複数の量子測定結果917を含むことができるか、もしくは1つまたは複数の量子測定結果917に少なくとも部分的に基づくことができるか、またはその両方であることができるか、または要求している実体からの量子ジョブ要求909に応答することができるか、あるいはその組み合わせであることができる。
【0186】
ここで
図12および13を参照すると、これらの図は、本明細書に記載された1つまたは複数の実施形態に従って、間隔境界の実装によって、量子ビットのセットに対する量子回路の動作を容易にすることができる例示的な非限定的コンピュータ実装方法1200のフロー図を共に示している。各実施形態で採用されている類似する要素またはプロセスあるいはその両方の説明の繰り返しは、簡潔にするために省略されている。
【0187】
最初に
図12の1202を参照すると、コンピュータ実装方法1200は、プロセッサ(例えば、プロセッサ906、量子プロセッサ、または同様のプロセッサ、あるいはその組み合わせ)に動作可能に結合されたシステムによって(例えば、非限定的システム900、900E、量子プログラム実装システム902、または量子ジョブ要求コンポーネント908、あるいはその組み合わせによって)、量子ジョブ要求(例えば、量子ジョブ要求909)を取得することを含むことができる。
【0188】
1204で、コンピュータ実装方法1200は、システムによって(例えば、非限定的システム900、900E、量子プログラム実装システム902、または決定コンポーネント910、あるいはその組み合わせによって)、量子ジョブ要求(例えば、量子ジョブ要求909)を少なくとも部分的に実装するために、量子プログラムまたは量子回路あるいはその両方を決定することを含むことができる。
【0189】
1206で、コンピュータ実装方法1200は、システムによって(例えば、非限定的システム900、900E、量子プログラム実装システム902、または間隔境界実装コンポーネント914、あるいはその組み合わせによって)、間隔境界(例えば、間隔境界942)を決定することを含むことができる。
【0190】
この決定に含まれている特定のプロセスが、継続の三角形1208で発生するように示されており、
図13でさらに詳細に説明される。1つまたは複数の実施形態では、継続の三角形1208によって具現化された(例えば、
図13に示されているような)すべてのプロセスが実行され得る。1つまたは複数の他の実施形態では、継続の三角形1208によって具現化されたプロセスのうちの1つまたは複数が回避されるか、または省略されるか、あるいはその両方であることができる。
【0191】
1210で、コンピュータ実装方法1200は、システムによって(例えば、非限定的システム900、900E、量子プログラム実装システム902、または間隔境界実装コンポーネント914、あるいはその組み合わせによって)、量子プログラムの(例えば、非限定的システム900、900E、量子プログラム実装システム902、または実行コンポーネント916、あるいはその組み合わせなどへの)実行などのために、間隔境界(例えば、間隔境界942)を提供することを含むことができる。
【0192】
1212で、コンピュータ実装方法1200は、システムによって(例えば、非限定的システム900、900E、量子プログラム実装システム902、間隔境界実装コンポーネント914、または実行コンポーネント916、あるいはその組み合わせによって)、間隔境界(例えば、間隔境界942)を共通に設定し、トリガーすることを含むことができる。
【0193】
1214で、コンピュータ実装方法1200は、システムによって(例えば、非限定的システム900、900E、量子プログラム実装システム902、実行コンポーネント916、量子システム901、量子演算コンポーネント903、または量子プロセッサ905、あるいはその組み合わせによって)、間隔境界(例えば、間隔境界942)を使用して量子ジョブ要求(例えば、量子ジョブ要求909)を実行することを含むことができる。
【0194】
この実行に含まれている特定のプロセスが、継続の三角形1216で発生するように示されており、
図13でさらに詳細に説明される。1つまたは複数の実施形態では、継続の三角形1216によって具現化された(例えば、
図13に示されているような)すべてのプロセスが実行され得る。1つまたは複数の他の実施形態では、継続の三角形1216によって具現化されたプロセスのうちの1つまたは複数が回避されるか、または省略されるか、あるいはその両方であることができる。
【0195】
1218で、コンピュータ実装方法1200は、システムによって(例えば、非限定的システム900、900E、量子プログラム実装システム902、または出力コンポーネント918、あるいはその組み合わせによって)、1つまたは複数の量子ジョブ結果(例えば、量子ジョブ結果919)をユーザ実体などの実体などに出力することを含むことができる。
【0196】
図13を参照すると、この図は、
図12のコンピュータ実装方法1200の拡張を示しており、具体的には、
図12の継続の三角形1208で発生することができる態様を示している。この態様は、1つまたは複数の通信命令のコンパイルを含むなど、間隔境界(例えば、間隔境界942)の決定の特定のプロセスを含むことができる。
【0197】
1302で、コンピュータ実装方法1200は、システムによって(例えば、非限定的システム900、900E、量子プログラム実装システム902、または間隔境界実装コンポーネント914、あるいはその組み合わせによって)、(例えば、量子プログラムの実行中に実行される1つまたは複数の量子タスクのデータの転送または動作あるいはその両方の間に経過することができる)1つまたは複数の期間を決定することを含むことができる。
【0198】
1304で、コンピュータ実装方法1200は、システムによって(例えば、非限定的システム900、900E、量子プログラム実装システム902、または間隔境界実装コンポーネント914、あるいはその組み合わせによって)、1つまたは複数の期間のうちの最長の期間を決定することを含むことができる。この決定は、システムによる(例えば、非限定的システム900、900E、量子プログラム実装システム902、または間隔境界実装コンポーネント914、あるいはその組み合わせによる)、実装される間隔境界(例えば、間隔境界942)の連続的に繰り返す間隔境界の反復の各々の時間の長さとしての最長の期間の実装を含むことができる。
【0199】
1306で、コンピュータ実装方法1200は、システムによって(例えば、非限定的システム900、900E、量子プログラム実装システム902、間隔境界実装コンポーネント914、または量子システム901、あるいはその組み合わせによって)、決定された間隔境界の長さをテストすることを含むことができる。例えば、量子プログラムの実行中に完了される1つまたは複数のデータ転送または量子タスクあるいはその両方に関して、1つまたは複数のエラーが検出され得る。1つまたは複数のエラーは、量子プログラムの実行中に完了される1つまたは複数のデータ転送または量子タスクあるいはその両方の、間隔境界の反復の完了または間隔境界の反復の近くの完了あるいはその両方の可変の時間に関連することができる。
【0200】
さらに
図13を参照すると、この図は、
図12のコンピュータ実装方法1200の別の拡張を示しており、具体的には、
図12の継続の三角形1216で発生することができる態様を示している。この態様は、量子ジョブ要求(例えば、量子ジョブ要求909)の実行の特定のプロセスを含むことができる。ブロック1308、1310、1312、および1314によって具現化されたプロセスが連続して発生することができるということが理解されるであろう。追加または代替あるいはその両方として、ブロック1308、1310、1312、および1314によって具現化されたプロセスのうちの1つまたは複数は、ブロック1308、1310、1312、および1314によって具現化されたプロセスのうちの他のプロセスと少なくとも部分的に並列に発生することができる。
【0201】
1308で、コンピュータ実装方法1200は、システムによって(例えば、非限定的システム900、900E、量子プログラム実装システム902、スケジューラ/コンパイラ、または実行コンポーネント916、あるいはその組み合わせによって)、間隔境界の反復に揃えられた、1つまたは複数のデータ転送(例えば、通信命令、量子測定結果、量子ゲート・パラメータ、または同様のもの、あるいはその組み合わせ)、または(例えば、1つまたは複数の量子タスクの)スケジューリング、あるいはその両方を実行することを含むことができる。例えば、間隔境界の反復で、1つまたは複数のデータ転送またはスケジューリングあるいはその両方が受信されるか、送信されるか、または操作されるか、あるいはその組み合わせが実行され得る。
【0202】
1310で、コンピュータ実装方法1200は、システムによって(例えば、非限定的システム900、900E、量子プログラム実装システム902、スケジューラ/コンパイラ、または実行コンポーネント916、あるいはその組み合わせによって)、間隔境界の反復に揃えられた(例えば、1つまたは複数の量子タスクの)1つまたは複数の多量子ビット・ゲートまたは結合実行ゲート(joint execution gates)あるいはその両方を実行することを含むことができる。
【0203】
1312で、コンピュータ実装方法1200は、システムによって(例えば、非限定的システム900、900E、量子プログラム実装システム902、スケジューラ/コンパイラ、または実行コンポーネント916、あるいはその組み合わせによって)、間隔境界(例えば、間隔境界942)を使用して1つまたは複数の制御ノードまたは動作ノードあるいはその両方を再同期することを含むことができる。
【0204】
1314で、コンピュータ実装方法1200は、システムによって(例えば、非限定的システム900、900E、量子プログラム実装システム902、スケジューラ/コンパイラ、または実行コンポーネント916、あるいはその組み合わせによって)、実装された間隔境界(例えば、間隔境界942)の1つまたは複数の間隔境界の反復を無視することを含むことができる。例えば、
図11に関して説明されたように、操作される単一量子ビット量子ゲートのシーケンスを含んでいる1つまたは複数の動作ノードは、1つまたは複数の間隔境界の反復を無視することができる。
【0205】
1つまたは複数の実施形態では、ブロック1216での実行は、追加または代替あるいはその両方として、システムによって(例えば、量子システム901、量子演算コンポーネント903、または量子プロセッサ905、あるいはその組み合わせによって)、1つまたは複数の量子測定結果(例えば、量子測定結果917)を出力することを含むことができる。
【0206】
ここで
図9~13を組み合わせて参照すると、本明細書に記載された1つまたは複数の実施形態は、開示された内容を実用的応用に統合することができる。実際、本明細書において説明されるように、システム、コンピュータ実装方法、またはコンピュータ・プログラム製品、あるいはその組み合わせの形態をとることができる1つまたは複数の実施形態は、1つまたは複数の量子ビットに対する量子回路の改良された動作を容易にすることができるコンピュータ化されたツールと見なされ得る。一般に、本明細書に記載された1つまたは複数の実施形態は、量子回路を採用している量子プログラムの実行によって採用される処理能力または生じるエラーあるいはその両方を減らすことができる。これは、特に、採用された量子ビットのデコヒーレンスに対するエラーの影響を考慮すると、コンピュータの有用な実用的応用であり、したがって、採用された量子ビットの改良された(例えば、改善されたか、または最適化されたか、あるいはその両方の)動作を容易にすることができる。これらの改良は、量子結果の精度の向上または採用された量子ビットの可用性の向上あるいはその両方を含むことができる。全体的に、そのようなコンピュータ化されたツールは、量子コンピューティングの分野における具体的な有形の技術的改善を構成することができる。
【0207】
さらに、本明細書に記載された1つまたは複数の実施形態は、開示された内容に基づいて現実世界のデバイスを制御することができる。例えば、本明細書に記載された1つまたは複数の実施形態は、量子ジョブ要求を入力として受信することができ、量子システムの1つまたは複数の量子ビットに対する、現実世界の物理パルスなどの1つまたは複数の物理的動作として、量子プログラムの実装を誘導するために、間隔境界を第1の出力として生成することができる。本明細書に記載された1つまたは複数の実施形態は、量子システムの現実世界の量子ビットに対する1つまたは複数の物理的動作の実行に応答して、1つまたは複数の量子結果を第2の出力として生成することができる。
【0208】
1つまたは複数の実施形態では、量子プログラム実装システム902および間隔境界実装コンポーネント914を採用している非限定的システム900/900Eは、間隔境界942を実装する(例えば、複数の制御ノードまたは動作ノードあるいはその両方で共通に設定し、トリガーする)ことによって、量子プログラムの実行を改良する(例えば、改善するか、または最適化するか、あるいはその両方を行う)ことができる。
【0209】
1つの結果として、量子プログラムの実行中の同期されたデータ転送または量子タスクあるいはその両方の動作が容易にされ得る。すなわち、間隔境界実装コンポーネント914は、量子プログラムを実行している各ハイブリッド古典/量子システムの複数の制御ノードまたは動作ノードあるいはその両方の間でのそのようなデータ転送または量子タスクあるいはその両方の動作の同期という、複雑であるか、または時間がかかるか、あるいはその両方である量子プログラムの実装の問題を最小限に抑えるか、または防ぐか、あるいはその両方を行うことができる。特に、間隔境界実装コンポーネント914は、ハイブリッド古典/量子システムが、大きい物理的距離に及ぶか、または任意の構成で接続されたか、あるいはその両方である複数のノード(例えば、制御または動作あるいはその両方)にわたって規則的な同期点を実装することを、可能にし得る。
【0210】
ノード間の余分な同期情報の転送が防がれ得るということに注意する。すなわち、現在のシステムでは、余分な同期情報(例えば、「この未来の時間に作動する」タイムスタンプ)を伝達することは、時間を消費する可能性があり、量子プログラムまたは実験の実行持続時間を延ばす可能性がある。実行持続時間を延ばすということは、結果の精度に悪影響を与える可能性がある追加の量子ビット・デコヒーレンスが発生するということを意味する。代わりに、量子プログラム実装システム902および間隔境界実装コンポーネント914を採用する非限定的システム900/900Eは、これらの問題を防ぐことができる。
【0211】
別の結果として、間隔境界942の実装によって、各量子プログラムの実行全体を通じて、複数のノードの継続的な同期が可能にされるため、同期の喪失が許容され得る。すなわち、追加の処理能力、ソフトウェア、またはハードウェア、あるいはその組み合わせが、各制御ノードまたは動作ノードあるいはその両方によって完璧な同期を維持すること以外に向けられ得る。代わりに、間隔境界の実装の一部として採用される共通の連続的に繰り返す間隔境界によって、古典的計算の可変の計算時間またはデータ転送あるいはその両方が考慮され得る。異なる動作ノードが、異なる時間に多量子ビット・ゲートを操作するために、1つまたは複数の量子パラメータなどのデータを受信することができ、さらに、多量子ビット・ゲートの動作を容易にする各動作ノードが、多量子ビット・ゲートの共通の動作のために、次の間隔境界の反復で再同期され得る。同様に、異なる制御ノードが、変化する時間に複数の動作ノードから(例えば、複数の量子ビットから)1つまたは複数の量子測定結果を受信することができ、さらに、次の間隔境界の反復で古典的計算またはデータ転送あるいはその両方を調整する(例えば、同期させる)ことができる。
【0212】
さらに別の結果として、データ転送を容易にする通信経路が、待ち時間に関して不正確であることができる。これは、パッケージまたはケーブルあるいはその両方の制約または変動あるいはその両方を有している多量子ビット・システムにおいて、利点であることができる。
【0213】
間隔境界実装コンポーネント914は、量子プログラムの実行中に待ち時間を最小限に抑えるために、ハイブリッド古典/量子システムがオーバーヘッドを採用しないか、またはほとんど採用しないことも可能にし得る。すなわち、データ転送、計算時間、量子ゲート動作時間、または関連する複合的な待ち時間、あるいはその組み合わせは、量子プログラムの実行中に計算されないこと、または推定されないこと、あるいはその両方が可能である。すなわち、結合動作または多量子ビット動作あるいはその両方を容易にするために、量子プログラムの実行中に別々のタイミングが実装されないことが可能である。代わりに、間隔境界942は、少なくとも各量子プログラムの1つまたは複数の量子タスクの初期化の前に、普遍的に設定され、トリガーされることが可能であり、このようにして、各ノードで同じである複数の連続的な繰り返す間隔境界の反復を実装し、1つまたは複数の量子タスクを容易にする。
【0214】
さらに、説明された主題は、開示された間隔境界942を採用することによって、関連する古典的ノード(例えば、古典的制御ノード)によって採用される処理能力における削減を引き起こすことができる。これは、少なくとも部分的に、量子プログラムの実行中にそのような別々のタイミングの計算および実装が防がれ得るためである。そのため、非限定的システム900/900E(例えば、量子プログラム実装システム902または間隔境界実装コンポーネント914あるいはその両方を含む)は、それによって、非限定的システム900/900Eの1つまたは複数の古典的処理ユニット(CPU)に関連する性能の向上、効率の向上、または計算コストの減少、あるいはその組み合わせを促進することができる。
【0215】
さらに、量子システム901を採用する増大した数の量子プログラムの実行に対する高い需要が存在する場合、非限定的システム900/900E(例えば、量子プログラム実装システム902または間隔境界実装コンポーネント914あるいはその両方を含む)の使用が、量子プログラムのスケーリングされた実行を容易にし得るという結果になることができる。すなわち、1つまたは複数の量子ビットに対して量子回路を操作するために1つまたは複数の量子タスクの実行中に生じる、可変の待ち時間を減らすこと、または取り除くこと、あるいはその両方、およびしたがって、エラーを減らすことによって、1つまたは複数の量子ビットのデコヒーレンスのより遅い発生が、量子ビットに対して追加の量子プログラムが実行されることを可能にし得る。これが次に、1つまたは複数の量子ビットを備えている量子システムによる新しい量子ビットの提供における関連する減少につながることができ、その結果、新しい量子ビットの減少した提供に少なくとも部分的に起因して、量子システムの量子プロセッサの処理能力の可用性の向上につながることができる。
【0216】
ここで
図14を参照すると、非限定的システムの別の実施形態が1400に示されている。適切な場合、
図1の非限定的システム100または
図9の非限定的システム900あるいはその両方の類似する要素を参照するために、類似する番号が利用される。
図1の非限定的システム100または
図9の非限定的システム900あるいはその両方の実施形態で採用されている類似する要素またはプロセスあるいはその両方の説明の繰り返しは、簡潔にするために省略されている。
【0217】
図14を(および
図15~18も)参照すると、本明細書に記載された1つまたは複数の実施形態は、量子ジョブの実行を改良するために通信命令をコンパイルすることを容易にすることができ、1つまたは複数の量子ビットに対する量子ジョブの実行を改良するために普遍的な時間間隔を実装することを容易にすることができる、1つまたは複数のシステム、コンピュータ実装方法、装置、またはコンピュータ・プログラム製品、あるいはその組み合わせを含むことができる。例えば、
図14は、量子ジョブの実行を改良するために通信命令をコンパイルすることを容易にすることができ、1つまたは複数の量子ビットに対する量子ジョブの実行を改良するために普遍的な時間間隔を実装することを容易にすることができる、例示的な非限定的システム1400のブロック図を示している。
【0218】
以下の説明が、単一の量子ジョブ要求からの単一の量子プログラムの動作のことを指しているということが、理解されるであろう。しかし、本明細書に記載されたプロセスのうちの1つまたは複数が拡張可能であることができるということも理解されるであろう。例えば、以下で理解されるであろうように、量子プログラム実装システム1402は、1つまたは複数の通信ファブリック1440を実装することができ、1つまたは複数の間隔境界1442を実装することができ、または1つまたは複数の量子プログラムを実行することができ、あるいはその組み合わせを行うことができ、これらの各々が下で詳細に説明される。これらのさまざまなレベルのスケーリングは、量子プログラムを実行するために採用されている1つまたは複数の量子ビットの相関性がある減らされたデコヒーレンスまたはデコヒーレンス時間あるいはその両方に少なくとも部分的に起因して、量子プログラムのより高速、より効率的、またはよりエラーが生じにくい、あるいはその組み合わせである実行を可能にすることができる。上記で使用されるとき、間隔境界とは、2つ以上のノード(例えば、制御ノードまたは動作ノードあるいはその両方)で実装された連続的に繰り返す普遍的な時間間隔のことを指す。
【0219】
本明細書において使用されるとき、ノード(例えば、制御ノードまたは動作ノード)は、1つまたは複数の機械を含むことができる。1つまたは複数の機械は、コンピューティング・デバイス、汎用コンピュータ、専用コンピュータ、量子コンピューティング・デバイス(例えば、量子コンピュータ)、タブレット・コンピューティング・デバイス、ハンドヘルド・デバイス、サーバ・クラス・コンピューティング・マシンもしくはデータベースまたはその両方、ラップトップ・コンピュータ、ノートブック・コンピュータ、デスクトップ・コンピュータ、携帯電話、スマートフォン、民生用装置もしくは民生用機器またはその両方、工業用デバイスもしくは商用デバイスまたはその両方、デジタル・アシスタント、インターネットが有効化されたマルチメディア電話、または別の種類のデバイス、あるいはその組み合わせのうちの1つまたは複数を含むことができる。
【0220】
1つまたは複数の実施形態では、非限定的システム1400は、ハイブリッド・システムであることができ、したがって、量子プログラム実装システム1402などの1つまたは複数の古典的システム、および量子システム1401などの1つまたは複数の量子システムを含むことができる。1つまたは複数の他の実施形態では、量子システム1401は、非限定的システム1400から分離することができるが、非限定的システム1400と組み合わせて機能することができる。1つまたは複数の実施形態では、量子システム1401は、量子演算コンポーネント1403および量子プロセッサ1405などの、1つまたは複数の量子コンポーネントを備えることができる。量子システム101に関して上で提供された説明は、量子システム1401に当てはまることができる。同様に、量子演算コンポーネント103および量子プロセッサ105に関して上で提供された説明は、それぞれ、量子演算コンポーネント1403および量子プロセッサ1405にも当てはまることができる。
【0221】
非限定的システム1400の古典的部分を参照すると、量子プログラム実装システム102または量子プログラム実装システム902あるいはその両方の一般的な態様に関して上で提供された説明は、量子プログラム実装システム1402に当てはまることができる。1つまたは複数の実施形態では、量子プログラム実装システム1402は、プロセッサ1406またはプロセッサ1406に動作可能に接続されたコンピュータ可読メモリ1404あるいはその両方を備えることができる。プロセッサ106およびコンピュータ可読メモリ104に関して上で提供された説明は、それぞれ、プロセッサ1406およびコンピュータ可読メモリ1404にも当てはまることができる。本明細書に記載されている量子プログラム実装システム1402またはそのコンポーネントあるいはその両方は、非限定的システム1400、量子プログラム実装システム1402、またはそれらの任意のコンポーネント、もしくはそれらに結合された任意のコンポーネント、またはその両方、あるいはその組み合わせの機能を実行するために、通信可能に、電気的に、動作可能に、光学的に、または他の方法で、あるいはその組み合わせで、バス1424を介して互いに結合され得る。
【0222】
通常、量子プログラム実装システム1402は、複数の量子ビットに対する量子プログラムの実行を改良するために通信命令をコンパイルすることを容易にすることができ、普遍的な間隔境界の実装によって、複数の量子ビットに対する量子プログラムの実行中の同期を容易にすることもできる。通常、量子プログラム実装システム1402は、量子ジョブ要求を実行することを容易にすることもできる。すなわち、実行コンポーネントは、普遍的な間隔境界に従って、コンパイルされた通信ファブリックを介して、2つ以上の量子ビットに対する量子回路に関連して、量子タスクのデータ転送および動作を方向付けることができる。出力コンポーネントは、量子ジョブ要求に応答して、1つまたは複数の量子ジョブ結果を出力することができる。
【0223】
ここで量子プログラム実装システム1402をさらに詳細に参照すると、1つまたは複数の実施形態では、量子プログラム実装システム1402は、量子ジョブ・コンポーネント1408、決定コンポーネント1410、コンパイル・コンポーネント1412、間隔境界実装コンポーネント1414、実行コンポーネント1416、または出力コンポーネント1418、あるいはその組み合わせを備えることができる。
【0224】
量子ジョブ・コンポーネント1408は、要求している実体から、量子ジョブ要求1409を受信するか、ダウンロードするか、ストリーミングするか、または他の方法で取得するか、あるいはその組み合わせなどで、取得することができる。非限定的システム1400は、量子プログラム実装システム1402および量子システム1401を使用して、量子ジョブ要求1409において実装されるよう要求された1つまたは複数の量子プログラムを実行することができる。1つまたは複数の事例では、量子ジョブ要求1409は、採用する1つまたは複数の特定の量子回路に関する1つまたは複数の命令を含むことができる。
【0225】
要求された1つまたは複数の量子プログラムに関連して、決定コンポーネント1410は、1つまたは複数の量子プログラムを実装するために、1つまたは複数の量子回路を決定することができる。この決定は、量子プログラム実装システム1402または非限定的システム1400あるいはその両方の内部または外部あるいはその両方にある1つまたは複数のデータベースを検索することを含むことができる。1つまたは複数の事例では、決定コンポーネント1410は、1つまたは複数のコンパイルされた量子回路を格納するためのデータベース部分を含むことができる。
【0226】
ここでコンパイル・コンポーネント1412を参照し、本明細書では、1つまたは複数の機能を詳細に説明する前に、最初に、コンパイル・コンポーネント1412によって実行され得る1つまたは複数の機能の1つまたは複数の概要説明を始める。
【0227】
通常、コンパイル・コンポーネント1412は、下で詳細に説明される、1つまたは複数の制御ノードまたは1つまたは複数の動作ノードあるいはその両方の間のまだ決定されていないデータのスケジュールされた転送のために、通信命令をコンパイルすることができる。このコンパイルは、下で詳細に説明される、1つまたは複数の通信経路または1つまたは複数のデータ・パラメータあるいはその両方の識別を含むことができる。このコンパイルは、追加または代替あるいはその両方として、1つまたは複数の識別された通信経路に沿って1つまたは複数のデータ転送をスケジュールすることを含むことができる。このスケジューリングは、識別された1つまたは複数のデータ・パラメータに少なくとも部分的に基づくことができる。
【0228】
1つまたは複数の通信経路が識別されるか、生成されるか、またはスケジュールされるか、あるいはその組み合わせであるときに、特定の命令、測定結果、変分量子パラメータ、または同様のもの、あるいはその組み合わせなどの、1つまたは複数の量子プログラムの側面が、まだ計算されていないなど、まだ決定されていないという点において、データは、まだ決定されていないことが可能である。実際、これらの量子プログラムの側面は、量子プログラムの実行中に決定され得る。1つの例では、前の量子測定結果が分析されることが可能になり、量子プログラムを続行するためにその後の命令または量子パラメータ(例えば、変分量子パラメータ)あるいはその両方が決定されることが可能になるまで、1つまたは複数の量子ビットに対する物理パルスなどの1つまたは複数の物理的動作を操作するために、命令は事前に確立され得ない。すなわち、コンパイル・コンポーネント1412によって実際のデータ・ビットが決定されることは可能でないが、データ転送経路(通信経路)、データ単位の数、転送ごとのデータの総量、または転送のスケジュール、あるいはその組み合わせを含んでいる情報が、下で説明されるコンパイル・コンポーネント1412によって決定され得る。
【0229】
1つまたは複数の実施形態では、非限定的システム1400は、量子プログラム実装システム1402に加えて、
図14に示された制御ノード1404Aおよび1404Bなどの、1つまたは複数の古典的リソースを含むことができる。量子プログラム実装システム1402は、制御ノード1404Aおよび1404Bから分離して示されている。1つまたは複数の代替の実施形態では、量子プログラム実装システム1402は、そのような古典的リソースによって具現化されたか、またはそのような古典的リソースを具現化するか、あるいはその両方である1つまたは複数の制御ノードに含まれ得る。制御ノードは、スケジューリング、命令、データ分析、測定分析、量子パラメータの最適化、または同様のもの、あるいはその組み合わせを提供できる古典的リソースであることができる。これらの制御ノードが、ローカルに、または非中心的に、あるいはその両方で、互いに相対的に分散されることが可能であるか、または任意の2つ以上の制御ノードが、通信可能に互いに接続されることが可能であるか、あるいはその両方が可能である。1つまたは複数の他の実施形態では、1つまたは複数の制御ノードが量子リソースであることができるか、または1つまたは複数の量子コンポーネントを含むことができるか、あるいはその両方が可能であるということが、理解されるであろう。
【0230】
さらに、1つまたは複数の実施形態では、非限定的システム1400は、動作ノード1420A、1420B、および1420Cなどの、1つまたは複数の量子リソースを含むことができる。図に示されているように、量子システム1401は、動作ノード1420A、1420B、および1420Cを含むことができる。1つまたは複数の他の実施形態では、動作ノード1420A、1420B、および1420Cは、量子システム1401から分離することができるが、量子システム1401に通信可能に接続され得る。動作ノードは、パルス生成、波形生成、量子測定、または1つまたは複数の量子ビットに関連するか、もしくは1つまたは複数の量子ビットを含むか、またはその両方である他の機能、あるいはその組み合わせなどの、1つまたは複数の量子タスクを実行することができる、量子リソースであることができる。動作ノードが、ローカルに、または非中心的に、あるいはその両方で、互いに相対的に分散されることが可能であるか、または任意の2つ以上の動作ノードが、通信可能に互いに接続されることが可能であるか、あるいはその両方が可能である。1つまたは複数の他の実施形態では、1つまたは複数の動作ノードが量子リソースであることができるか、または1つまたは複数の量子コンポーネントを含むことができるか、あるいはその両方が可能であるということが、理解されるであろう。追加または代替あるいはその両方として、1つまたは複数の動作ノードが、上でリストされた制御ノードの機能のうちの1つまたは複数を提供することができるか、または1つまたは複数の制御ノードが、上でリストされた動作ノードの機能のうちの1つまたは複数を提供することができるか、あるいはその両方が可能であるということが、理解されるであろう。
【0231】
現在のシステムでは、制御ノードと動作ノードの間の例示的な情報の転送、または動作ノードと制御ノードの間の結果として得られた測定された量子ビット値の転送の遅延は、標準的であることができる。これは特に、複数の量子ビットの制御を実施するために、例示的な情報および量子ビット値などの多くのデータの側面が受け渡されている場合に当てはまる。ノード(例えば、制御ノードまたは動作ノードあるいはその両方)間の(例えば、ソフトウェアまたはハードウェアあるいはその両方を介する)ボトルネック、隘路、またはデータ収集点、あるいはその組み合わせが、データ転送の速度を制限することがある。すなわち、従来の複数のCPUの通信および管理技術は、標準的な量子ビットのデコヒーレンスを考慮することができるスケールで、データを転送すること、分析すること、または決定すること、あるいはその組み合わせが、できない可能性がある。多数の量子ビットに作用する量子プログラムにスケーリングするときに、この問題が悪化する。
【0232】
1つまたは複数の遅延を考慮すると、多量子ビット・ゲートを実装するために複数の動作ノード間の調整が利用されるなどの場合に、複数の量子ビットに対して動作する1つまたは複数の量子タスクに関するデータの転送が、少なくとも1つの動作ノードで遅延する可能性がある。これらの1つまたは複数の遅延は、次に、多量子ビット・ゲートを実装する準備ができているが、代わりに、(例えば、1つまたは複数の下流の実行時間に影響を与える)そのようなすべての動作ノードの準備もできるまで遅延している動作ノードで、さらなる遅延を引き起こすことがある。これは、量子プログラムの実行中に量子システム1401に存在するデコヒーレンスまたは他のエラー(例えば、量子ノイズ)あるいはその両方をさらに悪化させることがある。さらに、量子プログラムを実行するために複数の量子タスクが順に実行されることがあり、このようにして、各量子システム、古典的システム、またはハイブリッド・システム、あるいはその組み合わせに導入される前述の遅延、デコヒーレンス、またはエラー、あるいはその組み合わせをさらに悪化させるということが、理解されるべきである。
【0233】
これらの問題のうちの1つまたは複数を考慮するために、本明細書における1つまたは複数の実施形態は(例えば、量子プログラム実装システム1402またはコンパイル・コンポーネント1412あるいはその両方によって)、非限定的システム1400などのシステムのさまざまな制御ノードおよび動作ノード間のデータ転送のスケジューリングのために、本明細書ではコンパイルされた通信ファブリック1440と総称される通信経路の通信インフラストラクチャをコンパイルすることができる。すなわち、コンパイル・コンポーネント1412は、非限定的システム1400全体を通じたデータの転送のために、1つまたは複数の通信経路に対してデータ転送を識別することおよびスケジュールすることを含めて、1つまたは複数の通信経路をコンパイルすることができる。コンパイルされた通信ファブリック1440によって、コンパイル・コンポーネント1412は、1つまたは複数の通信経路を介して、制御ノードの互いの通信、または動作ノードのうちの1つまたは複数との制御ノードの通信、あるいはその両方を容易にすることができる。このコンパイル(例えば、識別またはスケジューリングあるいはその両方)が、下で詳細に説明される。
【0234】
通信ファブリック1440は、1つまたは複数の事例では、1つまたは複数の特定の量子プログラムの実行のために具体的にコンパイルされ得る。1つまたは複数の他の量子プログラムに関連して、同じ通信ファブリック1440または異なる通信ファブリックあるいはその両方がコンパイルされ得る。
【0235】
最初に、通常、コンパイル・コンポーネント1412は、非限定的システム1400が各量子ジョブ要求(例えば、量子ジョブ要求1409)を受信した後などの、量子プログラムの実行前に、1つまたは複数の通信経路を識別することができる。追加または代替あるいはその両方として、各量子プログラムの実行の初期化後、ただし1つまたは複数の通信経路を採用する(量子プログラムの)特定の量子タスクの実行前に、コンパイル・コンポーネント1412によって、1つまたは複数の通信経路またはそのセグメントあるいはその両方が識別され得る。
【0236】
コンパイル・コンポーネント1412は、コンパイル・コンポーネント1412に通信可能に結合された1つまたは複数の他のプログラム、データベース、アプリケーション、または同様のもの、あるいはその組み合わせを介して識別されたか、またはそれらによって利用されたか、あるいはその両方である1つまたは複数のそのような経路を検索することなどによって、1つまたは複数の通信経路を識別することができる。1つまたは複数の実施形態では、コンパイル・コンポーネント1412は、非限定的システム1400のさまざまな制御ノードまたは動作ノードあるいはその両方の間で、pingなどの1つまたは複数の信号をトリガーすることができる。受信された1つまたは複数の信号、ping、メタデータ、または他の結果、あるいはその組み合わせに基づいて、コンパイル・コンポーネント1412は、通信経路を識別することができる。同様に、コンパイル・コンポーネント1412は、さまざまな制御ノードまたは動作ノードあるいはその両方の間の、データ収集ルータなどのデータ収集点を最小限に抑えるか、または回避するか、あるいはその両方である通信経路を識別することができる。
【0237】
通信ファブリック1440の1つまたは複数の通信経路に関しては、通信ファブリック140のさまざまな機能または能力あるいはその両方に関して上で提供された説明は、通信経路1440にも当てはまることができる。したがって簡潔にするために、省略された方法で、通信ファブリック1440の1つまたは複数の機能または能力あるいはその両方が下で説明され得る。
【0238】
1つまたは複数の実施形態では、コンパイル・コンポーネント1412が、1つまたは複数の通信経路の1つまたは複数の経路の側面を識別することができるか、または生成することができるか、あるいはその両方が可能であるということも、理解されるであろう。これらの経路の側面は、1つまたは複数の端点、ファブリック・ポート・インターフェイス、またはルーティング・ブロック、あるいはその組み合わせを含むことができる。通常、コンパイル・コンポーネント1412は、非限定的システム1400が各量子ジョブ要求(例えば、量子ジョブ要求1409)を受信した後などの、量子プログラムの実行前に、1つまたは複数の経路の側面を識別することができる。追加または代替あるいはその両方として、各量子プログラムの実行の初期化後、ただし1つまたは複数の経路の側面または経路の側面の一部あるいはその両方を採用する(量子プログラムの)特定の量子タスクの実行前に、コンパイル・コンポーネント1412によって、1つまたは複数の経路の側面または経路の側面の一部あるいはその両方が識別され得る。
【0239】
コンパイル・コンポーネント1412は、少なくとも経路の側面の一部として、サーバ、ルータ、ケーブル、または物理的な通信の結び付き、あるいはその組み合わせなどを含む任意の適切なハードウェアなどの、1つまたは複数の物理的側面を識別することができる。追加または代替として、コンパイル・コンポーネント1412は、少なくとも経路の側面の一部として、1つまたは複数のソフトウェアの側面を識別することができるか、または1つまたは複数のソフトウェアの側面を生成することができるか、あるいはその両方が可能である。1つまたは複数の実施形態では、ソフトウェアの側面は、クラウド・ネットワークを含むか、またはクラウド・ネットワークの一部であることができる。したがって、コンパイル・コンポーネント1412によってコンパイルされ、非限定的システム1400に提供された通信ファブリック1440が、ソフトウェア、ハードウェア、またはハードウェアとソフトウェアの組み合わせ、あるいはその組み合わせによって実現され得るということが理解されるであろう。
【0240】
コンパイル・コンポーネント1412によって通信ファブリック1440の1つまたは複数のソフトウェアの側面の識別または生成あるいはその両方を容易にするために、非限定的システム1400に通信可能に結合された、1つまたは複数の制御ノード、動作ノード、量子プログラム実装システム1402、または他の古典的システムもしくは量子システムまたはその両方、あるいはその組み合わせに関連して、1つまたは複数のソフトウェア・アプリケーション、プログラム、またはコード、あるいはその組み合わせが、インストールされるか、または他の方法で入力されるか、あるいはその両方であることができる。すなわち、実体は、コンパイル・コンポーネント1412によって採用される1つまたは複数のソフトウェア・アプリケーション、プログラム、またはコード、あるいはその組み合わせを提供することによって、通信ファブリック1440のコンパイルを容易にすることができる。追加または代替あるいはその両方として、コンパイル・コンポーネント1412は、コンパイル・コンポーネント1412によって採用される1つまたは複数のソフトウェア・アプリケーション、プログラム、またはコード、あるいはその組み合わせの提供を容易にすることができる。
【0241】
追加または代替あるいはその両方として、コンパイル・コンポーネント1412によって通信ファブリック1440の1つまたは複数のハードウェアの側面の識別または生成あるいはその両方を容易にするために、ルータ、サーバ、ケーブル、ルーティング・ボックス、または同様のもの、あるいはその組み合わせなどの、1つまたは複数の物理的ハードウェア・コンポーネントが、非限定的システム1400に通信可能に結合された、1つまたは複数の制御ノード、動作ノード、量子プログラム実装システム1402、または他の古典的システムもしくは量子システムまたはその両方、あるいはその組み合わせの間に配置されて、提供されるか、またはインストールされるか、あるいはその両方であることができる。すなわち、実体は、コンパイル・コンポーネント1412によって採用される1つまたは複数のハードウェア・コンポーネントを提供すること、またはインストールすること、あるいはその両方によって、通信ファブリック1440のコンパイルを容易にすることができる。追加または代替あるいはその両方として、コンパイル・コンポーネント1412は、コンパイル・コンポーネント1412によって採用される1つまたは複数のハードウェア・コンポーネントの提供またはインストールあるいはその両方を容易にすることができる。
【0242】
前述のソフトウェアまたはハードウェアあるいはその両方の経路の側面の接続トポロジーは、さまざまな異なる形態をとることができる。前述したように、接続トポロジーは、ハードウェアまたはソフトウェアあるいはその両方として実現され得る。例えば、接続トポロジーは、実行される量子プログラム、または制御ノードもしくは動作ノードまたはその両方がアクセスできる(例えば、1つまたは複数の制御ノードおよび1つまたは複数の動作ノードを接続する)ハードウェアの側面もしくはソフトウェアの側面またはその両方、あるいはその組み合わせに依存することができる。1つまたは複数の接続トポロジーが、単一の通信ファブリック内で結び付けられることが可能であり、または異なる通信ファブリックが、異なる接続トポロジーを含むことができ、あるいはその両方が可能である。
【0243】
通信ファブリック1440の1つまたは複数の経路の側面のさらなる詳細に関しては、通信ファブリック140のさまざまな機能または能力あるいはその両方に関して上で提供された説明は、通信経路1440にも当てはまることができる。したがって簡潔にするために、省略された方法で、通信ファブリック1440の1つまたは複数の機能または能力あるいはその両方が下で説明され得る。
【0244】
さらに効率的な通信ファブリック1440を提供するために、コンパイル・コンポーネント1412は、識別された通信経路に沿って転送されるまだ決定されていないデータの1つまたは複数のデータ・パラメータをコンパイルすることもできる。コンパイルされた1つまたは複数のデータ・パラメータは、(例えば、データ転送ごとの)特定の数のデータ単位、またはノードの対(例えば、制御ノードまたは動作ノードあるいはその両方)の間を移動されるデータの最大サイズ(例えば、データ単位の数に含まれているビットまたは他の単位の合計)、あるいはその組み合わせを含むことができる。データの最大サイズは、量子プログラムの完全な実行の間の、任意の1つの瞬間もしくは任意の1つクロック・サイクルまたはその両方に、または任意の1つ量子タスクごとに、あるいはその組み合わせに、各通信経路で転送される最大値として決定され得る。コンパイル・コンポーネント1412は、量子プログラムの異なる量子タスクまたはクロック・サイクルあるいはその両方に関する1つまたは複数のデータ・パラメータをコンパイルすることができる。
【0245】
実際、1つまたは複数のデータ・パラメータを考慮すると、量子プログラムの実行中にデータ単位の数は変化しないが、データ単位に保持されている(例えば、ビットに含まれている)値のみが、何のデータが転送されるかに応じて変化する。例えば、量子プログラムの実行中に、量子ゲートの実装などに関する制御ノードからの量子ビット測定結果または決定情報あるいはその両方などによって、データ値が決定され得る。
【0246】
コンパイル・コンポーネント1412は、まだ決定されていないデータの送信先に関して、(例えば、1つまたは複数のデータ・パラメータを利用して)データ単位の数および最大データ・サイズを含むスケジューリング命令をコンパイルすることもできる。言い換えると、コンパイル・コンポーネント1412は、データ単位の数、最大データ・サイズ、またはデータの転送先、あるいはその組み合わせを含む、データ移動に関する1つまたは複数のデータ・パラメータをコンパイルすることができ、したがって、これらのデータ・パラメータは、量子プログラムの実行中にすべて静的であることができ、一方、実行中にデータの内容のみが変化することができる。すなわち、量子プログラムの実行前に、何の情報を渡すか、情報の行き先、およびデータを渡す方法が決定され得るが、量子プログラムが実行されているときに、転送されるデータ(例えば、データ・ビット)の内容(例えば、値)は動的に変化することができる。
【0247】
例えば、量子プログラムは、複数の動作ノードで実行される複数の量子タスクを含むことができる。量子タスクは、量子タスクが実行される特定の順序を有することができる。1つまたは複数の量子タスクは、他の量子タスクより時間がかかることがある。1つまたは複数の量子タスクは、他の量子タスクと並列に実行され得る。1つまたは複数の量子タスクは、1つまたは複数の他の量子タスクが最初に実行されるか、または開始されるか、あるいはその両方が行われるまで、実行され得ない。各動作ノードで実行される量子タスクのこの順序は、非限定的システム1400が各量子ジョブ要求(例えば、量子ジョブ要求1409)を受信した後などの、量子プログラムの実行前に、コンパイル・コンポーネント1412によってスケジュールされ得る。追加または代替あるいはその両方として、各量子プログラムの実行の初期化後、ただし1つまたは複数の特定の量子タスクの実行前に、コンパイル・コンポーネント1412によって、1つまたは複数の量子タスクがスケジュールされ得る。
【0248】
1つまたは複数の量子タスクのスケジューリングが、コンパイル・コンポーネント1412による、1つまたは複数の量子タスクによって採用されるまだ決定されていないデータの(例えば、1つまたは複数の通信経路に沿った)1つまたは複数のデータ・ルートのスケジューリングを含むことができるということが、理解されるであろう。1つまたは複数の量子タスクのスケジューリングは、1つまたは複数のデータ・ルートに沿って転送されるまだ決定されていないデータの1つまたは複数のデータ・パラメータをスケジュールすることを含むこともできる。これらの動作は、一緒に、または同時に、あるいはその両方で、完了することができる。コンパイル・コンポーネント1412によって、1つまたは複数のデータ・ルートをスケジュールするために1つまたは複数のデータ・パラメータが利用されることが可能であり、またはこの逆も同様であり、あるいはその両方が可能であるということが、理解されるであろう。
【0249】
さらに、量子プログラムの各量子タスクまたはクロック・サイクルあるいはその両方の間に転送されるデータの量ごとに、スケジューリングを実現するため、およびしたがって、関連する送信データ・ブロックおよび関連する受信データ・ブロックを決定するために、コンパイル・コンポーネント1412は、データ転送リストをコンパイルすることもできる。データ転送リストは、FPI番号(FPN)、データ単位の数における転送の長さ(LEN)、各通信ファブリックのFPI送信データ・ブロック配列へのソース識別子(SID)およびソース・オフセット(SOFF)、ならびに各通信ファブリックのFPI受信データ・ブロック配列への送信先識別子(DID)および送信先オフセットの代表的データを含む、送信先ブロックのリストを含むことができる。
【0250】
本明細書において使用されるとき、送信データ・ブロック配列は、各通信ファブリックのすべてのFPIのすべての送信データ・ブロックを含むことができる。同様に、本明細書において使用されるとき、受信データ・ブロック配列は、各通信ファブリックのすべてのFPIのすべての受信データ・ブロックを含むことができる。1つまたは複数の他の実施形態では、送信データ・ブロック配列または受信データ・ブロック配列あるいはその両方は、各通信ファブリックのすべてのFPIのすべての送信データ・ブロックまたは受信データ・ブロックより少ない送信データ・ブロックまたは受信データ・ブロックをそれぞれ含むことができる。さらに、表Iでデータ転送リストに関して上で提供された説明が、コンパイル・コンポーネント1412に関する本明細書における説明にも当てはまることができるということが、理解されるであろう。
【0251】
さらに、1つまたは複数の事例では、ブロードキャスト機能が通信ファブリック1440に追加され得る。そのような事例では、各データ転送リストのエントリが同一のFPN、LEN、SID、およびSOFFを含む場合、そのような同一のエントリは、ブロードキャスト動作として一緒にまとめられ得る。
【0252】
図14をさらに参照すると、コンパイル・コンポーネント1412は、前述の1つまたは複数の通信命令をコンパイルするため(例えば、通信ファブリックをコンパイルするため)の1つまたは複数の命令を含んでいるコンパイル・アルゴリズム1413を採用することもできる。コンパイル・アルゴリズム1413によって実行されるか、命令されるか、または指示されるか、あるいはその組み合わせが行われる動作は、1つまたは複数の量子タスクに関して、1つまたは複数の通信経路をコンパイルすること、1つまたは複数のデータ・パラメータをコンパイルすること、または1つまたは複数のデータ移動をスケジュールすること、あるいはその組み合わせを含むことができる。コンパイル・アルゴリズム1413またはコンパイル・アルゴリズム1413を実施するための命令あるいはその両方が、コンパイル・コンポーネント1412、メモリ1404、もしくは外部メモリ/ストレージ、またはその組み合わせに格納され得るということ、または関連するクラウド・コンピューティング環境、WAN、LAN、もしくは同様のもの、またはその組み合わせを介して、コンパイル・コンポーネント1412もしくは非限定的システム1400またはその両方によってアクセス可能であるということ、あるいはその両方が、理解されるであろう。さらに、コンパイル・アルゴリズム113および113Aに関して上で提供された説明が、コンパイル・アルゴリズム1413に関する本明細書における説明にも当てはまることができるということが、理解されるであろう。
【0253】
例えば、コンパイル・アルゴリズム1413は、1つまたは複数のデータ・パラメータ、ならびに(例えば、1つまたは複数の通信経路の識別中に)受信された1つまたは複数の前述の信号、メタデータ、または他の結果、あるいはその組み合わせを採用することができる。このようにして、コンパイル・コンポーネント1412は、コンパイル・アルゴリズム1413を介して提供された1つまたは複数の命令によって、1つまたは複数の通信経路に沿った1方向または両方向での1つまたは複数の異なる量のデータの転送時間を決定することができる。
【0254】
ここで間隔境界実装コンポーネント1414を参照し、
図14をさらに参照して、量子プログラム実装システム1402のさらなる機能が説明される。
【0255】
ハイブリッド古典/量子システムなどの、量子プログラムを実行している現在のシステムにおいて、1つまたは複数の量子回路の動作中に、複数のそのようなデータ転送または量子タスクあるいはその両方が、通常は開始されるか、または実行されるか、あるいはその両方が行われ得る。これらのデータ転送または量子タスクあるいはその両方は、それぞれ、完了するために、可変量の時間または異なる量の時間あるいはその両方を要することがある。したがって、1つまたは複数の他の量子タスクの完了またはデータ転送あるいはその両方と相対的な、1つの量子タスクの完了またはデータの転送あるいはその両方の遅延が、量子タスクまたはデータ転送あるいはその両方を利用しているか、または実行しているか、あるいはその両方である2つ以上のノード(例えば、古典的ノードまたは動作ノードあるいはその両方)の間の同期を減らすか、または同期の喪失を完全に引き起こすか、あるいはその両方である可能性がある。1つまたは複数の事例では、同期の喪失は、ノード(例えば、制御ノードまたは動作ノードあるいはその両方)間の(例えば、ソフトウェアまたはハードウェアあるいはその両方を介する)ボトルネック、隘路、またはデータ収集点、あるいはその組み合わせによって引き起こされることがあり、それによって、データ転送の速度を制限する。
【0256】
実際、通常はCPUが古典的リソースであることができることから、データ転送は、量子プログラムの実行中に複雑なスケジューリングを使用して、さまざまな時間に発生する可能性がある。さらに、従来の複数のCPUの通信および管理技術は、標準的な量子ビットのデコヒーレンスを考慮することができるスケールで、データを転送すること、分析すること、または決定すること、あるいはその組み合わせが、できない可能性がある。さらに、現在のシステムが、量子プログラムの実行中に1つまたは複数のデータ転送または量子タスクあるいはその両方をスケジュールするときに、スケジューリングに関連するデータまたはメタデータあるいはその両方が、データまたは通信命令あるいはその両方の転送と共に提供され、これが問題を複雑にする。すなわち、タイミング・データまたはメタ・データあるいはその両方が、データ転送サイズを増やすか、または関連するデータ転送の速度を低下させるか、あるいはその両方である可能性がある。さらに、ノード間で同期が失われ、タイミングが一致しない場合、量子タスクは、エラーもしくは失敗またはその両方を導入するか、または実験の崩壊を完全に引き起こすか、あるいはその組み合わせなど、適切に実施され得ない可能性がある。多数の量子ビットに作用する量子プログラムにスケーリングするときに、これらの問題が悪化することがある。
【0257】
これらの問題のうちの1つまたは複数を考慮するために、本明細書における1つまたは複数の実施形態は(例えば、量子プログラム実装システム1402または間隔境界実装コンポーネント1414あるいはその両方によって)、実装された間隔境界1442へのデータ転送、量子タスク、またはマルチカード動作(例えば、DACの測定トーン、ADCのキャプチャ・ウィンドウ、または同様のもの、あるいはその組み合わせ)、あるいはその組み合わせの整列を可能にすることができる間隔境界1442を実装することができる。すなわち、間隔境界1442は、データの転送をスケジュールするため、または2つ以上の動作ノード(例えば、動作ノード1420A、1420B、または1420C、あるいはその組み合わせ)で多量子ビット・ゲートを実装するなど、そのようなデータを実装するため、あるいはその両方のために、非限定的システム1400によって(例えば、実行コンポーネント1416によって)採用され得る。言い換えると、2つ以上の量子ビットに対する量子プログラムの実行中に、間隔境界実装コンポーネント1414によってノードの同期が容易にされ得る。
【0258】
実際、このようにして、関連する量子プログラムの実行中にオーバーヘッドを採用することなどがなく、制御ノード1404Aおよび1404Bまたは動作ノード1420A、1420B、および1420Cあるいはその両方の(例えば、連続的な繰り返す間隔境界の反復での)同期点が提供され得る。さらに、次の間隔境界の反復が整列を提供できることから、間隔内(例えば、間隔境界の反復の対の間)のCPUの実行において、1つまたは複数の不正確さが許容され得る。各プログラムの量子タスクの初期スケジューリングに関して、間隔境界の反復は、「バリア」ゲートを揃えるための「自然な」位置をスケジューラ/コンパイラに提供できる。本明細書において使用されるとき、「バリア」ゲートは、2つ以上の異なる量子ビット・コントローラにわたって時間調整された方法で個別の量子演算または量子演算のサブシーケンスが実行され得るように、量子プログラムが個別の量子演算間または量子演算のサブシーケンス間の整列を伴うことができる時間インスタンスである。加えて、1つまたは複数の実施形態では、拡大された非限定的システム1400(特に示されていない)は、量子ゲート動作を制御するために、プログラム可能なCPUの代わりに、ハードウェア・シーケンサを含んでいる1つまたは複数のプロセッサを含むことができる。
【0259】
間隔境界1442を実装することに関連して、本明細書における説明は、最初に、間隔境界実装コンポーネント1414を単に大まかに参照する。最初に、間隔境界実装コンポーネント1414は、1つまたは複数の量子タスクのデータの転送または動作あるいはその両方の間に経過することができる1つまたは複数の期間の決定を容易にすることができる。間隔境界実装コンポーネント1414は、この期間情報を使用して、非限定的システム1400の2つ以上のノード(例えば、制御ノード1404Aもしくは1404Bまたはその両方、または動作ノード1420A、1420B、もしくは1420C、またはその組み合わせ、あるいはその両方)で、連続的に繰り返す普遍的な間隔境界1442を実装することができる。以下では、間隔境界実装コンポーネント1414によって実行される1つまたは複数の機能、実装され得る間隔境界1442、および間隔境界1442が実装され得る制御ノードまたは動作ノードあるいはその両方に関して、詳細に説明される。
【0260】
間隔境界(例えば、間隔境界1442)を実装するために、間隔境界実装コンポーネント1414は、最初に、2つ以上のノードで連続的に繰り返されるための、可能性が高いか、推定されたか、または計算されたか、あるいはその組み合わせである最長の期間を決定することができる。すなわち、最長の期間がどの基準に基づくかを決定するために、間隔境界実装コンポーネント1414で、1つまたは複数の決定パラメータが、デフォルトで、または選択的に、あるいはその両方で、実装され得る。1つまたは複数の決定パラメータが選択的に実装される場合、実体によって、そのような選択的な実装が提供され得る。1つの実施形態では、実体は、量子プログラム実装システム1402への通信デバイスまたは任意の適切な通信接続あるいはその両方を介して、1つまたは複数の決定パラメータを実装することができる。
【0261】
示されたように、最長の期間は、1つまたは複数のさまざまな基準を有することができる。1つまたは複数の実施形態では、最長の期間は、任意の2つ(以上)のノード(例えば、古典的ノードまたは動作ノードあるいはその両方)間の任意の方向での最長のデータ転送時間に基づくことができる。1つまたは複数の実施形態では、最長の期間は、任意の2つ(以上)のノード(例えば、古典的ノードまたは動作ノードあるいはその両方)間の最長のデータ転送およびリターン・データ転送に基づくことができる。1つまたは複数の実施形態では、最長の期間は、制御ノードに基づくタスク(例えば、スケジューリング、命令、データ分析、測定分析、量子パラメータの最適化、または同様のこと、あるいはその組み合わせ)の最長のタスク完了時間に基づくことができる。1つまたは複数の実施形態では、最長の期間は、動作ノードに基づくタスク(例えば、パルス生成、波形生成、量子測定、または1つまたは複数の量子ビットに関連するか、もしくは1つまたは複数の量子ビットを含むか、またはその両方である他の機能、あるいはその組み合わせ)の最長のタスク完了時間に基づくことができる。1つまたは複数の実施形態では、最長の期間は、これらの基準のうちの2つ以上の任意の組み合わせにわたる最長の期間に基づくなど、これらの基準のうちの2つ以上に基づくことができる。
【0262】
最長の期間が前述のさまざまな基準のうちの1つまたは複数に基づく場合、間隔境界実装コンポーネント1414によって実行される「基づく」は、実際の期間、推定された期間、または1つまたは複数の精度の確率が提供された期間、あるいはその組み合わせを計算すること、または推定すること、あるいはその両方のうちの1つまたは複数を含むことができる。
【0263】
さらに、1つまたは複数の実施形態では、間隔境界実装コンポーネント1414は、コンパイル・コンポーネント1412または通信ファブリック1440あるいはその両方を使用して、最長の期間を決定することができる。例えば、コンパイル・コンポーネント1412によって決定されるとき、通信ファブリック1440を通る最悪の場合の伝搬時間が、最小の間隔境界の時間の長さとして実装され得る。
【0264】
すなわち、間隔境界の反復間の最小の時間の長さとして、最長の期間が利用され得る。実行される量子プログラムに適している場合、量子プログラム実装システム1402または間隔境界実装コンポーネント1414あるいはその両方は、最長の期間より長い間隔境界の反復間の時間の長さを採用することができる。例えば、より長い時間間隔は、量子プログラムまたは量子プログラムに含まれている1つまたは複数の量子タスクあるいはその両方を実行することの前の履歴に基づいて実行される量子プログラムに、より良く適合することができる。
【0265】
最長の期間(例えば、通信ファブリック1440を通る最悪の場合の伝搬時間)を決定するときに、間隔境界実装コンポーネント1414は、非限定的システム1400(または拡大された非限定的システムあるいはその両方)の2つ以上のノード(例えば、制御ノードまたは動作ノードあるいはその両方)で、決定された最長の期間を有する間隔境界1442を共通に設定し、トリガーすることができる。このようにして、2つ以上のノードでの多量子ビット量子演算またはデータ転送あるいはその両方の実行が揃えられ得る。
【0266】
間隔境界実装コンポーネント1414は、間隔境界1442を実装するために、同じクロック・ソースまたは実行時間あるいはその両方を採用することができる。例えば、間隔境界実装コンポーネント1414は、互いに同期される各ノードで、同じ間隔境界1442を普遍的に設定し、トリガーすることができる。1つまたは複数の実施形態では、間隔境界実装コンポーネント1414は、同じ瞬間に2つ以上のノードで、間隔境界1442を設定し、トリガーすることができる。1つまたは複数の他の実施形態では、単一のクロック・ソースまたは実行時間あるいはその両方の利用を考慮すると、間隔境界1442は、1つまたは複数の他のノードと異なる瞬間に1つまたは複数のノードで設定されるか、またはトリガーされるか、あるいはその両方であることができるが、間隔境界1442は、依然として同じように実装され、同期され得る。
【0267】
間隔境界1442は、本明細書では間隔境界の反復と呼ばれる複数の連続的に繰り返す共通の時点で、非限定的システム1400の動作ノードおよび制御ノードの各々で実装され得る。間隔境界の反復の各隣接する対は、1つまたは複数の他の待ち時間、仲裁、または他の期間、あるいはその組み合わせのない、単一の時間間隔の境界を示すことができる。すなわち、(例えば、共通の間隔境界の反復または時点で)次の時間間隔が開始する場合に、1つの時間間隔が開始することができ、各時間間隔は同じ時間の長さを有する。
【0268】
ここで、
図6、10、および11を最初に簡単に再び参照すると、上で提供された通信ファブリック140または間隔境界942あるいはその両方の機能または能力あるいはその両方のいずれかが、通信ファブリック1440または間隔境界1442あるいはその両方にもそれぞれ当てはまることができるということが、理解されるであろう。簡潔にするために、そのような機能または能力あるいはその両方は、
図14に関して本明細書において再び説明されない。
【0269】
図14を再び簡単に参照して、量子プログラム実装システム1402または非限定的システム1400あるいはその両方の1つまたは複数の追加の機能が、それらの1つまたは複数の追加のコンポーネントなどに関連して説明される。
【0270】
確立された後に、1つまたは複数の量子ビットに関連して決定された量子回路を実装するために、実行コンポーネント1416に、間隔境界実装コンポーネント1414が間隔境界1442を提供することができ、コンパイル・コンポーネント1412が通信ファブリック1440を提供することができる。間隔境界実装コンポーネント1414およびコンパイル・コンポーネント1412は、間隔境界1442および通信ファブリック1440の提供を容易にするために、実行コンポーネント1416と、直接的または間接的あるいはその両方で、通信可能に結合され得る。実行コンポーネント1416は、量子システム1401で(例えば、量子システム1401の動作ノードで)間隔境界1442および通信ファブリック1440を使用して、量子ジョブ要求1409の初期化、命令、または実施、あるいはその組み合わせを方向付けることができる。
【0271】
すなわち、通信ファブリック1440および間隔境界1442が互いに組み合わせて機能することができるということが理解されるであろう。例えば、実行コンポーネント1416は、コンパイル・コンポーネント1412によってコンパイルされたさまざまな通信命令および通信ファブリック1440を採用することができる。さまざまな通信命令は、1つまたは複数の通信経路、1つまたは複数のデータ転送スケジュール、または1つまたは複数の量子タスク・スケジュール、あるいはその組み合わせを含むことができる。同様に、実行コンポーネント1416は、間隔境界1492の連続的に繰り返す間隔境界の反復(例えば、連続的に繰り返す時点)を使用して、コンパイル・コンポーネント1412によって提供された1つまたは複数のデータ転送スケジュールまたは1つまたは複数の量子タスク・スケジュールあるいはその両方を揃えることができる。1つまたは複数の事例では、そのような量子タスクのうちの1つまたは複数は、多量子ビットの量子タスクであることができる。実行コンポーネント1416は、連続的に繰り返す時点の多数のインスタンス(例えば、2つ以上のインスタンス)で、2つ以上の量子ビットに対して、多量子ビットの量子タスクなどの同時に開始される量子演算を引き起こすことができる。
【0272】
すなわち、量子システム1401(例えば、1つまたは複数の動作ノード)は、非限定的システム1400またはコンパイル・コンポーネント1412あるいはその両方によってコンパイルされたとおりの、通信ファブリック1440の1つまたは複数のコンパイルされた通信命令に基づいて、および間隔境界1442に少なくとも部分的に基づいて、量子システム1401で量子ビットに対して量子ジョブ要求1409を実行することができる。量子システム1401は、1つまたは複数の量子測定結果1417を量子プログラム実装システム1402に、または非限定的システム1400の古典的部分に(例えば、1つまたは複数の制御ノードに)、あるいはその両方に提供することができる。完全な量子プログラムの動作後に、非限定的システム1400は、量子システム1401から1つまたは複数の最終的な量子測定結果1417を受信するか、ダウンロードするか、ストリーミングするか、または他の方法で取得するか、あるいはその組み合わせを実行することができる。
【0273】
量子プログラム実装システム1402は、出力コンポーネント1418を備えることもできる。1つまたは複数の量子ジョブ結果1419は、出力コンポーネント1418を介して非限定的システム1400から出力され得る。1つまたは複数の量子ジョブ結果1419は、1つまたは複数の量子測定結果1417を含むことができるか、もしくは1つまたは複数の量子測定結果1417に少なくとも部分的に基づくことができるか、またはその両方であることができるか、または要求している実体からの量子ジョブ要求1409に応答することができるか、あるいはその組み合わせであることができる。
【0274】
ここで
図15~17を参照すると、これらの図は、本明細書に記載された1つまたは複数の実施形態に従って、1つまたは複数の通信命令をコンパイルすることによって、量子ビットのセットに対する量子回路の動作を容易にすることができる例示的な非限定的コンピュータ実装方法1500のフロー図を共に示している。各実施形態で採用されている類似する要素またはプロセスあるいはその両方の説明の繰り返しは、簡潔にするために省略されている。
【0275】
最初に
図15の1502を参照すると、コンピュータ実装方法700は、プロセッサ(例えば、プロセッサ1406、量子プロセッサ、または同様のプロセッサ、あるいはその組み合わせ)に動作可能に結合されたシステムによって(例えば、非限定的システム1400、量子プログラム実装システム1402、または量子ジョブ要求コンポーネント1408、あるいはその組み合わせによって)、量子ジョブ要求(例えば、量子ジョブ要求1409)を取得することを含むことができる。
【0276】
1504で、コンピュータ実装方法1500は、システムによって(例えば、非限定的システム1400、量子プログラム実装システム1402、または決定コンポーネント1410、あるいはその組み合わせによって)、量子ジョブ要求(例えば、量子ジョブ要求1409)を少なくとも部分的に実装するために、量子プログラムまたは量子回路あるいはその両方を決定することを含むことができる。
【0277】
ブロック1504から、ブロック1506および継続の三角形1505によって表されたプロセスが、それぞれ、少なくとも部分的に並列に継続することができる。
【0278】
継続の三角形1505で、明確にするために、間隔境界(例えば、間隔境界1492)の決定に関連する特定のプロセスが
図16で提供される。継続の三角形1505は、ブロック1506および継続の三角形1508を回避して(例えば、少なくとも部分的にそれらと並列に継続して)、ブロック1510につながる。
【0279】
すなわち、
図16を簡単に参照すると、1505で、コンピュータ実装方法1500は、システムによって(例えば、非限定的システム1400、量子プログラム実装システム1402、または間隔境界実装コンポーネント1414、あるいはその組み合わせによって)、間隔境界(例えば、間隔境界1442)を決定することを含むことができる。
【0280】
ブロック1602および1604に示されているように、1つまたは複数のプロセスが間隔境界(例えば、間隔境界1492)の決定に含まれ得るということが、理解されるであろう。
【0281】
1602で、コンピュータ実装方法1500は、システムによって(例えば、非限定的システム1400、量子プログラム実装システム1402、または間隔境界実装コンポーネント1414、あるいはその組み合わせによって)、(例えば、量子プログラムの実行中に実行される1つまたは複数の量子タスクのデータの転送または動作あるいはその両方の間に経過することができる)1つまたは複数の期間を決定することを含むことができる。例えば、コンパイル・コンポーネント(例えば、コンパイル・コンポーネント1412)は、ブロック1506などで、通信ファブリック(例えば、通信ファブリック1440)を通る最悪の場合の伝搬時間を提供することができる。システム(例えば、非限定的システム1400、量子プログラム実装システム1402、または間隔境界実装コンポーネント1414、あるいはその組み合わせ)は、実装される間隔境界(例えば、間隔境界942)の連続的に繰り返す間隔境界の反復の各々の時間の長さとして、最悪の場合の伝搬時間を採用することができる。
【0282】
1604で、コンピュータ実装方法1500は、システムによって(例えば、非限定的システム1400、量子プログラム実装システム1402、間隔境界実装コンポーネント1414、または量子システム1401、あるいはその組み合わせによって)、決定された間隔境界の長さをテストすることを含むことができる。例えば、量子プログラムの実行中に完了される1つまたは複数のデータ転送または量子タスクあるいはその両方に関して、1つまたは複数のエラーが検出され得る。1つまたは複数のエラーは、量子プログラムの実行中に完了される1つまたは複数のデータ転送または量子タスクあるいはその両方の、間隔境界の反復の完了または間隔境界の反復の近くの完了あるいはその両方の可変の時間に関連することができる。
【0283】
図15を再び参照すると、1506で、コンピュータ実装方法1500は、システムによって(例えば、非限定的システム1400、量子プログラム実装システム1402、またはコンパイル・コンポーネント1412、あるいはその組み合わせによって)、1つまたは複数の通信命令を含んでいるなどの、通信ファブリック(例えば、通信ファブリック1440)を決定することを含むことができる。このコンパイルは、コンパイル・アルゴリズム(例えば、コンパイル・アルゴリズム1413)を使用することを含むことができる。
【0284】
このコンパイルに含まれている特定のプロセスが、継続の三角形1508で発生するように示されており、明確にするために
図17で説明される。継続の三角形1508は、ブロック1510につながる。1つまたは複数の実施形態では、三角形1508によって具現化された(例えば、
図17に示されているような)すべてのプロセスが実行され得る。1つまたは複数の他の実施形態では、継続の三角形1508によって具現化されたプロセスのうちの1つまたは複数が回避されるか、または省略されるか、あるいはその両方であることができる。
【0285】
すなわち、
図17を簡単に参照すると、この図は、
図15のコンピュータ実装方法1500の拡張を示している。
図17は、特に、1つまたは複数の通信命令のコンパイルを含むなど、通信ファブリック(例えば、通信ファブリック1440)のコンパイルの特定のプロセスなどの、
図15の継続の三角形1508で発生することができる態様を示している。1つまたは複数の通信命令は、1つまたは複数の通信経路、1つまたは複数のデータ転送スケジュール、または1つまたは複数の量子タスク・スケジュール、あるいはその組み合わせを含むことができる。
【0286】
1702で、コンピュータ実装方法1500は、システムによって(例えば、非限定的システム1400、量子プログラム実装システム1402、またはコンパイル・コンポーネント1412、あるいはその組み合わせによって)、まだ決定されていないデータの転送のために1つまたは複数の通信経路をコンパイルすることを含むことができる。すなわち、通信ファブリック(例えば、通信ファブリック1440)は、複数の通信経路などの、1つまたは複数の通信経路を含むことができる。1702でのコンパイルは、ブロック1704、1706、1708、および1710で次に提供される動作などの、1つまたは複数の動作を含むことができる。1つまたは複数の通信経路が識別されるか、生成されるか、またはスケジュールされるか、あるいはその組み合わせであるときに、特定の命令、測定結果、変分量子パラメータ、または同様のもの、あるいはその組み合わせなどの、1つまたは複数の量子プログラムの側面が、まだ計算されていないなど、まだ決定されていないという点において、データは、まだ決定されていないことが可能である。
【0287】
1704で、コンピュータ実装方法1500は、システムによって(例えば、非限定的システム1400、量子プログラム実装システム1402、またはコンパイル・コンポーネント1412、あるいはその組み合わせによって)、1つまたは複数の端点を識別するか、または生成するか、あるいはその両方を実行することを含むことができる。端点は、ハードウェアまたはソフトウェアあるいはその両方によって実現され得る。
【0288】
1706で、コンピュータ実装方法1500は、システムによって(例えば、非限定的システム1400、量子プログラム実装システム1402、またはコンパイル・コンポーネント1412、あるいはその組み合わせによって)、1つまたは複数のFPIを識別するか、または生成するか、あるいはその両方を実行することを含むことができる。FPIは、ハードウェアまたはソフトウェアあるいはその両方によって実現され得る。
【0289】
1708で、コンピュータ実装方法1500は、システムによって(例えば、非限定的システム1400、量子プログラム実装システム1402、またはコンパイル・コンポーネント1412、あるいはその組み合わせによって)、1つまたは複数のルーティング・ブロックを識別するか、または生成するか、あるいはその両方を実行することを含むことができる。ルーティング・ブロックは、ハードウェアまたはソフトウェアあるいはその両方によって実現され得る。
【0290】
1710で、コンピュータ実装方法1500は、システムによって(例えば、非限定的システム1400、量子プログラム実装システム1402、またはコンパイル・コンポーネント1412、あるいはその組み合わせによって)、1つまたは複数の端点、FPI、またはルーティング・ブロック、あるいはその組み合わせを採用するか、または接続するか、あるいはその両方を実行するなど、1つまたは複数の通信経路を識別するか、または生成するか、あるいはその両方を実行することを含むことができる。通信経路は、ハードウェアまたはソフトウェアあるいはその両方によって実現され得る。
【0291】
次に、1712で、コンピュータ実装方法1500は、システムによって(例えば、非限定的システム1400、量子プログラム実装システム1402、またはコンパイル・コンポーネント1412、あるいはその組み合わせによって)、まだ決定されていないデータの1つまたは複数のデータ・パラメータ(例えば、データ単位の数、最大データ・サイズ、またはデータ転送先、あるいはその組み合わせを含んでいる、データ移動に関する1つまたは複数のデータ・パラメータ)をコンパイルすることを含むことができる。1つまたは複数の通信経路が識別されるか、生成されるか、またはスケジュールされるか、あるいはその組み合わせであるときに、特定の命令、測定結果、変分量子パラメータ、または同様のもの、あるいはその組み合わせなどの、1つまたは複数の量子プログラムの側面が、まだ計算されていないなど、まだ決定されていないという点において、データは、まだ決定されていないことが可能である。
【0292】
1714で、コンピュータ実装方法1500は、システムによって(例えば、非限定的システム1400、量子プログラム実装システム1402、またはコンパイル・コンポーネント1412、あるいはその組み合わせによって)、(例えば、関連する量子プログラムの)1つまたは複数の量子タスクをスケジュールすることを含むことができる。量子タスクは、量子プログラムの実行のための1つまたは複数のデータ移動を含むことができる。1714でのスケジューリングは、ブロック1716および1718で次に提供されるプロセスなどの、1つまたは複数のプロセスを含むことができる。
【0293】
1716で、コンピュータ実装方法1500は、システムによって(例えば、非限定的システム1400、量子プログラム実装システム1402、またはコンパイル・コンポーネント1412、あるいはその組み合わせによって)、1つまたは複数のデータ転送リストを生成することを含むことができる。
【0294】
1718で、コンピュータ実装方法1500は、システムによって(例えば、非限定的システム1400、量子プログラム実装システム1402、またはコンパイル・コンポーネント1412、あるいはその組み合わせによって)、(例えば、1つまたは複数の通信経路または通信経路の1つまたは複数のセグメントあるいはその両方に沿って)まだ決定されていないデータの1つまたは複数のデータ・ルートをスケジュールすることを含むことができる。
【0295】
1つまたは複数の実施形態では、ブロック1714での実行は、追加または代替あるいはその両方として、システムによって(例えば、量子システム1401、量子演算コンポーネント1403、または量子プロセッサ1405、あるいはその組み合わせによって)、1つまたは複数の量子測定結果(例えば、量子測定結果1417)を出力することを含むことができる。
【0296】
図15を再び参照すると、1510で、コンピュータ実装方法1500は、システムによって(例えば、非限定的システム1400、量子プログラム実装システム1402、またはコンパイル・コンポーネント1412、あるいはその組み合わせによって)、量子プログラムの(例えば、非限定的システム1400、量子プログラム実装システム1402、または実行コンポーネント1416、あるいはその組み合わせなどへの)実行などのために、通信ファブリック(例えば、通信ファブリック1440)を提供することを含むことができる。やはり1510で、コンピュータ実装方法1500は、システムによって(例えば、非限定的システム1400、量子プログラム実装システム1402、または間隔境界実装コンポーネント1414、あるいはその組み合わせによって)、量子プログラムの(例えば、非限定的システム1400、量子プログラム実装システム1402、または実行コンポーネント1416、あるいはその組み合わせなどへの)実行などのために、間隔境界(例えば、間隔境界1442)を提供することを含むことができる。
【0297】
1512で、コンピュータ実装方法1500は、システムによって(例えば、非限定的システム1400、量子プログラム実装システム1402、間隔境界実装コンポーネント1414、または実行コンポーネント1416、あるいはその組み合わせによって)、間隔境界(例えば、間隔境界1492)を共通に設定し、トリガーすることを含むことができる。
【0298】
1514で、コンピュータ実装方法1500は、システムによって(例えば、非限定的システム1400、量子プログラム実装システム1402、実行コンポーネント1416、量子システム1401、量子演算コンポーネント1403、または量子プロセッサ1405、あるいはその組み合わせによって)、通信ファブリック(例えば、通信ファブリック140)および間隔境界(例えば、間隔境界1442)を使用して量子ジョブ要求(例えば、量子ジョブ要求1409)を実行することを含むことができる。
【0299】
この実行に含まれている特定のプロセスが、継続の三角形1516で発生するように示されており、
図16でさらに詳細に説明される。継続の三角形1516は、ブロック1518につながる。1つまたは複数の実施形態では、継続の三角形1516によって具現化された(例えば、
図16に示されているような)すべてのプロセスが実行され得る。1つまたは複数の他の実施形態では、継続の三角形1516によって具現化されたプロセスのうちの1つまたは複数が回避されるか、または省略されるか、あるいはその両方であることができる。
【0300】
図16を簡単に再び参照すると、ブロック1606、1608、1610、および1612によって具現化されたプロセスのうちの2つ以上が連続して発生することができるということが理解されるであろう。追加または代替あるいはその両方として、ブロック1606、1608、1610、および1612によって具現化されたプロセスのうちの1つまたは複数は、ブロック1606、1608、1610、および1612によって具現化されたプロセスのうちの他のプロセスと少なくとも部分的に並列に発生することができる。
【0301】
1606で、コンピュータ実装方法1500は、システムによって(例えば、非限定的システム1400、量子プログラム実装システム1402、コンパイル・コンポーネント1412、または実行コンポーネント1416、あるいはその組み合わせによって)、間隔境界の反復に揃えられた、1つまたは複数のデータ転送(例えば、通信命令、量子測定結果、量子ゲート・パラメータ、または同様のもの、あるいはその組み合わせ)、または(例えば、1つまたは複数の量子タスクの)スケジューリング、あるいはその両方を実行することを含むことができる。例えば、間隔境界の反復で、1つまたは複数のデータ転送またはスケジューリングあるいはその両方が受信されるか、送信されるか、または操作されるか、あるいはその組み合わせが実行され得る。
【0302】
1608で、コンピュータ実装方法1500は、システムによって(例えば、非限定的システム1400、量子プログラム実装システム1402、コンパイル・コンポーネント1412、または実行コンポーネント1416、あるいはその組み合わせによって)、(例えば、間隔境界1442の)間隔境界の反復に揃えられた(例えば、1つまたは複数の量子タスクの)1つまたは複数の多量子ビット・ゲートまたは結合実行ゲートあるいはその両方を実行することを含むことができる。
【0303】
1610で、コンピュータ実装方法1500は、システムによって(例えば、非限定的システム1400、量子プログラム実装システム1402、コンパイル・コンポーネント1412、または実行コンポーネント1416、あるいはその組み合わせによって)、間隔境界(例えば、間隔境界942)を使用して1つまたは複数の制御ノードまたは動作ノードあるいはその両方を再同期することを含むことができる。
【0304】
1612で、コンピュータ実装方法1500は、システムによって(例えば、非限定的システム1400、量子プログラム実装システム1402、コンパイル・コンポーネント1412、または実行コンポーネント1416、あるいはその組み合わせによって)、実装された間隔境界(例えば、間隔境界942)の1つまたは複数の間隔境界の反復を無視することを含むことができる。例えば、操作される単一量子ビット量子ゲートのシーケンスを含んでいる1つまたは複数の動作ノードは、1つまたは複数の間隔境界の反復を無視することができる。
【0305】
図15を再び参照すると、1518で、コンピュータ実装方法1500は、システムによって(例えば、非限定的システム1400、量子プログラム実装システム502、または出力コンポーネント1518、あるいはその組み合わせによって)、1つまたは複数の量子ジョブ結果(例えば、量子ジョブ結果1517)をユーザ実体などの実体などに出力することを含むことができる。
【0306】
ここで
図18を参照して、量子プログラム・スケジュール1800に関して、コンパイル・コンポーネント1412および間隔境界実装コンポーネント1414の結合された実行の代替の実装が説明される。明確にするために、量子プログラム・スケジュール1800のセクション1801が拡大されている。
【0307】
一般に、量子プログラム実装システム1402が、量子プログラムを実行するように同期的に機能することができる2つ以上の通信ファブリックまたは2つ以上の間隔境界あるいはその両方を提供し、実装することができるということが、理解されるであろう。1つまたは複数の実施形態では、間隔境界1492Aおよび1492Bは、異なる間隔境界実装コンポーネントによって実装されることが可能であり、または通信ファブリック1440Aおよび1140Bは、異なるコンパイル・コンポーネントによって生成されるか、もしくは実装されるか、またはその両方が可能であり、あるいはその組み合わせが可能である。
【0308】
さらに、
図18に関連して、上で提供された通信ファブリック140または間隔境界942あるいはその両方の機能または能力あるいはその両方のいずれかが、
図18に関して説明された通信ファブリック1440Aもしくは1440Bまたはその両方、または間隔境界1492Aもしくは1492Bまたはその両方、あるいはその両方にもそれぞれ当てはまることができるということが、理解されるであろう。
【0309】
ここで、量子プログラム・スケジュール1800に示された1つまたは複数の特定の態様を参照すると、
図18は、間隔境界1492A(
図18ではIB Aとも呼ばれる)および1492B(
図18ではIB Bとも呼ばれる)の対、ならびに通信ファブリック1440Aおよび1440Bの対の実装を含んでいる。これらの態様の各々は、単一の量子プログラムの量子プログラム・スケジュール1800の実行に使用され得る。
【0310】
図18に示されているように、採用された間隔境界1492Aおよび1492Bは、それぞれ、本明細書では間隔境界の反復と呼ばれる複数の連続的に繰り返す共通の時点で、動作ノード1420Aおよび1420Bなどの複数のノードで普遍的に実装され得る。間隔境界の反復の各隣接する対は、1つまたは複数の他の待ち時間、仲裁、または他の期間、あるいはその組み合わせのない、単一の時間間隔の境界を示すことができる。すなわち、(例えば、共通の間隔境界の反復または時点で)次の時間間隔が開始する場合に、1つの時間間隔が開始することができ、各間隔境界の各時間間隔は同じ時間の長さを有する。1つまたは複数の他の実施形態では、追加の反復またはより少ない反復が採用され得る。
図18に示されているように、間隔境界1492Aは、間隔境界1492Bより長い時間間隔を有している。
【0311】
データ転送または量子タスクの動作あるいはその両方の最長の期間などに関連して、間隔境界実装コンポーネント1414によって、各間隔境界1492Aおよび1492Bの時間の長さが決定され得る。間隔境界の反復間の最小の時間の長さとして、この最長の期間が利用され得る。実行される量子プログラムに適している場合、量子プログラム実装システム1402または間隔境界実装コンポーネント1414あるいはその両方は、最長の期間より長い間隔境界の反復間の時間の長さを採用することができる。例えば、より長い時間間隔は、量子プログラムまたは量子プログラムに含まれている1つまたは複数の量子タスクあるいはその両方を実行することの前の履歴に基づいて実行される量子プログラムに、より良く適合することができる。
【0312】
間隔境界1492Aおよび1492Bは、両方とも、1802で共通のトリガーを有することができる。しかし、他の実施形態では、別々のトリガーが使用され得る。
【0313】
各間隔境界は、異なる通信ファブリックをサポートすることができ、DACおよびADCなどの、異なるクロック・ドメインを管理することができる。示された構成では、通信ファブリック1440Aは、間隔境界1492A(
図18ではIB Aとも呼ばれる)を利用する。例えば、間隔境界の反復IB A-1でのデータ転送1804および間隔境界の反復IB A-4でのデータ転送1806を参照する。また、示された構成では、通信ファブリック1440Bは間隔境界1492B(
図18ではIB Bとも呼ばれる)を利用する。例えば、データ転送1808および1810を参照する。
【0314】
図18の例では、動作ノード1420Aが量子ビットQ[1]を制御し、動作ノード1420Bが量子ビットQ[0]を制御する。通信ファブリック1440Aまたは1440Bあるいはその両方のいずれかが、示された動作ノード1420Aおよび1420Bのうちの1つまたは両方に利用され得るということが、理解されるであろう。例えば、動作ノード1420Bからのデータ転送1808は通信ファブリック1440Bを利用し、一方、同じ動作ノード1420Bからのデータ転送1806は通信ファブリック1440Aを利用する。
【0315】
量子プログラム・スケジュール1800は、量子ビットQ[1]およびQ[0]で動作ノード1420Aおよび1420Bによってそれぞれ実行される、量子ゲート動作などの複数の量子タスクを含む。これらの量子ゲート動作のうちの1つまたは複数は、
図18に特に示されていないが、複数ゲートの動作であることができる。
【0316】
複数の通信ファブリックの使用は、量子プログラムの実行中のデータ転送をさらに効率化するという利点をもたらすことができる。例えば、1つの通信ファブリックは、別の通信ファブリックより大きい平均待ち時間を有することがある。1つの実施形態では、1つの通信ファブリックは、より大きい数のローカルなハードウェアまたはソフトウェアあるいはその両方の側面を有することがある。他の通信ファブリックは、より大きい数のグローバルに配置されたハードウェアまたはソフトウェアあるいはその両方の側面を有することがある。
【0317】
ここで
図14~18を組み合わせて参照すると、本明細書に記載された1つまたは複数の実施形態は、開示された内容を実用的応用に統合することができる。実際、本明細書において説明されるように、システム、コンピュータ実装方法、またはコンピュータ・プログラム製品、あるいはその組み合わせの形態をとることができる1つまたは複数の実施形態は、1つまたは複数の量子ビットに対する量子回路の改良された動作を容易にすることができるコンピュータ化されたツールと見なされ得る。一般に、本明細書に記載された1つまたは複数の実施形態は、量子回路を採用している量子プログラムの実行によって採用される処理能力、または生じる時間もしくはエラーまたはその両方、あるいはその組み合わせを減らすことができる。これは、特に、採用された量子ビットのデコヒーレンスに対する時間およびエラーの影響を考慮すると、コンピュータの有用な実用的応用であり、したがって、採用された量子ビットの改良された(例えば、改善されたか、または最適化されたか、あるいはその両方の)動作を容易にすることができる。これらの改良は、量子結果の精度の向上または採用された量子ビットの可用性の向上あるいはその両方を含むことができる。全体的に、そのようなコンピュータ化されたツールは、量子コンピューティングの分野における具体的な有形の技術的改善を構成することができる。
【0318】
さらに、本明細書に記載された1つまたは複数の実施形態は、開示された内容に基づいて現実世界のデバイスを制御することができる。例えば、本明細書に記載された1つまたは複数の実施形態は、量子ジョブ要求を入力として受信することができ、量子システムの1つまたは複数の量子ビットに対する、現実世界の物理パルスなどの1つまたは複数の物理的動作として、量子プログラムの実装を制御するための1つまたは複数のコンパイルされた通信命令を含んでいる、コンパイルされた通信ファブリックを第1の出力として生成することができる。さらに、本明細書に記載された1つまたは複数の実施形態は、1つまたは複数のコンパイルされた通信命令の実装を誘導するために、間隔境界を第2の出力として生成することができる。本明細書に記載された1つまたは複数の実施形態は、量子システムの現実世界の量子ビットに対する1つまたは複数の物理的動作の実行に応答して、1つまたは複数の量子結果を第3の出力として生成することができる。
【0319】
特にコンパイル・コンポーネントに関連しているように、1つまたは複数の実施形態では、量子プログラム実装システム1402およびコンパイル・コンポーネント1412を採用している非限定的システム1400は、通信命令をコンパイルすることによって、量子プログラムの実行を改良する(例えば、改善するか、または最適化するか、あるいはその両方を行う)ことができる。したがって、量子プログラムの実行中の高速なデータ転送が容易にされ得る。すなわち、コンパイル・コンポーネント1412は、単一の集中点またはグローバル共有メモリあるいはその両方との間でのデータの収集および配布という、複雑であるか、または時間がかかるか、あるいはその両方である量子プログラムの実装の問題を最小限に抑えるか、または防ぐか、あるいはその両方を行うことができる。このようにして、コンパイル・コンポーネント1412は、データの重複する転送、または並列な転送、あるいはその両方の場合においても、そのような単一の集中点またはグローバル共有メモリあるいはその両方に伴って生じる可能性がある待ち時間を最小限に抑えるか、または防ぐか、あるいはその両方を行うためのハイブリッド古典/量子システムを容易にすることができる。これは、量子プログラムの実行前に、コンパイル・コンポーネント1412が1つまたは複数の通信経路、データ・パラメータ、または量子タスク・スケジュール、あるいはその組み合わせをコンパイルすることに少なくとも部分的に起因する。
【0320】
したがって、説明される主題は、コンパイル・コンポーネント1412を採用することによって、ハイブリッド古典/量子非限定的システム1400によるジョブの実行速度における改善を引き起こすことができる。例えば、量子システム1401を採用する増大した数の量子プログラムの実行に対する高い需要が存在する場合、非限定的システム1400(例えば、量子プログラム実装システム1402またはコンパイル・コンポーネント1412あるいはその両方を含む)の使用が、量子プログラムのスケーリングされた実行を容易にし得るという結果になることができる。すなわち、1つまたは複数の量子ビットに対して量子回路を操作するために1つまたは複数の量子タスクの実行中に生じる時間またはエラーあるいはその両方を減らすことによって、1つまたは複数の量子ビットのデコヒーレンスのより遅い発生が、量子ビットに対して追加の量子プログラムが実行されることを可能にし得る。これが次に、1つまたは複数の量子ビットを備えている量子システムによる新しい量子ビットの提供における関連する減少につながることができ、その結果、新しい量子ビットの減少した提供に少なくとも部分的に起因して、量子システムの量子プロセッサの処理能力の可用性の向上につながることができる。
【0321】
さらに、例えば、量子結果、量子ゲート命令、または量子パラメータ、あるいはその組み合わせの転送および分析を伴うサイクル間のデータ移動のインターリービングおよびスケジューリングなしで、各ハイブリッド古典/量子システム(例えば、非限定的システム1400)の古典的リソースおよび量子リソースの両方の処理速度が、さらに改善され得る。そのため、非限定的システム1400(例えば、量子プログラム実装システム1402またはコンパイル・コンポーネント1412あるいはその両方を含む)は、それによって、コンパイルされた通信ファブリック(例えば、コンパイルされた通信ファブリック1440)に従って1つまたは複数の量子タスクを実行する量子処理ユニット(例えば、量子システム1401の量子プロセッサ1405)に関連する性能の向上、効率の向上、または計算コストの減少、あるいはその組み合わせを促進することができる。
【0322】
さらに、通信ファブリック1440が実現されるハードウェアまたはソフトウェアあるいはその両方が簡略化され得る。これは、量子テストの実行を計画するというさらに複雑な課題から分離された方法で、ノード間の通信を実装するという課題が分離されて解決され得るためであり得る。FPIおよびデータ転送リストのような構成概念は、特定の量子プログラムまたは実験の実行のための通信ファブリックの実装のインターフェイスおよび要件を指定することができる。したがって、通信ファブリックの実装は、量子プログラムの実行または実験のコンパイルあるいはその両方のプロセス全体内の分離して独立したプロセスであることができ、1つまたは複数の事例では、通信の伝搬全体を改善するために、通信ファブリック以外に関連する他の実験のコンパイル・プロセスと重複することができる。
【0323】
さらに、特に間隔境界実装コンポーネント1414に関連しているように、1つまたは複数の実施形態では、量子プログラム実装システム1402および間隔境界実装コンポーネント1414を採用している非限定的システム1400は、間隔境界1442を実装する(例えば、複数の制御ノードまたは動作ノードあるいはその両方で共通に設定し、トリガーする)ことによって、量子プログラムの実行を改良する(例えば、改善するか、または最適化するか、あるいはその両方を行う)ことができる。
【0324】
1つの結果として、量子プログラムの実行中の同期されたデータ転送または量子タスクあるいはその両方の動作が容易にされ得る。すなわち、間隔境界実装コンポーネント1414は、量子プログラムを実行している各ハイブリッド古典/量子システムの複数の制御ノードまたは動作ノードあるいはその両方の間でのそのようなデータ転送または量子タスクあるいはその両方の動作の同期という、複雑であるか、または時間がかかるか、あるいはその両方である量子プログラムの実装の問題を最小限に抑えるか、または防ぐか、あるいはその両方を行うことができる。特に、間隔境界実装コンポーネント1414は、ハイブリッド古典/量子システムが、大きい物理的距離に及ぶか、または任意の構成で接続されたか、あるいはその両方である複数のノード(例えば、制御または動作あるいはその両方)にわたって規則的な同期点を実装することを、可能にし得る。例えば、CPUまたは制御ノードからのデータは、IBのクロックを基準とするレジスタの方を向いている端点で読み込まれ、捕捉されることが可能であり、一方、内部の通信ファブリックの転送は、代わりに、はるかに高い周波数の通信ファブリックのクロックで発生することができる。
【0325】
別の結果として、間隔境界1442の実装によって、各量子プログラムの実行全体を通じて、複数のノードの継続的な同期が可能にされるため、同期の喪失が許容され得る。すなわち、追加の処理能力、ソフトウェア、またはハードウェア、あるいはその組み合わせが、各制御ノードまたは動作ノードあるいはその両方によって完璧な同期を維持すること以外に向けられ得る。代わりに、間隔境界の実装の一部として採用される共通の連続的に繰り返す間隔境界によって、古典的計算の可変の計算時間またはデータ転送あるいはその両方が考慮され得る。異なる動作ノードが、異なる時間に多量子ビット・ゲートを操作するために、1つまたは複数の量子パラメータなどのデータを受信することができ、さらに、多量子ビット・ゲートの動作を容易にする各動作ノードが、多量子ビット・ゲートの共通の動作のために、次の間隔境界の反復で再同期され得る。同様に、異なる制御ノードが、変化する時間に複数の動作ノードから(例えば、複数の量子ビットから)1つまたは複数の量子測定結果を受信することができ、さらに、次の間隔境界の反復で古典的計算またはデータ転送あるいはその両方を調整する(例えば、同期させる)ことができる。
【0326】
さらに別の結果として、データ転送を容易にする通信経路が、待ち時間に関して不正確であることができる。これは、パッケージまたはケーブルあるいはその両方の制約または変動あるいはその両方を有している多量子ビット・システムにおいて、固有の利点であることができる。
【0327】
間隔境界実装コンポーネント1414は、量子プログラムの実行中に待ち時間を最小限に抑えるために、ハイブリッド古典/量子システムがオーバーヘッドを採用しないか、またはほとんど採用しないことも可能にし得る。すなわち、データ転送、計算時間、量子ゲート動作時間、または関連する複合的な待ち時間、あるいはその組み合わせは、量子プログラムの実行中に計算されないこと、または推定されないこと、あるいはその両方が可能である。すなわち、量子プログラムの実行中に結合動作または多量子ビット動作あるいはその両方を実施するための別々のタイミングが防がれ得る。代わりに、間隔境界1442は、少なくとも各量子プログラムの1つまたは複数の量子タスクの初期化の前に、普遍的に設定されてトリガーされ、このようにして、各ノードで同じである複数の連続的な繰り返す間隔境界の反復を実装し、1つまたは複数の量子タスクを容易にする。
【0328】
さらに、説明された主題は、開示された間隔境界1442を採用することによって、関連する古典的ノード(例えば、古典的制御ノード)によって採用される処理能力における削減を引き起こすことができる。これは、少なくとも部分的に、量子プログラムの実行中にそのような別々のタイミングが計算されて実装されることが不可能であるためである。そのため、非限定的システム1400(例えば、量子プログラム実装システム1402または間隔境界実装コンポーネント1414あるいはその両方を含む)は、それによって、非限定的システム1400の1つまたは複数の古典的処理ユニット(CPU)に関連する性能の向上、効率の向上、または計算コストの減少、あるいはその組み合わせを促進することができる。
【0329】
さらに、間隔境界コンポーネント1414は、コンパイル・コンポーネント1412のように、量子プログラムのスケーリングされた実行を容易にすることもできる。例えば、間隔境界コンポーネント1414を採用することによって、およびしたがって、1つまたは複数の量子ビットに対して量子回路を操作するために1つまたは複数の量子タスクの実行中に生じる、可変の待ち時間を減らすこと、または取り除くこと、あるいはその両方、およびしたがって、エラーを減らすことによって、1つまたは複数の量子ビットのデコヒーレンスのより遅い発生が、量子ビットに対して追加の量子プログラムが実行されることを可能にし得る。これが次に、1つまたは複数の量子ビットを備えている量子システムによる新しい量子ビットの提供における関連する減少につながることができ、その結果、新しい量子ビットの減少した提供に少なくとも部分的に起因して、量子システムの量子プロセッサの処理能力の可用性の向上につながることができる。
【0330】
ここで、
図1~18に関して上で説明された1つまたは複数の実施形態、またはそれらの実施形態の拡張もしくは変更またはその両方、あるいはその組み合わせに適用可能なことについて説明する。システムまたはデバイスあるいはその両方は、本明細書では複数のコンポーネント間の相互作用に関して説明された(またはさらに説明される)。そのようなシステムおよびコンポーネントが、それらのコンポーネントもしくはそれらの内部で指定されたサブコンポーネント、指定されたコンポーネントもしくはサブコンポーネントまたはその両方のうちの1つまたは複数、または追加のコンポーネント、あるいはその組み合わせを含むことができるということが、理解されるべきである。サブコンポーネントは、親コンポーネント内に含まれるのではなく、他のコンポーネントに通信可能に結合されたコンポーネントとして実装され得る。1つまたは複数のコンポーネントまたはサブコンポーネントあるいはその両方を、集合的機能を提供する単一のコンポーネントに結合することができる。コンポーネントは、簡潔にするために本明細書では具体的に説明されないが、当業者によって知られている1つまたは複数の他のコンポーネントと、相互作用することができる。
【0331】
本明細書において提供されたコンピュータ実装方法は、一連の動作として示されるか、または説明されるか、あるいはその両方である。主題の革新技術が、示された動作によって、または動作の順序によって、あるいはその両方によって制限されず、例えば動作が、本明細書において提示されておらず、説明されていない他の動作と共に、1つまたは複数の順序で、または同時に、あるいはその両方で発生できるということが、理解されるべきである。さらに、開示される主題に従ってコンピュータ実装方法を実施するために、示されているすべての動作が利用されなくてもよい。加えて、当業者は、コンピュータ実装方法が、代替として、状態図を介して相互に関連する一連の状態またはイベントとして表され得るということを理解するであろう。コンピュータ実装方法をコンピュータに輸送または転送するのを容易にするために、以下および本明細書全体を通じて説明されたコンピュータ実装方法を製品に格納できるということが、さらに理解されるべきである。製品という用語は、本明細書において使用されるとき、任意のコンピュータ可読デバイスまたはコンピュータ可読ストレージ媒体からアクセスできるコンピュータ・プログラムを包含するよう意図されている。
【0332】
本明細書に記載された1つまたは複数の実施形態が、本質的にコンピュータ技術に密接に関係しており、ハイブリッド古典/量子コンピューティング環境の外側で実装され得ないということが、理解されるべきである。例えば、本明細書に記載された1つまたは複数の実施形態によって実行される1つまたは複数のプロセスは、現在のシステムまたは技術あるいはその両方と比較して、これらのデータ・パラメータをより効率的に提供することができる。これらのプロセスの実行を容易にするシステム、コンピュータ実装方法、またはコンピュータ・プログラム製品、あるいはその組み合わせは、量子計算の分野において非常に有用であり、コンピューティング環境の外側では、賢明な方法で同じように実行可能に実装され得ない。
【0333】
1つまたは複数の実施形態では、本明細書に記載されたプロセスのうちの1つまたは複数は、上で説明された1つまたは複数の技術に関連する定義されたタスクを実行するために、1つまたは複数の特殊なコンピュータ(例えば、特殊な処理ユニット、特殊な古典的コンピュータ、特殊な量子コンピュータ、特殊なハイブリッド古典/量子システム、または別の種類の特殊なコンピュータ、あるいはその組み合わせ)によって実行され得る。本明細書に記載された1つまたは複数の実施形態または実施形態のコンポーネントあるいはその両方は、前述の技術における進歩、量子コンピューティング・システム、クラウド・コンピューティング・システム、コンピュータ・アーキテクチャ、または別の技術、あるいはその組み合わせの採用によって生じる新しい問題を解決するために採用され得る。
【0334】
本明細書に記載された1つまたは複数の実施形態は、本明細書に記載された1つまたは複数の動作も実行しながら、1つまたは複数の他の機能(例えば、完全に電源が投入されるか、完全に実行されるか、または別の、あるいはその組み合わせの機能)を実行することに向けて完全に動作可能であることができる。
【0335】
次に、本明細書に記載された1つまたは複数の実施形態のその他の背景を提供するために、
図19および以下の説明は、本明細書に記載された1つまたは複数の実施形態が実装され得る適切な動作環境1900の簡単な概要を示すよう意図されている。例えば、本明細書に記載された実施形態の1つまたは複数のコンポーネントまたは他の態様あるいはその両方は、動作環境1900内で実装されるか、または動作環境1900に関連付けられ得る。さらに、1つまたは複数の実施形態は、1つまたは複数のコンピュータ上で実行されることができるコンピュータ実行可能命令の一般的状況において上で説明されたが、当業者は、実施形態が、他のプログラム・モジュールと組み合わせて、またはハードウェアとソフトウェアの組み合わせとして、あるいはその両方で実装されることも可能であるということを認識するであろう。
【0336】
通常、プログラム・モジュールは、特定のタスクを実行するか、または特定の抽象データ型を実装するか、あるいはその両方を行うルーチン、プログラム、コンポーネント、データ構造、または同様のもの、あるいはその組み合わせを含む。さらに、当業者は、本発明の方法が、シングルプロセッサ・コンピュータ・システムまたはマルチプロセッサ・コンピュータ・システム、ミニコンピュータ、メインフレーム・コンピュータ、モノのインターネット(IoT:Internet of Things)デバイス、分散コンピューティング・システムだけでなく、パーソナル・コンピュータ、ハンドヘルド・コンピューティング・デバイス、マイクロプロセッサベースのコンシューマ・エレクトロニクスまたはプログラマブル・コンシューマ・エレクトロニクス、または同様のもの、あるいはその組み合わせを含む、他のコンピュータ・システム構成を使用して実践されることが可能であり、これらの各々が1つまたは複数の関連するデバイスに動作可能に結合され得るということを理解するであろう。
【0337】
コンピューティング・デバイスは、通常、コンピュータ可読ストレージ媒体、機械可読ストレージ媒体、または通信媒体、あるいはその組み合わせを含むことができる、さまざまな媒体を含み、本明細書では、次のように2つの用語が互いに異なって使用される。コンピュータ可読ストレージ媒体または機械可読ストレージ媒体は、コンピュータによってアクセスされ得る任意の使用可能なストレージ媒体であることができ、揮発性媒体および不揮発性媒体、取り外し可能な媒体および取り外し不可能な媒体を両方とも含む。例として、コンピュータ可読ストレージ媒体または機械可読ストレージ媒体あるいはその両方は、コンピュータ可読命令または機械可読命令あるいはその両方、プログラム・モジュール、構造化データまたは非構造化データあるいはその両方などの、情報の格納のための任意の方法または技術に関連して実装され得るが、これらに限定されない。
【0338】
コンピュータ可読ストレージ媒体は、ランダム・アクセス・メモリ(RAM:random access memory)、読み取り専用メモリ(ROM:read only memory)、電気的消去可能プログラマブル読み取り専用メモリ(EEPROM:electrically erasable programmable read only memory)、フラッシュ・メモリまたは他のメモリ技術、コンパクト・ディスク読み取り専用メモリ(CD-ROM:compact disk read only memory)、デジタル・バーサタイル・ディスク(DVD:digital versatile disk)、ブルーレイ・ディスク(BD:Blu-ray disc)、もしくは他の光ディスク・ストレージ、またはその組み合わせ、磁気カセット、磁気テープ、磁気ディスク・ストレージ、もしくは他の磁気ストレージ・デバイス、またはその組み合わせ、半導体ドライブもしくは他の半導体ストレージ・デバイス、または望ましい情報を格納するために使用され得る他の有形の媒体もしくは非一過性の媒体またはその両方、あるいはその組み合わせを含むことができるが、これらに限定されない。これに関して、本明細書における「有形」または「非一過性」という用語は、ストレージ、メモリ、またはコンピュータ可読媒体に適用されるとき、それ自体が伝搬する一過性の信号のみを修飾語句として除外し、それ自体が単に伝搬する一過性の信号ではないすべての標準的なストレージ、メモリ、またはコンピュータ可読媒体に対する権利を放棄しないと理解されるべきである。
【0339】
コンピュータ可読ストレージ媒体は、媒体によって格納された情報に関するさまざまな動作のために、例えばアクセス要求、クエリ、または他のデータ検索プロトコル、あるいはその組み合わせを介して、1つまたは複数のローカル・コンピューティング・デバイスまたはリモート・コンピューティング・デバイスによってアクセスされ得る。
【0340】
通信媒体は、通常、コンピュータ可読命令、データ構造、プログラム・モジュール、あるいは他の構造化データまたは非構造化データを、変調データ信号(例えば、搬送波または他の搬送機構)などのデータ信号で具現化し、任意の情報配信または輸送媒体を含む。「変調データ信号」という用語は、1つまたは複数の信号内の情報をエンコードするような方法で設定または変更される特性のうちの1つまたは複数を有する信号のことを指す。例として、通信媒体は、有線ネットワーク、直接有線接続などの有線媒体、または音響、RF、赤外線、もしくは他のワイヤレス媒体、またはその組み合わせなどのワイヤレス媒体、あるいはその両方を含むことができるが、これらに限定されない。
【0341】
図19を再び参照すると、本明細書に記載された態様の1つまたは複数の実施形態を実装するための例示的な動作環境1900がコンピュータ1902を含んでおり、コンピュータ1902は、処理ユニット1906、システム・メモリ1904、またはシステム・バス1908、あるいはその組み合わせを含むことができる。システム・メモリ1904または処理ユニット1906の任意の態様が、非限定的システム100、900、または1400、あるいはその組み合わせのメモリ104、904、もしくは1404、またはその組み合わせ、またはプロセッサ106、906、もしくは1406、またはその組み合わせ、あるいはその両方にそれぞれ適用され得るということが、理解されるであろう。システム・メモリ1904が、メモリ104、904、もしくは1404、またはその組み合わせと組み合わせて、またはこれらのメモリの代替として、あるいはその両方で、実装され得るということも理解されるであろう。同様に、処理ユニット1906が、プロセッサ106、906、もしくは1406、またはその組み合わせと組み合わせて、またはこれらのプロセッサの代替として、あるいはその両方で、実装され得るということも理解されるであろう。
【0342】
メモリ1904は、1つまたは複数のコンピュータまたは機械あるいはその両方が読み取ることができるか、書き込むことができるか、または実行することができるか、あるいはその組み合わせが可能であるコンポーネントまたは命令あるいはその両方を格納することができ、これらのコンポーネントまたは命令あるいはその両方は、処理ユニット1906(例えば、古典的プロセッサ、量子プロセッサ、または同様のプロセッサ、あるいはその組み合わせ)によって実行された場合に、実行可能なコンポーネントまたは命令あるいはその両方よって定義された動作の実行を容易にすることができる。例えば、メモリ1904は、コンピュータまたは機械が読み取ることができるか、書き込むことができるか、または実行することができるか、あるいはその組み合わせが可能であるコンポーネントまたは命令あるいはその両方を格納することができ、これらのコンポーネントまたは命令あるいはその両方は、処理ユニット1906によって実行された場合に、1つまたは複数の実施形態の1つまたは複数の図を参照して、または参照せずに本明細書において説明されたように、非限定的システム100/100E、900/900E、もしくは1400、またはその組み合わせ、または量子プログラム実装システム102、902、もしくは1402、またはその組み合わせ、あるいはその両方に関連して本明細書において説明された1つまたは複数の機能の実行を容易にすることができる。
【0343】
メモリ1904は、1つまたは複数のメモリ・アーキテクチャを採用することができる、揮発性メモリ(例えば、ランダム・アクセス・メモリ(RAM)、スタティックRAM(SRAM:static RAM)、ダイナミックRAM(DRAM:dynamic RAM)、または同様のもの、あるいはその組み合わせ)または不揮発性メモリ(例えば、読み取り専用メモリ(ROM)、プログラマブルROM(PROM:programmable ROM)、電気的プログラマブルROM(EPROM:electrically programmable ROM)、電気的消去可能プログラマブルROM(EEPROM)、または同様のもの、あるいはその組み合わせ)あるいはその両方を含むことができる。
【0344】
処理ユニット1906は、1つまたは複数のコンピュータまたは機械あるいはその両方が読み取ることができるか、書き込むことができるか、または実行することができるか、あるいはその組み合わせが可能である、メモリ1904に格納できるコンポーネントまたは命令あるいはその両方を実装できる、プロセッサまたは電子回路あるいはその両方(例えば、古典的プロセッサ、量子プロセッサ、または同様のプロセッサ、あるいはその組み合わせ)の1つまたは複数の種類を含むことができる。例えば、処理ユニット1906は、コンピュータまたは機械あるいはその両方が読み取ることができるか、書き込むことができるか、または実行することができるか、あるいはその組み合わせが可能であるコンポーネントまたは命令あるいはその両方によって指定され得る、論理、制御、入出力(I/O:input/output)、算術、または同様のもの、あるいはその組み合わせを含むが、これらに限定されない、1つまたは複数の動作を実行することができる。1つまたは複数の実施形態では、処理ユニット1906は、1つまたは複数の市販されているプロセッサのいずれかであることができる。1つまたは複数の実施形態では、処理ユニット1906は、1つまたは複数の中央処理装置、マルチコア・プロセッサ、マイクロプロセッサ、デュアル・マイクロプロセッサ、マイクロコントローラ、システム・オン・チップ(SOC:System on a Chip)、アレイ・プロセッサ、ベクトル・プロセッサ、量子プロセッサ、または別の種類のプロセッサ、あるいはその組み合わせを含むことができる。処理ユニット1906の例が、本明細書に記載された任意の1つまたは複数の実施形態を実装するために採用され得る。
【0345】
システム・バス1908は、システム・メモリ1904を含むが、これに限定されないシステム・コンポーネントを、処理ユニット1906に結合することができる。システム・バス1908は、さまざまな市販されているバス・アーキテクチャのいずれかを使用するメモリ・バス(メモリ・コントローラを含むか、または含まない)、ペリフェラル・バス、またはローカル・バス、あるいはその組み合わせにさらに相互接続することができる複数の種類のバス構造のいずれかであることができる。システム・メモリ1904は、ROM1910またはRAM1912あるいはその両方を含むことができる。基本入出力システム(BIOS:basic input/output system)は、ROM、消去可能プログラマブル読み取り専用メモリ(EPROM)、またはEEPROM、あるいはその組み合わせなどの、不揮発性メモリに格納されることが可能であり、BIOSは、起動などの間にコンピュータ1902内の要素間で情報を転送するのに役立つ基本的なルーチンを含む。RAM1912は、データをキャッシュするためのスタティックRAMなどの高速なRAMを含むことができる。
【0346】
コンピュータ1902は、内部ハード・ディスク・ドライブ(HDD:hard disk drive)1914(例えば、EIDE、SATA)、1つまたは複数の外部ストレージ・デバイス1916(例えば、磁気フロッピー(R)・ディスク・ドライブ(FDD:magnetic floppy disk drive)、メモリ・スティックまたはフラッシュ・ドライブ・リーダ、メモリ・カード・リーダ、または同様のもの、あるいはその組み合わせ)、またはドライブ1920(例えば、CD-ROMディスク、DVD、BD、または同様のもの、あるいはその組み合わせなどのディスク1922に対して読み取りまたは書き込みを行うことができる半導体ドライブまたは光ディスク・ドライブなど)、あるいはその組み合わせを含むことができる。追加または代替あるいはその両方として、半導体ドライブが含まれている場合、ディスク1922は、分離していない限り含まれ得ない。内部HDD1914がコンピュータ1902内にあるように示されているが、内部HDD1914は、外部の適切な筐体(図示されていない)内で使用するように構成されることも可能である。さらに、動作環境1900内に示されていないが、HDD1914に加えて、またはHDD1914の代わりに、半導体ドライブ(SSD:solid state drive)が使用され得る。HDD1914、外部ストレージ・デバイス1916、およびドライブ1920は、HDDインターフェイス1924、外部ストレージ・インターフェイス1926、およびドライブ・インターフェイス1928によって、システム・バス1908にそれぞれ接続され得る。外部ドライブの実装のためのHDDインターフェイス1924は、ユニバーサル・シリアル・バス(USB:Universal Serial Bus)インターフェイス技術、および電気電子技術者協会(IEEE:Institute of Electrical and Electronics Engineers)1394インターフェイス技術のうちの少なくとも1つまたは両方を含むことができる。他の外部ドライブ接続技術が、本明細書に記載された実施形態の企図に含まれる。
【0347】
ドライブおよびそれらに関連するコンピュータ可読ストレージ媒体は、データ、データ構造、コンピュータ実行可能命令などの不揮発性ストレージを提供する。コンピュータ1902のドライブおよびストレージ媒体は、適切なデジタル形式での任意のデータの格納に対応する。上記のコンピュータ可読ストレージ媒体の説明は各種のストレージ・デバイスに言及しているが、コンピュータによって読み取ることができる他の種類のストレージ媒体が、現在存在しているか、もしくは将来開発されるかに関わらず、例示的な動作環境内で使用されることも可能であるということ、または任意のそのようなストレージ媒体が、本明細書に記載された方法を実行するためのコンピュータ実行可能命令を含むことができるということ、あるいはその両方が、当業者によって理解されるべきである。
【0348】
オペレーティング・システム1930、1つまたは複数のアプリケーション1932、他のプログラム・モジュール1934、またはプログラム・データ1936、あるいはその組み合わせを含む複数のプログラム・モジュールが、ドライブおよびRAM1912に格納され得る。オペレーティング・システム、アプリケーション、モジュール、またはデータ、あるいはその組み合わせのすべてまたは一部が、RAM1912にキャッシュされることも可能である。本明細書に記載されたシステムまたは方法あるいはその両方は、1つまたは複数の市販されているオペレーティング・システム、またはオペレーティング・システムの組み合わせ、あるいはその両方を利用して実装され得る。
【0349】
コンピュータ1902は、任意選択的に、エミュレーション技術を含むことができる。例えば、ハイパーバイザ(図示されていない)または他の媒介が、オペレーティング・システム1930のハードウェア環境をエミュレートすることができ、エミュレートされるハードウェアは、任意選択的に、
図19に示されているハードウェアと異なることができる。関連する実施形態では、オペレーティング・システム1930が、コンピュータ1902でホストされた複数の仮想マシン(VM:virtual machine)のうちの1つのVMを含むことができる。さらに、オペレーティング・システム1930は、JAVA(R)実行時環境または.NETフレームワークなどの実行時環境をアプリケーション1932に提供することができる。実行時環境は、アプリケーション1932が、実行時環境を含んでいる任意のオペレーティング・システム上で実行されることを可能にし得る、一貫性のある実行環境である。同様に、オペレーティング・システム1930はコンテナをサポートすることができ、アプリケーション1932はコンテナの形態であることができ、コンテナは、例えばアプリケーション用のコード、ランタイム、システム・ツール、システム・ライブラリ、または設定、あるいはその組み合わせを含んでいる、軽量なスタンドアロンの実行可能なソフトウェアのパッケージである。
【0350】
さらに、コンピュータ1902は、信頼できる処理モジュール(TPM:trusted processing module)などのセキュリティ・モジュールを使用して有効化され得る。例えば、TPMを使用すると、ブート・コンポーネントは、時間的に次のブート・コンポーネントをハッシュし、保護された値とのハッシュ結果の一致を待機してから、次のブート・コンポーネントを読み込む。このプロセスは、コンピュータ1902のコード実行スタック内の任意の層で行われることが可能であり、例えば、アプリケーション実行レベルで、またはオペレーティング・システム(OS:operating system)カーネル・レベルで、あるいはその両方で適用され、それによって、コード実行の任意のレベルでセキュリティを有効化する。
【0351】
実体は、1つまたは複数の有線/ワイヤレス入力デバイス(例えば、キーボード1938、タッチ・スクリーン1940、またはマウス1942などのポインティング・デバイス、あるいはその組み合わせ)を介して、コマンドまたは情報あるいはその両方をコンピュータ1902に入力するか、または送信するか、あるいはその両方を行うことができる。他の入力デバイス(図示されていない)は、マイクロホン、赤外線(IR:infrared)遠隔制御、無線周波(RF:radio frequency)遠隔制御、もしくは他の遠隔制御、またはその組み合わせ、ジョイスティック、仮想現実コントローラもしくは仮想現実ヘッドセットまたはその両方、ゲーム・パッド、タッチペン、画像入力デバイス(例えば、カメラ)、ジェスチャー・センサ入力デバイス、視覚移動センサ入力デバイス、感情もしくは顔検出デバイス、生体測定入力デバイス(例えば、指紋もしくは虹彩スキャナまたはその両方)、または同様のもの、あるいはその組み合わせを含むことができる。これらおよび他の入力デバイスは、多くの場合、システム・バス1908に結合され得る入力デバイス・インターフェイス1944を介して処理ユニット1906に接続され得るが、パラレル・ポート、IEEE1394シリアル・ポート、ゲーム・ポート、USBポート、IRインターフェイス、BLUETOOTH(R)インターフェイス、または同様のもの、あるいはその組み合わせなどの、他のインターフェイスによって接続され得る。
【0352】
モニタ1946または他の種類のディスプレイ・デバイスが、代替または追加あるいはその両方として、ビデオ・アダプタ1948などのインターフェイスを介してシステム・バス1908に接続され得る。モニタ1946に加えて、コンピュータは通常、スピーカ、プリンタ、または同様のもの、あるいはその組み合わせなどの、他の周辺出力機器(図示されていない)を含む。
【0353】
コンピュータ1902は、有線通信またはワイヤレス通信あるいはその両方を介するリモート・コンピュータ1950などの1つまたは複数のリモート・コンピュータへの論理接続を使用して、ネットワーク環境内で動作することができる。リモート・コンピュータ1950は、ワークステーション、サーバ・コンピュータ、ルータ、パーソナル・コンピュータ、ポータブル・コンピュータ、マイクロプロセッサベースのエンターテインメント機器、ピア・デバイス、または他の一般的なネットワーク・ノード、あるいはその組み合わせであることができ、通常は、コンピュータ1902に関連して説明された要素のうちの多くまたはすべてを含むが、簡潔にするために、メモリ/ストレージ・デバイス1952のみが示されている。追加または代替あるいはその両方として、コンピュータ1902は、データ・ケーブル(例えば、高精細度マルチメディア・インターフェイス(HDMI(R):High-Definition Multimedia Interface)、勧告基準(RS:recommended standard)232、イーサネット(R)・ケーブル、または同様のもの、あるいはその組み合わせ)を介して、1つまたは複数の外部のシステム、ソース、またはデバイス(例えば、古典的または量子あるいはその両方のコンピューティング・デバイス、通信デバイス、または同様のデバイス、あるいはその組み合わせ)、あるいはその組み合わせに(例えば、通信可能に、電気的に、動作可能に、光学的に、または同様に、あるいはその組み合わせで)結合され得る。
【0354】
1つまたは複数の実施形態では、ネットワークは、セルラー・ネットワーク、広域ネットワーク(WAN:wide area network)(例えば、インターネット)またはローカル・エリア・ネットワーク(LAN:local area network)を含むが、これらに限定されない、1つまたは複数の有線ネットワークまたはワイヤレス・ネットワークあるいはその両方を含むことができる。例えば、本明細書に記載された1つまたは複数の実施形態は、ワイヤレス・フィディリティ(Wi-Fi:wireless fidelity)、グローバル・システム・フォー・モバイル・コミュニケーションズ(GSM:global system for mobile communications)、ユニバーサル移動体通信システム(UMTS:universal mobile telecommunications system)、ワールドワイド・インターオペラビリティ・フォー・マイクロウェーブ・アクセス(WiMAX:worldwide interoperability for microwave access)、高速汎用パケット無線サービス(enhanced GPRS:enhanced general packet radio service)、第3世代パートナーシップ・プロジェクト(3GPP:third generation partnership project)ロング・ターム・エボリューション(LET:long term evolution)、第3世代パートナーシップ・プロジェクト2(3GPP2)ウルトラ・モバイル・ブロードバンド(UMB:ultra mobile broadband)、高速パケット・アクセス(HSPA:highspeed packet access)、Zigbeeおよび他の802.XXワイヤレス技術もしくはレガシー通信技術またはその両方、BLUETOOTH(R)、セッション開始プロトコル(SIP:Session Initiation Protocol)、ZIGBEE(R)、RF4CEプロトコル、WirelessHARTプロトコル、6LoWPAN(IPv6 over Low power Wireless Area Networks)、Z-Wave、ANT、超広帯域(UWB:ultra-wideband)標準プロトコル、または他の独自もしくは非独自またはその両方の通信プロトコル、あるいはその組み合わせを含むが、これらに限定されない、事実上任意の望ましい有線技術またはワイヤレス技術を使用して、1つまたは複数の外部のシステム、ソース、またはデバイス(例えば、コンピューティング・デバイス)、あるいはその組み合わせと通信することができる(かつ、その逆向きに通信することができる)。関連する例では、本明細書に記載された1つまたは複数の実施形態は、本明細書に記載された1つまたは複数の実施形態、および外部のシステム、ソース、またはデバイス(例えば、コンピューティング・デバイス、通信デバイス、または同様のもの、あるいはその組み合わせ)、あるいはその組み合わせの間での情報の伝達を容易にする、ハードウェア(例えば、中央処理装置(CPU:central processing unit)、トランシーバ、デコーダ、量子ハードウェア、量子プロセッサ、または同様のもの、あるいはその組み合わせ)、ソフトウェア(例えば、一連のスレッド、一連のプロセス、実行中のソフトウェア、量子パルス・スケジュール、量子回路、量子ゲート、または同様のもの、あるいはその組み合わせ)、またはハードウェアもしくはソフトウェアまたはその両方の組み合わせを含むことができる。
【0355】
図に示されている論理接続は、ローカル・エリア・ネットワーク(LAN)1954またはさらに大きいネットワーク(例えば、広域ネットワーク(WAN)1956)あるいはその両方との有線接続/ワイヤレス接続を含む。LANおよびWANネットワーク環境は、事務所および会社において一般的であることができ、イントラネットなどの企業全体のコンピュータ・ネットワークを容易にし、それらはすべて、グローバル通信ネットワーク(例えば、インターネット)に接続することができる。
【0356】
コンピュータ1902は、LANネットワーク環境内で使用された場合、有線またはワイヤレスあるいはその両方の通信ネットワーク・インターフェイスまたはアダプタ1958を介して、ローカル・ネットワーク1954に接続され得る。アダプタ1958は、LAN1954との有線通信またはワイヤレス通信あるいはその両方を容易にすることができ、LAN1954は、ワイヤレス・モードでアダプタ1958と通信するために配置されたワイヤレス・アクセス・ポイント(AP:access point)を含むこともできる。
【0357】
コンピュータ1902は、WANネットワーク環境内で使用された場合、モデム1960を含むことができ、またはインターネットを経由するなどのWAN1956を経由して通信を確立するための他の手段によって、WAN1956上の通信サーバに接続されることが可能であり、あるいはその両方が可能である。内部または外部あるいはその両方に存在する有線デバイスまたはワイヤレス・デバイスあるいはその両方であることができるモデム1960は、入力デバイス・インターフェイス1944を介してシステム・バス1908に接続され得る。ネットワーク環境内で、コンピュータ1902またはその一部に関連して示されたプログラム・モジュールは、リモート・メモリ/ストレージ・デバイス1952に格納され得る。示されているネットワーク接続が単なる例であり、コンピュータ間の通信リンクを確立する1つまたは複数の他の手段が使用され得るということが、理解されるであろう。
【0358】
コンピュータ1902は、LANネットワーク環境内またはWANネットワーク環境内のいずれかで使用された場合、前述したような外部ストレージ・デバイス1916に加えて、または外部ストレージ・デバイス1916の代わりに、あるいはその両方で、情報の格納または処理あるいはその両方の1つまたは複数の態様を提供するネットワーク仮想マシンなどの、ただしこれに限定されない、クラウド・ストレージ・システムまたは他のネットワークベースのストレージ・システムにアクセスすることができる。一般に、コンピュータ1902とクラウド・ストレージ・システムの間の接続は、例えば、それぞれアダプタ1958またはモデム1960によって、LAN1954またはWAN1956を経由して確立され得る。コンピュータ1902を関連するクラウド・ストレージ・システムに接続するときに、外部ストレージ・インターフェイス1926は、アダプタ1958またはモデム1960あるいはその両方などを用いて、他の種類の外部ストレージと同様に、クラウド・ストレージ・システムによって提供されたストレージを管理することができる。例えば、外部ストレージ・インターフェイス1926は、クラウド・ストレージ・ソースがコンピュータ1902に物理的に接続されているかのように、クラウド・ストレージ・ソースへのアクセスを提供するように構成され得る。
【0359】
コンピュータ1902は、ワイヤレス通信において動作可能に配置された任意のワイヤレス・デバイスまたは実体(例えば、プリンタ、スキャナ、デスクトップ・コンピュータまたはポータブル・コンピュータあるはその両方、ポータブル・データ・アシスタント、通信衛星、電話、またはワイヤレスで検出可能なタグに関連付けられた機器のいずれかの部品もしくは位置(例えば、キオスク、新聞売店、商品棚、または同様のもの、あるいはその組み合わせ)、あるいはその組み合わせと通信するよう機能することができる。この通信は、ワイヤレス・フィディリティ(Wi-Fi)およびBLUETOOTH(R)ワイヤレス技術を含むことができる。したがって、この通信は、従来のネットワークと同様に事前に定義された構造であるか、または単に、少なくとも2つのデバイス間のアドホック通信であることができる。
【0360】
本明細書に記載された実施形態例は、通信ネットワークを介してリンクされたリモート処理デバイスによって特定のタスクが実行される、
図20に関して下で説明される分散コンピューティング環境などの、分散コンピューティング環境(例えば、クラウド・コンピューティング環境)内で実践され得る。分散コンピューティング環境において、プログラム・モジュールは、ローカルまたはリモートあるいはその両方のメモリ・ストレージ・デバイスに配置され得る。
【0361】
例えば、本明細書に記載された1つまたは複数の実施形態または実施形態の1つまたは複数のコンポーネントは、本明細書に記載された1つまたは複数の実施形態に従って1つまたは複数の動作を実行するために、
図20を参照して、または
図21を参照して下で説明される1つまたは複数の機能的抽象レイヤ(例えば、量子ソフトウェア、または同様のもの、あるいはその両方)を参照して、あるいはその両方を参照して、下で説明されるクラウド・コンピューティング環境2050の1つまたは複数の計算リソースを採用することができる。例えば、クラウド・コンピューティング環境2050、または機能的抽象レイヤ2160、2170、2180、もしくは2190、またはその組み合わせのうちの1つまたは複数、あるいはその両方は、本明細書に記載された1つまたは複数の実施形態に従って1つまたは複数の動作を実行するために、本明細書に記載された1つまたは複数の実施形態または実施形態のコンポーネントあるいはその両方によって採用され得る、1つまたは複数の古典的コンピューティング・デバイス(例えば、古典的コンピュータ、古典的プロセッサ、仮想マシン、サーバ、または同様のもの、あるいはその組み合わせ)、量子ハードウェア、または量子ソフトウェア、あるいはその組み合わせ(例えば、量子コンピューティング・デバイス、量子コンピュータ、量子プロセッサ、量子回路シミュレーション・ソフトウェア、超伝導回路、または同様のもの、あるいはその組み合わせ)を含むことができる。例えば、本明細書に記載された1つまたは複数の実施形態または実施形態のコンポーネントあるいはその両方は、そのような1つまたは複数の古典的計算リソースまたは量子計算リソースあるいはその両方を使用して、1つまたは複数の古典的もしくは量子またはその両方の数学関数、計算、もしくは方程式、またはその組み合わせ、計算スクリプトもしくは処理スクリプトまたはその両方、アルゴリズム、モデル(例えば、人工知能(AI:artificial intelligence)モデル、機械学習(ML:machine learning)モデル、もしくは同様のモデル、またはその組み合わせ)、または本明細書に記載された1つまたは複数の実施形態に従う他の動作、あるいはその組み合わせを実行することができる。
【0362】
本明細書に記載された1つまたは複数の実施形態は、クラウド・コンピューティングに関する詳細な説明を含んでいるが、本明細書において示された内容の実装は、クラウド・コンピューティング環境に限定されないということが理解されるべきである。むしろ、本明細書に記載された1つまたは複数の実施形態は、現在既知であるか、または今後開発される任意の他の種類のコンピューティング環境と組み合わせて実装され得る。
【0363】
クラウド・コンピューティングは、構成可能な計算リソース(例えば、ネットワーク、ネットワーク帯域幅、サーバ、処理、メモリ、ストレージ、アプリケーション、仮想マシン、およびサービス)の共有プールへの便利なオンデマンドのネットワーク・アクセスを可能にするためのサービス提供モデルであり、管理上の手間またはサービス・プロバイダとのやりとりを最小限に抑えて、これらのリソースを迅速にプロビジョニングおよび解放することができる。このクラウド・モデルは、少なくとも5つの特徴、少なくとも3つのサービス・モデル、および少なくとも4つのデプロイメント・モデルを含むことができる。
【0364】
特徴は、次のとおりである。
【0365】
オンデマンドのセルフ・サービス:クラウドの利用者は、サーバの時間およびネットワーク・ストレージなどの計算能力を一方的に、サービス・プロバイダとの人間的なやりとりを必要とせず、必要に応じて自動的にプロビジョニングすることができる。
【0366】
幅広いネットワーク・アクセス:クラウドの能力は、ネットワークを経由して利用可能であり、標準的なメカニズムを使用してアクセスできるため、異種のシン・クライアントまたはシック・クライアント・プラットフォーム(例えば、携帯電話、ラップトップ、およびPDA)による利用を促進する。
【0367】
リソース・プール:プロバイダの計算リソースは、プールされ、マルチテナント・モデルを使用して複数の利用者に提供される。さまざまな物理的および仮想的リソースが、要求に従って動的に割り当ておよび再割り当てされる。場所に依存しないという感覚があり、利用者は通常、提供されるリソースの正確な場所に関して管理することも知ることもないが、さらに高い抽象レベルでは、場所(例えば、国、州、またはデータセンター、あるいはその組み合わせ)を指定できる。
【0368】
迅速な順応性:クラウドの能力は、迅速かつ柔軟に、1つまたは複数の事例では自動的にプロビジョニングされ、素早くスケールアウトし、迅速に解放されて素早くスケールインすることができる。プロビジョニングに使用できる能力は、利用者には、任意の量をいつでも無制限に購入できるように見えることができる。
【0369】
測定されるサービス:クラウド・システムは、計測機能を活用することによって、サービスの種類(例えば、ストレージ、処理、帯域幅、またはアクティブなユーザのアカウント、あるいはその組み合わせ)に適した1つまたは複数の抽象レベルで、リソースの使用を自動的に制御および最適化する。リソースの使用状況は、監視、制御、および報告されることが可能であり、利用されるサービスのプロバイダと利用者の両方に透明性を提供する。
【0370】
サービス・モデルは、次のとおりである。
【0371】
SaaS(Software as a Service):利用者に提供される能力は、クラウド・インフラストラクチャ上で稼働しているアプリケーションなどの、プロバイダのアプリケーションの利用である。それらのアプリケーションは、Webブラウザ(例えば、Webベースの電子メール)などのシン・クライアント・インターフェイスを介して、さまざまなクライアント・デバイスからアクセスできる。利用者は、ネットワーク、サーバ、オペレーティング・システム、ストレージ、または個々のアプリケーション機能、あるいはその組み合わせを含む基盤になるクラウド・インフラストラクチャを、限定的なユーザ固有のアプリケーション構成設定を行う可能性を除き、管理することも制御することもない。
【0372】
PaaS(Platform as a Service):利用者に提供される能力は、プロバイダによってサポートされるプログラミング言語およびツールを使用して作成された、利用者が作成または取得したアプリケーションをクラウド・インフラストラクチャにデプロイすることである。利用者は、ネットワーク、サーバ、オペレーティング・システム、またはストレージ、あるいはその組み合わせを含む基盤になるクラウド・インフラストラクチャを管理することも制御することもないが、デプロイされたアプリケーション、および場合によってはアプリケーション・ホスティング環境の構成を制御することができる。
【0373】
IaaS(Infrastructure as a Service):利用者に提供される能力は、処理、ストレージ、ネットワーク、または他の基本的な計算リソース、あるいはその組み合わせのプロビジョニングであり、利用者は、オペレーティング・システムおよびアプリケーションを含むことができる任意のソフトウェアをデプロイして実行できる。利用者は、基盤になるクラウド・インフラストラクチャを管理することも制御することもないが、オペレーティング・システム、ストレージ、デプロイされたアプリケーションを制御することができ、場合によっては、選択されたネットワーク・コンポーネント(例えば、ホスト・ファイアウォール)を限定的に制御できる。
【0374】
デプロイメント・モデルは、次のとおりである。
【0375】
プライベート・クラウド:このクラウド・インフラストラクチャは、組織のためにのみ運用される。組織またはサードパーティによって管理することができ、オンプレミスまたはオフプレミスに存在することができる。
【0376】
コミュニティ・クラウド:このクラウド・インフラストラクチャは、複数の組織によって共有され、関心事(例えば、任務、セキュリティ要件、ポリシー、またはコンプライアンスに関する考慮事項、あるいはその組み合わせ)を共有している特定のコミュニティをサポートする。組織またはサードパーティによって管理することができ、オンプレミスまたはオフプレミスに存在することができる。
【0377】
パブリック・クラウド:このクラウド・インフラストラクチャは、一般ユーザまたは大規模な業界団体が使用できるようになっており、クラウド・サービスを販売する組織によって所有される。
【0378】
ハイブリッド・クラウド:このクラウド・インフラストラクチャは、データとアプリケーションの移植を可能にする標準化された技術または独自の技術(例えば、クラウド間の負荷バランスを調整するためのクラウド・バースト)によって固有の実体を残したまま互いに結合された2つ以上のクラウド(プライベート、コミュニティ、またはパブリック)の複合である。
【0379】
クラウド・コンピューティング環境は、ステートレス、疎結合、モジュール性、または意味的相互運用性、あるいはその組み合わせに重点を置いたサービス指向の環境である。クラウド・コンピューティングの中心になるのは、相互接続されたノードのネットワークを含んでいるインフラストラクチャである。
【0380】
さらに、非限定的システム100/100E、900/900E、もしくは1400、またはその組み合わせ、または例示的な動作環境1900、あるいはその両方は、データ解析システム、データ処理システム、グラフ解析システム、グラフ処理システム、ビッグ・データ・システム、ソーシャル・ネットワーク・システム、音声認識システム、画像認識システム、グラフィカル・モデリング・システム、バイオインフォマティクス・システム、データ圧縮システム、人工知能システム、認証システム、構文パターン認識システム、医療システム、健康状態監視システム、ネットワーク・システム、コンピュータ・ネットワーク・システム、通信システム、ルータ・システム、サーバ・システム、高可用性サーバ・システム(例えば、電気通信サーバ・システム)、Webサーバ・システム、ファイル・サーバ・システム、データ・サーバ・システム、ディスク・アレイ・システム、電動挿入ボード・システム(powered insertion board system)、クラウドベース・システム、または同様のもの、あるいはその組み合わせに関連付けられるか、または含まれることが可能である。それに従って、非限定的システム100/100E、900/900E、もしくは1400、またはその組み合わせ、または例示的な動作環境1900、あるいはその両方は、ハードウェアまたはソフトウェアあるいはその両方を使用して、抽象的ではないか、または人間による一連の精神的活動として実行され得ないか、あるいはその両方である本質的に高度に技術的な問題を解決するために、採用され得る。
【0381】
ここで
図20に示された1つまたは複数の態様の詳細を参照すると、例示的なクラウド・コンピューティング環境2050が示されている。図示されているように、クラウド・コンピューティング環境2050は、クラウドの利用者によって使用されるローカル・コンピューティング・デバイス(例えば、パーソナル・デジタル・アシスタント(PDA:personal digital assistant)または携帯電話2054A、デスクトップ・コンピュータ2054B、ラップトップ・コンピュータ2054C、または自動車コンピュータ・システム2054N、あるいはその組み合わせなど)が通信できる1つまたは複数のクラウド・コンピューティング・ノード2010を含んでいる。
図20に示されていないが、クラウド・コンピューティング・ノード2010は、クラウドの利用者によって使用されるローカル・コンピューティング・デバイスが通信できる量子プラットフォーム(例えば、量子コンピュータ、量子ハードウェア、量子ソフトウェア、または同様のもの、あるいはその組み合わせ)をさらに備えることができる。クラウド・コンピューティング・ノード2010は、互いに通信できる。ノード2010は、1つまたは複数のネットワーク内で、本明細書において前述されたプライベート・クラウド、コミュニティ・クラウド、またはハイブリッド・クラウド、あるいはこれらの組み合わせなどに、物理的または仮想的にグループ化され得る(図示されていない)。これによって、クラウド・コンピューティング環境2050は、クラウドの利用者がローカル・コンピューティング・デバイス上でリソースを維持する必要のないインフラストラクチャ、プラットフォーム、またはSaaS、あるいはその組み合わせを提供できる。
図20に示されたコンピューティング・デバイス2054A~Nの種類は、例示のみが意図されており、クラウド・コンピューティング・ノード2010およびクラウド・コンピューティング環境2050は、任意の種類のネットワークまたはネットワーク・アドレス可能な接続(例えば、Webブラウザを使用した接続)あるいはその両方を経由して任意の種類のコンピュータ制御デバイスと通信することができると理解される。
【0382】
ここで
図21に示された1つまたは複数の態様の詳細を参照すると、クラウド・コンピューティング環境2050(
図20)によって提供される機能的抽象レイヤのセットなどの、機能的抽象レイヤのセットが示されている。本明細書に記載された1つまたは複数の実施形態は、
図21を参照して下で説明される1つまたは複数の機能的抽象レイヤ(例えば、ハードウェアおよびソフトウェア・レイヤ2160、仮想化レイヤ2170、管理レイヤ2180、またはワークロード・レイヤ2190、あるいはその組み合わせ)に関連付けられ得る。
図21に示されたコンポーネント、レイヤ、または機能、あるいはその組み合わせは、例示のみが意図されており、本明細書に記載された実施形態がこれらに限定されないということが、あらかじめ理解されるべきである。図に示されているように、次のレイヤまたは対応する機能あるいはその両方が提供される。
【0383】
ハードウェアおよびソフトウェア・レイヤ2160は、ハードウェア・コンポーネントおよびソフトウェア・コンポーネントを含むことができる。ハードウェア・コンポーネントの例としては、メインフレーム2161、RISC(Reduced Instruction Set Computer)アーキテクチャベースのサーバ2162、サーバ2163、ブレード・サーバ2164、ストレージ・デバイス2165、またはネットワークもしくはネットワーク・コンポーネントまたはその両方2166、あるいはその組み合わせが挙げられる。1つまたは複数の実施形態では、ソフトウェア・コンポーネントは、ネットワーク・アプリケーション・サーバ・ソフトウェア2167、量子プラットフォーム・ルーティング・ソフトウェア2168、または量子ソフトウェア(
図21に示されていない)、あるいはその組み合わせを含むことができる。
【0384】
仮想化レイヤ2170は、仮想サーバ2171、仮想ストレージ2172、仮想プライベート・ネットワークを含む仮想ネットワーク2173、仮想アプリケーションもしくはオペレーティング・システムまたはその両方2174、または仮想クライアント2175、あるいはその組み合わせなどの仮想的実体を提供できる抽象レイヤを備えることができる。
【0385】
一例を挙げると、管理レイヤ2180は、以下で説明される機能を提供することができる。リソース・プロビジョニング2181は、クラウド・コンピューティング環境内でタスクを実行するために利用され得る計算リソースおよび他のリソースの動的調達を行うことができる。計測および価格設定2182は、クラウド・コンピューティング環境内でリソースが利用される際のコスト追跡、またはそれらのリソースの利用に対する請求書もしくはインボイスまたはその両方の送付、あるいその両方を行うことができる。1つの例では、それらのリソースは、1つまたは複数のアプリケーション・ソフトウェア・ライセンスを含むことができる。セキュリティは、クラウドの利用者またはタスクあるいはその両方のID検証を行うとともに、データまたは他のリソースあるいはその両方の保護を行うことができる。ユーザ(または実体)ポータル2183は、クラウド・コンピューティング環境へのアクセスを利用者およびシステム管理者に提供することができる。サービス・レベル管理2184は、必要なサービス・レベルを満たすように、クラウドの計算リソースの割り当てまたは管理あるいはその両方を行うことができる。サービス水準合意(SLA:Service Level Agreement)計画および実行2185は、今後の要求が予想されるクラウドの計算リソースの事前準備および調達を、SLAに従って行うことができる。
【0386】
ワークロード・レイヤ2190は、クラウド・コンピューティング環境で利用できる機能の例を示すことができる。このレイヤから提供され得るワークロードおよび機能の非限定的な例としては、マッピングおよびナビゲーション2191、ソフトウェア開発およびライフサイクル管理2192、仮想クラスルーム教育の配信2193、データ解析処理2194、トランザクション処理2195、またはアプリケーション変換ソフトウェア2196、あるいはその組み合わせが挙げられる。
【0387】
本明細書に記載された実施形態は、任意の可能な統合の技術的詳細レベルで、システム、方法、装置、またはコンピュータ・プログラム製品、あるいはその組み合わせのうちの1つまたは複数を対象にすることができる。コンピュータ・プログラム製品は、プロセッサに、本明細書に記載された1つまたは複数の実施形態の態様を実行させるためのコンピュータ可読プログラム命令を含んでいるコンピュータ可読ストレージ媒体を含むことができる。コンピュータ可読ストレージ媒体は、命令実行デバイスによって使用するための命令を保持および格納できる有形のデバイスであることができる。コンピュータ可読ストレージ媒体は、例えば、電子ストレージ・デバイス、磁気ストレージ・デバイス、光ストレージ・デバイス、電磁ストレージ・デバイス、または半導体ストレージ・デバイス、あるいはこれらの任意の適切な組み合わせであることができるが、これらに限定されない。コンピュータ可読ストレージ媒体のさらに具体的な例の非網羅的リストは、ポータブル・フロッピー(R)・ディスク、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、読み取り専用メモリ(ROM)、消去可能プログラマブル読み取り専用メモリ(EPROMまたはフラッシュ・メモリ)、スタティック・ランダム・アクセス・メモリ(SRAM)、ポータブル・コンパクト・ディスク読み取り専用メモリ(CD-ROM)、デジタル・バーサタイル・ディスク(DVD)、メモリ・スティック、フロッピー(R)・ディスク、または命令が記録されているパンチカードもしくは溝の中の隆起構造などの機械的にエンコードされるデバイス、あるいはこれらの任意の適切な組み合わせを含むこともできる。本明細書において使用されるとき、コンピュータ可読ストレージ媒体は、電波もしくは他の自由に伝搬する電磁波またはその両方、導波管もしくは他の送信媒体を伝搬する電磁波(例えば、光ファイバ・ケーブルを通過する光パルス)またはその両方、またはワイヤを介して送信される電気信号、あるいはその組み合わせなどの,それ自体が一過性の信号であると解釈されるべきではない。
【0388】
本明細書に記載されたコンピュータ可読プログラム命令は、コンピュータ可読ストレージ媒体から各コンピューティング・デバイス/処理デバイスへ、またはネットワーク(例えば、インターネット、ローカル・エリア・ネットワーク、広域ネットワーク、またはワイヤレス・ネットワーク、あるいはその組み合わせ)を介して外部コンピュータまたは外部ストレージ・デバイスへ、あるいはその両方へダウンロードされ得る。このネットワークは、銅伝送ケーブル、光伝送ファイバ、ワイヤレス送信、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、またはエッジ・サーバ、あるいはその組み合わせを備えることができる。各コンピューティング・デバイス/処理デバイス内のネットワーク・アダプタ・カードまたはネットワーク・インターフェイスは、コンピュータ可読プログラム命令をネットワークから受信し、それらのコンピュータ可読プログラム命令を各コンピューティング・デバイス/処理デバイス内のコンピュータ可読ストレージ媒体に格納するために転送する。本明細書に記載された1つまたは複数の実施形態の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ(ISA:instruction-set-architecture)命令、マシン命令、マシン依存命令、マイクロコード、ファームウェア命令、状態設定データ、集積回路のための構成データ、ならびに/あるいはSmalltalk(R)、C++などのオブジェクト指向プログラミング言語、および/または「C」プログラミング言語および/もしくは同様のプログラミング言語などの手続き型プログラミング言語を含む1つまたは複数のプログラミング言語の任意の組み合わせで記述されたソース・コードおよび/またはオブジェクト・コードであることができる。コンピュータ可読プログラム命令は、コンピュータ上で全体的に実行すること、コンピュータ上でスタンドアロン・ソフトウェア・パッケージとして部分的に実行すること、コンピュータ上で部分的に、もしくはリモート・コンピュータ上で部分的に、またはその両方で実行すること、またはリモート・コンピュータ上もしくはサーバ上またはその両方で全体的に実行すること、あるいはその組み合わせが可能である。後者のシナリオでは、リモート・コンピュータは、ローカル・エリア・ネットワーク(LAN)もしくは広域ネットワーク(WAN)またはその両方を含む任意の種類のネットワークを介してコンピュータに接続されることが可能であり、または接続は、(例えば、インターネット・サービス・プロバイダを使用してインターネットを介して)外部コンピュータに対して行われることが可能であり、あるいはその両方が可能である。1つまたは複数の実施形態では、本明細書に記載された1つまたは複数の実施形態の態様を実行するために、例えばプログラマブル・ロジック回路、フィールドプログラマブル・ゲート・アレイ(FPGA:field-programmable gate arrays)、またはプログラマブル・ロジック・アレイ(PLA:programmable logic arrays)、あるいはその組み合わせを含む電子回路は、コンピュータ可読プログラム命令の状態情報を利用することによって、電子回路をカスタマイズするためのコンピュータ可読プログラム命令を実行することができる。
【0389】
本明細書に記載された1つまたは複数の実施形態の態様は、本明細書において、本明細書に記載された1つまたは複数の実施形態に従って、方法、装置(システム)、およびコンピュータ・プログラム製品のフローチャート図またはブロック図あるいはその両方を参照して説明される。フローチャート図またはブロック図あるいはその両方の各ブロック、ならびにフローチャート図またはブロック図あるいはその両方に含まれるブロックの組み合わせが、コンピュータ可読プログラム命令によって実装され得るということが理解されるであろう。これらのコンピュータ可読プログラム命令は、コンピュータまたは他のプログラム可能なデータ処理装置のプロセッサを介して実行される命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックに指定される機能/動作を実施する手段を作り出すことができるように、汎用コンピュータ、専用コンピュータ、または他のプログラム可能なデータ処理装置、あるいはその組み合わせのプロセッサに提供されてマシンを作り出すものであることができる。これらのコンピュータ可読プログラム命令は、命令が格納されたコンピュータ可読ストレージ媒体がフローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックに指定される機能/動作の態様を実施できる命令を含んでいる製品を含むことができるように、コンピュータ可読ストレージ媒体に格納され、コンピュータ、プログラム可能なデータ処理装置、または他のデバイス、あるいはその組み合わせに特定の方式で機能するように指示できるものであることもできる。コンピュータ可読プログラム命令は、コンピュータ上、他のプログラム可能な装置上、または他のデバイス上、あるいはその組み合わせで実行される命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックに指定される機能/動作を実施するように、コンピュータ、他のプログラム可能なデータ処理装置、または他のデバイス、あるいはその組み合わせに読み込まれることも可能であり、それによって、一連の操作可能な動作を、コンピュータ上、他のプログラム可能な装置上、またはコンピュータ実装プロセスを生成する他のデバイス上、あるいはその組み合わせで実行させる。
【0390】
図内のフローチャートおよびブロック図は、本明細書に記載された1つまたは複数の実施形態に従って、システム、コンピュータ実装可能な方法、またはコンピュータ・プログラム製品、あるいはその組み合わせの可能な実装のアーキテクチャ、機能、または動作、あるいはその組み合わせを示す。これに関連して、フローチャートまたはブロック図内の各ブロックは、規定された論理機能を実装するための1つまたは複数の実行可能な命令を含んでいる、命令のモジュール、セグメント、または部分、あるいはその組み合わせを表すことができる。1つまたは複数の代替の実装では、ブロックに示された機能は、図に示された順序とは異なる順序で発生することができる。例えば、連続して示された2つのブロックは、含まれている機能に応じて、実質的に同時に実行され得るか、または場合によっては逆の順序で実行され得るか、あるいはその両方であることができる。ブロック図もしくはフローチャート図またはその両方の各ブロック、またはブロック図もしくはフローチャート図またはその両方に含まれるブロックの組み合わせ、あるいはその両方は、規定された機能もしくは動作またはその両方を実行すること、または専用ハードウェアもしくはコンピュータ命令またはその両方の1つまたは複数の組み合わせを実行すること、あるいはその両方が可能である専用ハードウェアベースのシステムによって実装され得るということにも注意する。
【0391】
上記では、1つのコンピュータまたは複数のコンピュータあるいはその両方で実行されるコンピュータ・プログラム製品のコンピュータ実行可能命令との一般的な関連において、本主題が説明されたが、当業者は、本明細書における1つまたは複数の実施形態を1つまたは複数の他のプログラム・モジュールと組み合わせて実装することもできるということを認識するであろう。通常、プログラム・モジュールは、特定のタスクを実行するか、または特定の抽象データ型を実装するか、あるいはその両方を行うルーチン、プログラム、コンポーネント、データ構造、または同様のもの、あるいはその組み合わせを含む。さらに、当業者は、本発明のコンピュータ実装方法が、シングルプロセッサ・コンピュータ・システムもしくはマルチプロセッサ・コンピュータ・システムまたはその両方、ミニコンピューティング・デバイス、メインフレーム・コンピュータに加えて、コンピュータ、ハンドヘルド・コンピューティング・デバイス(例えば、PDA、電話)、マイクロプロセッサベースもしくはプログラム可能な家庭用電化製品もしくは産業用電子機器またはその両方、または同様のもの、あるいはその組み合わせを含む、他のコンピュータ・システム構成を使用して実践され得るということを理解するであろう。示された態様は、通信ネットワークを介してリンクされたリモート処理デバイスによってタスクが実行される、分散コンピューティング環境内で実践されることも可能である。しかし、本明細書に記載された1つまたは複数の実施形態のすべての態様ではないとしても、1つまたは複数の態様は、スタンドアロン・コンピュータ上で実践され得る。分散コンピューティング環境において、プログラム・モジュールは、ローカルおよびリモートの両方のメモリ・ストレージ・デバイスに配置され得る。
【0392】
本出願において使用されるとき、「コンポーネント」、「システム」、「プラットフォーム」、「インターフェイス」、または同様のもの、あるいはその組み合わせの用語は、1つまたは複数の特定の機能を含むコンピュータ関連の実体または操作可能なマシンに関連する実体を指すことができるか、または含むことができるか、あるいはその両方が可能である。本明細書に記載された実体は、ハードウェア、ハードウェアとソフトウェアの組み合わせ、ソフトウェア、または実行中のソフトウェアのいずれかであることができる。例えば、コンポーネントは、プロセッサ上で実行されるプロセス、プロセッサ、オブジェクト、実行ファイル、実行のスレッド、プログラム、またはコンピュータ、あるいはその組み合わせであることができるが、これらに限定されない。例として、サーバ上で実行されるアプリケーションおよびサーバの両方が、コンポーネントであることができる。1つまたは複数のコンポーネントが、プロセス内または実行のスレッド内あるいはその両方に存在することができ、コンポーネントは、1つのコンピュータ上に局在するか、または2つ以上のコンピュータ間で分散されるか、あるいはその両方が可能である。別の例では、各コンポーネントは、さまざまなデータ構造が格納されているさまざまなコンピュータ可読媒体から実行できる。コンポーネントは、1つまたは複数のデータ・パケット(例えば、ローカル・システム内または分散システム内の別のコンポーネントと情報をやりとりするか、またはインターネットなどのネットワークを経由して、信号を介して他のシステムと情報をやりとりするか、あるいはその両方によって情報をやりとりする、1つのコンポーネントからのデータ)を含んでいる信号などに従って、ローカルまたはリモートあるいはその両方のプロセスを介して通信できる。別の例として、コンポーネントは、電気または電子回路によって操作される機械的部品によって提供される特定の機能を有する装置であることができ、プロセッサによって実行されるソフトウェア・アプリケーションまたはファームウェア・アプリケーションあるいはその両方によって操作される。そのような場合、プロセッサは、装置の内部または外部あるいはその両方に存在することができ、ソフトウェア・アプリケーションまたはファームウェア・アプリケーションあるいはその両方の少なくとも一部を実行できる。さらに別の例として、コンポーネントは、機械的部品を含まない電子コンポーネントを介して特定の機能を提供する装置であることができ、それらの電子コンポーネントは、電子コンポーネントの機能の少なくとも一部を与えるソフトウェアまたはファームウェアあるいはその両方を実行するためのプロセッサまたは他の手段あるいはその両方を含むことができる。1つの態様では、コンポーネントは、例えばクラウド・コンピューティング・システム内で、仮想マシンを介して電子コンポーネントをエミュレートすることができる。
【0393】
加えて、「または」という用語は、排他的論理和ではなく、包含的論理和を意味するよう意図されている。すなわち、特に指定されない限り、または文脈から明らかでない限り、「XがAまたはBを採用する」は、自然な包含的順列のいずれかを意味するよう意図されている。すなわち、XがAを採用するか、XがBを採用するか、またはXがAおよびBの両方を採用する場合、「XがAまたはBを採用する」が、前述の事例のいずれかにおいて満たされる。さらに、本明細書および添付の図面において使用される冠詞「a」および「an」は、単数形を対象にすることが特に指定されない限り、または文脈から明らかでない限り、「1つまたは複数」を意味すると一般に解釈されるべきである。本明細書において使用されるとき、「例」または「例示的」あるいはその両方の用語は、例、事例、または実例としての役目を果たすことを意味するために使用される。誤解を避けるために、本明細書において説明された主題は、そのような例によって制限されない。加えて、「例」または「例示的」あるいはその両方として本明細書に記載された任意の態様または設計は、他の態様または設計よりも好ましいか、または有利であると必ずしも解釈されず、当業者に知られている同等の例示的な構造および技術を除外するよう意図されていない。
【0394】
本明細書において使用されるとき、「プロセッサ」という用語は、シングルコア・プロセッサ、ソフトウェアのマルチスレッド実行機能を備えるシングルプロセッサ、マルチコア・プロセッサ、ソフトウェアのマルチスレッド実行機能を備えるマルチコア・プロセッサ、ハードウェアのマルチスレッド技術を備えるマルチコア・プロセッサ、並列プラットフォーム、または分散共有メモリを備える並列プラットフォーム、あるいはその組み合わせを含むが、これらに限定されない、実質的に任意の計算処理ユニットまたはデバイスあるいはその両方を指すことができる。さらに、プロセッサは、本明細書に記載された機能を実行するように設計された、集積回路、特定用途向け集積回路(ASIC:application specific integrated circuit)、デジタル信号プロセッサ(DSP:digital signal processor)、フィールド・プログラマブル・ゲート・アレイ(FPGA)、プログラマブル・ロジック・コントローラ(PLC:programmable logic controller)、複合プログラム可能論理デバイス(CPLD:complex programmable logic device)、個別のゲートもしくはトランジスタ論理、または個別のハードウェア・コンポーネント、あるいはこれらの任意の組み合わせを指すことができる。さらに、プロセッサは、空間利用を最適化するため、または関連する機器の性能を改良するため、あるいはその両方のために、分子および量子ドットベースのトランジスタ、スイッチ、またはゲート、あるいはその組み合わせなどの、ただしこれらに限定されない、ナノスケール・アーキテクチャを利用することができる。プロセッサは、計算処理ユニットの組み合わせとして実装され得る。
【0395】
本明細書では、コンポーネントの動作および機能に関連する「ストア」、「ストレージ」、「データ・ストア」、「データ・ストレージ」、「データベース」、および実質的に任意の他の情報格納コンポーネントなどの用語は、「メモリ・コンポーネント」、「メモリ」内に具現化された実体、またはメモリを備えているコンポーネントを指すために使用される。本明細書に記載されたメモリまたはメモリ・コンポーネントあるいはその両方が、揮発性メモリまたは不揮発性メモリのいずれかであることができ、あるいは揮発性メモリおよび不揮発性メモリの両方を含むことができるということが、理解されるべきである。不揮発性メモリの例としては、読み取り専用メモリ(ROM)、プログラマブルROM(PROM)、電気的プログラマブルROM(EPROM)、電気的消去可能ROM(EEPROM)、フラッシュ・メモリ、または不揮発性ランダム・アクセス・メモリ(RAM)(例えば、強誘電体RAM(FeRAM:ferroelectric RAM))が挙げられるが、これらに限定されない。揮発性メモリは、例えば外部キャッシュ・メモリとして機能できる、RAMを含むことができる。例えばRAMは、シンクロナスRAM(SRAM)、ダイナミックRAM(DRAM)、シンクロナスDRAM(SDRAM:synchronous DRAM)、ダブル・データ・レートSDRAM(DDR SDRAM:double data rate SDRAM)、拡張SDRAM(ESDRAM:enhanced SDRAM)、シンクリンクDRAM(SLDRAM:Synchlink DRAM)、ダイレクト・ラムバスRAM(DRRAM:direct Rambus RAM)、ダイレクト・ラムバス・ダイナミックRAM(DRDRAM:direct Rambus dynamic RAM)、またはラムバス・ダイナミックRAM(RDRAM:Rambus dynamic RAM)、あるいはその組み合わせなどの、ただしこれらに限定されない、多くの形態で利用可能であることができる。さらに、本明細書におけるシステムまたはコンピュータ実装方法あるいはその両方の説明されたメモリ・コンポーネントは、これらまたは任意の他の適切な種類あるいはその両方のメモリを含むが、これらに限定されない、メモリを含むよう意図されている。
【0396】
前述した内容は、システムおよびコンピュータ実装方法の単なる例を含んでいる。当然ながら、1つまたは複数の実施形態を説明する目的で、コンポーネントまたはコンピュータ実装方法あるいはその両方の考えられるすべての組み合わせについて説明することは不可能であるが、当業者は、1つまたは複数の実施形態の多くのさらなる組み合わせまたは並べ替えあるいはその両方が可能であるということを認識できる。さらに、「含む」、「有する」、「所有する」などの用語が、発明を実施するための形態、特許請求の範囲、付録、および図面において使用される範囲では、それらの用語は、「備えている」が特許請求における暫定的な用語として使用されるときに解釈されるような、用語「備えている」と同様の方法で、包含的であるよう意図されている。
【0397】
1つまたは複数の実施形態の説明は、例示の目的で提示されているが、網羅的であることは意図されておらず、本明細書に記載された実施形態に制限されない。説明された実施形態の範囲および思想から逸脱しない多くの変更および変形が、当業者にとって明らかであろう。本明細書で使用された用語は、実施形態の原理、実際の適用、もしくは市場で見られる技術を超える技術的改善、またはその組み合わせを最も適切に説明するため、または他の当業者が本明細書に記載された実施形態を理解できるようにするため、あるいはその両方のために選択されている。
【手続補正書】
【提出日】2023-12-27
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
コンピュータ実行可能コンポーネントを格納するメモリと、
前記メモリに格納された前記コンピュータ実行可能コンポーネントを実行するプロセッサとを備えているシステムであって、前記コンピュータ実行可能コンポーネントが、
1つまたは複数の量子タスクの2つ以上のノードでの実行を揃えるように、前記2つ以上のノードで連続的に繰り返す時点を共通に設定し、トリガーする、間隔境界実装コンポーネントを含む、システム。
【請求項2】
前記コンピュータ実行可能コンポーネントが、
2つ以上の量子ビットに対する1つまたは複数の量子タスクの実行のために、前記連続的に繰り返す時点を採用する実行コンポーネントをさらに含む、請求項1に記載のシステム。
【請求項3】
前記コンピュータ実行可能コンポーネントが、
前記連続的に繰り返す時点の2つ以上のインスタンスで、2つ以上の量子ビットに対する同時に開始される量子タスクを引き起こす実行コンポーネントをさらに含む、請求項
1に記載のシステム。
【請求項4】
前記連続的に繰り返す時点の反復が、連続的に繰り返す同じ長さの時間間隔の境界を示す、請求項
1に記載のシステム。
【請求項5】
前記コンピュータ実行可能コンポーネントが、
前記2つ以上のノード間の1つまたは複数の通信経路をコンパイルするコンパイル・コンポーネント
であって、コンパイルされた前記1つまたは複数の通信経路に沿って、まだ決定されていないデータが転送される、コンパイル・コンポーネントをさらに含み、
前記連続的に繰り返す時点のうちの連続的時点間の共通の時間間隔の長さが、前記1つまたは複数の通信経路に沿った最大データ伝搬時間と少なくとも同じくらいである、請求項
1に記載のシステム。
【請求項6】
前記コンピュータ実行可能コンポーネントが、
前記1つまたは複数の量子タスクを含んでいる量子プログラムを実行するための1つまたは複数の命令をコンパイルするコンパイル・コンポーネントをさらに含み、
前記コンパイル・コンポーネントが、前記連続的に繰り返す時点と一致しない方法で前記1つまたは複数の量子タスクのうちの少なくとも1つを実行する、請求項
1に記載のシステム。
【請求項7】
前記コンピュータ実行可能コンポーネントが、
前記2つ以上のノード間の1つまたは複数の通信経路をコンパイルするコンパイル・コンポーネント
であって、コンパイルされた前記1つまたは複数の通信経路に沿って、まだ決定されていないデータが転送される、コンパイル・コンポーネントをさらに含み、
前記データのコンパイルされた転送または受信後の使用が、前記連続的に繰り返す時点の1つまたは複数の反復に揃えられる、請求項
1に記載のシステム。
【請求項8】
プロセッサに動作可能に結合されたシステムによって、1つまたは複数の量子タスクの2つ以上のノードでの実行を揃えるように、前記システムの前記2つ以上のノードで連続的に繰り返す時点を共通に設定し、トリガーすることを含む、コンピュータ実装方法。
【請求項9】
前記システムによって、2つ以上の量子ビットに対する1つまたは複数の量子タスクの実行のために、前記連続的に繰り返す時点を採用することをさらに含む、請求項8に記載のコンピュータ実装方法。
【請求項10】
前記連続的に繰り返す時点の反復が、連続的に繰り返す同じ長さの時間間隔の境界を示す、請求項
8に記載のコンピュータ実装方法。
【請求項11】
前記システムによって、前記連続的に繰り返す時点の2つ以上のインスタンスで、2つ以上の量子ビットに対する同時に開始される量子タスクを引き起こすことをさらに含む、請求項
8に記載のコンピュータ実装方法。
【請求項12】
前記システムによって
、前記2つ以上のノード間の1つまたは複数の通信経路をコンパイルすることをさらに含み、
コンパイルされた前記1つまたは複数の通信経路に沿って、データが転送され、
前記連続的に繰り返す時点のうちの連続的時点間の共通の時間間隔の長さが、前記1つまたは複数の通信経路に沿った最大データ伝搬時間と少なくとも同じくらいである、請求項
8に記載のコンピュータ実装方法。
【請求項13】
前記システムによって、前記1つまたは複数の量子タスクを含んでいる量子プログラムを実行するための1つまたは複数の命令をコンパイルすることと、
前記システムによって、前記連続的に繰り返す時点と一致しない方法で前記1つまたは複数の量子タスクのうちの少なくとも1つを実行することとをさらに含む、請求項
8に記載のコンピュータ実装方法。
【請求項14】
前記システムによって
、前記2つ以上のノード間の1つまたは複数の通信経路をコンパイルすることをさらに含み、
コンパイルされた前記1つまたは複数の通信経路に沿って、データが転送され、
前記データのコンパイルされた転送または受信後の使用が、前記連続的に繰り返す時点の1つまたは複数の反復に揃えられる、請求項
8に記載のコンピュータ実装方法。
【請求項15】
システムの2つ以上のノードでの量子タスクの制御を容易にするコンピュータ・プログラ
ムであって、
コンピュータに、
1つまたは複数の量子タスクの2つ以上のノードでの実行を揃えるように、前記システムの前記2つ以上のノードで連続的に繰り返す時点を共通に設定し、トリガーすることを実行させる、コンピュータ・プログラ
ム。
【請求項16】
前記
コンピュータに、
2つ以上の量子ビットに対する1つまたは複数の量子タスクの実行のために、前記連続的に繰り返す時点を採用することを
さらに実行させ
る、請求項15に記載のコンピュータ・プログラ
ム。
【請求項17】
前記
コンピュータに、
前記連続的に繰り返す時点の2つ以上のインスタンスで、2つ以上の量子ビットに対する同時に開始される量子タスクを引き起こすことを
さらに実行させ
る、請求項1
5に記載のコンピュータ・プログラ
ム。
【請求項18】
前記連続的に繰り返す時点の反復が、連続的に繰り返す同じ長さの時間間隔の境界を示す、請求項1
5に記載のコンピュータ・プログラ
ム。
【請求項19】
前記
コンピュータに、
前記2つ以上のノード間の1つまたは複数の通信経路をコンパイルすることを
さらに実行さ
せ、
コンパイルされた前記1つまたは複数のコンパイルされた通信経路に沿って、データが転送され、
前記連続的に繰り返す時点のうちの連続的時点間の共通の時間間隔の長さが、前記1つまたは複数の通信経路に沿った最大データ伝搬時間と少なくとも同じくらいである、請求項1
5に記載のコンピュータ・プログラ
ム。
【請求項20】
前記
コンピュータに、
前記1つまたは複数の量子タスクを含んでいる量子プログラムを実行するための1つまたは複数の命令をコンパイルすることと、
前記連続的に繰り返す時点と一致しない方法で前記1つまたは複数の量子タスクのうちの少なくとも1つを実行することとを
さらに実行させ
る、請求項1
5に記載のコンピュータ・プログラ
ム。
【国際調査報告】