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

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

▶ インターナショナル・ビジネス・マシーンズ・コーポレーションの特許一覧

<>
  • 特表-量子プログラムの実行の集中型制御 図1
  • 特表-量子プログラムの実行の集中型制御 図2
  • 特表-量子プログラムの実行の集中型制御 図3
  • 特表-量子プログラムの実行の集中型制御 図4
  • 特表-量子プログラムの実行の集中型制御 図5
  • 特表-量子プログラムの実行の集中型制御 図6
  • 特表-量子プログラムの実行の集中型制御 図7
  • 特表-量子プログラムの実行の集中型制御 図8
  • 特表-量子プログラムの実行の集中型制御 図9
  • 特表-量子プログラムの実行の集中型制御 図10
  • 特表-量子プログラムの実行の集中型制御 図11
  • 特表-量子プログラムの実行の集中型制御 図12
  • 特表-量子プログラムの実行の集中型制御 図13
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-07-30
(54)【発明の名称】量子プログラムの実行の集中型制御
(51)【国際特許分類】
   G06N 10/20 20220101AFI20240723BHJP
【FI】
G06N10/20
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2023571900
(86)(22)【出願日】2022-06-01
(85)【翻訳文提出日】2023-11-20
(86)【国際出願番号】 EP2022064987
(87)【国際公開番号】W WO2022263184
(87)【国際公開日】2022-12-22
(31)【優先権主張番号】17/348,232
(32)【優先日】2021-06-15
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.FIREWIRE
(71)【出願人】
【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレーション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
【住所又は居所原語表記】New Orchard Road, Armonk, New York 10504, United States of America
(74)【代理人】
【識別番号】100112690
【弁理士】
【氏名又は名称】太佐 種一
(74)【代理人】
【識別番号】100120710
【弁理士】
【氏名又は名称】片岡 忠彦
(72)【発明者】
【氏名】ウィレンボーグ、スコット
(72)【発明者】
【氏名】ワック、アンドリュー
(72)【発明者】
【氏名】アレクサンダー、トーマス
(72)【発明者】
【氏名】ルーディンガー、ジェフリー
(72)【発明者】
【氏名】ジョンソン、ブレイク
(72)【発明者】
【氏名】ザールミュラー、ユルゲン
(72)【発明者】
【氏名】ハーゼルホルスト、ケント
(57)【要約】
量子プログラムの実行の集中型制御のための実施形態が提供される。いくつかの実施形態では、システムは、メモリに記憶されたコンピュータ実行可能コンポーネントを実行するプロセッサを含むことができる。コンピュータ実行可能コンポーネントは、システムに対しリモートに位置する複数のコントローラ・デバイスが、互いに、およびシステムと同期するようにする、同期コンポーネントを含む。コンピュータ実行可能コンポーネントは、それぞれのキュービット・デバイスにおける1つまたは複数の測定値から結果として得られる測定データにアクセスするインジェスチョン・コンポーネントも含む。コンピュータ実行可能コンポーネントは、測定データを用いて、複数のコントローラ・デバイスのうちのそれぞれの第2のコントローラ・デバイスのための1つまたは複数の制御メッセージを生成するコンポジション・コンポーネントを更に含む。
【特許請求の範囲】
【請求項1】
システムであって、
メモリに記憶されたコンピュータ実行可能コンポーネントを実行するプロセッサを備え、前記コンピュータ実行可能コンポーネントは、
前記システムに対しリモートに位置する複数のコントローラ・デバイスが、互いに、および前記システムと同期するようにする、同期コンポーネントと、
それぞれのキュービット・デバイスにおける1つまたは複数の測定値から結果として得られる測定データにアクセスするインジェスチョン・コンポーネントと、
前記測定データを用いて、前記複数のコントローラ・デバイスのそれぞれの第2のコントローラ・デバイスのための1つまたは複数の制御メッセージを生成するコンポジション・コンポーネントであって、前記それぞれの第2のコントローラ・デバイスのうちの第1のコントローラ・デバイスは、前記それぞれのキュービット・デバイスのうちの第1のキュービット・デバイスへの信号の適用を制御する、前記コンポジション・コンポーネントと、
を備える、システム。
【請求項2】
高速のノン・ブロッキングのポイント・ツー・ポイント接続を介して、前記1つまたは複数の制御メッセージのうちの第1のメッセージを前記第1のコントローラ・デバイスに送信するメッセージング・コンポーネントを更に備える、請求項1に記載のシステム。
【請求項3】
前記コンポジション・コンポーネントは、前記第1のキュービット・デバイスにおける量子プログラムの実行中の分岐命令のための実行経路を定義する第1のペイロード・データ、または前記実行経路内の1つまたは複数の量子演算に対応するオペランド・データを定義する第2のペイロード・データのうちの少なくとも1つを有する第1のメッセージを生成する、請求項1または2に記載のシステム。
【請求項4】
前記コンポジション・コンポーネントは、量子プログラムの実行における中断に対応する未来の作動時間を定義するペイロード・データを有する第1のメッセージを生成する、請求項1ないし3のいずれか一項に記載のシステム。
【請求項5】
量子プログラムを定義するデータを前記複数のコントローラ・デバイスに送信するコンパイル・コンポーネントを更に備え、前記複数のコントローラ・デバイスは、前記それぞれのキュービット・デバイスを含む複数のキュービット・デバイスの各々へのそれぞれの信号の適用を制御する、請求項1ないし4のいずれか一項に記載のシステム。
【請求項6】
前記コンポジション・コンポーネントは、前記複数のキュービット・デバイスにおける前記量子プログラムの実行を開始するために、複数の第2の制御メッセージを生成し、
前記システムは、高速のノン・ブロッキングのポイント・ツー・ポイント接続を介して、前記複数の制御メッセージのうちの第1のメッセージを前記複数のコントローラ・デバイスのうちの第1のコントローラ・デバイスに送信するメッセージング・コンポーネントを更に備える、請求項5に記載のシステム。
【請求項7】
前記システムと、前記複数のコントローラ・デバイスのうちの第1のコントローラ・デバイスとを、第1の高速のノン・ブロッキングのポイント・ツー・ポイント接続を介して機能的に結合し、更に、前記システムと、前記複数のコントローラ・デバイスのうちの第2のコントローラ・デバイスとを、第2の高速のノン・ブロッキングのポイント・ツー・ポイント接続を介して機能的に結合する通信ネットワークを更に備える、請求項5または6に記載のシステム。
【請求項8】
コンピュータ実装方法であって、
プロセッサに作動的に結合されたシステムによって、前記システムに対しリモートに位置する複数のコントローラ・デバイスが、互いに、および前記システムと同期するようにすることと、
前記システムによって、それぞれのキュービット・デバイスにおける1つまたは複数の測定値から結果として得られる測定データにアクセスすることと、
前記システムによって、前記測定データを用いて、前記複数のコントローラ・デバイスのそれぞれの第2のコントローラ・デバイスのための1つまたは複数の制御メッセージを生成することであって、前記それぞれの第2のコントローラ・デバイスのうちの第1のコントローラ・デバイスは、前記それぞれのキュービット・デバイスのうちの第1のキュービット・デバイスへの信号の適用を制御することと、
を含む、コンピュータ実装方法。
【請求項9】
前記システムによって、高速のノン・ブロッキングのポイント・ツー・ポイント接続を介して、前記1つまたは複数の制御メッセージのうちの第1のメッセージを前記第1のコントローラ・デバイスに送信することを更に含む、請求項8に記載のコンピュータ実装方法。
【請求項10】
前記1つまたは複数の制御メッセージを生成することは、前記第1のキュービット・デバイスにおける量子プログラムの実行中の分岐命令のための実行経路を定義する第1のペイロード・データ、または前記実行経路内の1つまたは複数の量子演算に対応するオペランド・データを定義する第2のペイロード・データのうちの少なくとも1つを有する第1のメッセージを生成することを含む、請求項8または9に記載のコンピュータ実装方法。
【請求項11】
前記1つまたは複数の制御メッセージを生成することは、量子プログラムの実行における中断に対応する未来の作動時間を定義するペイロード・データを有する第1のメッセージを生成することを含む、請求項8ないし10のいずれか一項に記載のコンピュータ実装方法。
【請求項12】
前記それぞれのキュービット・デバイスを含む複数のキュービット・デバイスにおいて量子プログラムの実行を開始するために複数の第2の制御メッセージを生成することを更に含み、前記コンピュータ実装方法は、
前記システムによって、高速のノン・ブロッキングのポイント・ツー・ポイント接続を介して、前記複数のメッセージのうちの第1のメッセージを前記複数のコントローラ・デバイスのうちの第1のコントローラ・デバイスに送信することであって、前記複数のコントローラ・デバイスは、前記複数のキュービット・デバイスの各々へのそれぞれの信号の適用を制御することを更に含む、請求項8ないし11のいずれか一項に記載のコンピュータ実装方法。
【請求項13】
量子プログラムの実行の制御のためのコンピュータ・プログラム製品であって、前記コンピュータ・プログラム製品は、プログラム命令が具現化されたコンピュータ可読ストレージ媒体を備え、前記プログラム命令は、プロセッサに、
前記プロセッサによって、前記プロセッサに対しリモートに位置する複数のコントローラ・デバイスが、互いに、および前記プロセッサに作動的に結合されたコンピューティング・システムと同期するようにすることと、
前記プロセッサによって、それぞれのキュービット・デバイスにおける1つまたは複数の測定値から結果として得られる測定データにアクセスすることと、
前記プロセッサによって、前記測定データを用いて、前記複数のコントローラ・デバイスのそれぞれの第2のコントローラ・デバイスのための1つまたは複数の制御メッセージを生成することであって、前記それぞれの第2のコントローラ・デバイスのうちの第1のコントローラ・デバイスは、前記それぞれのキュービット・デバイスのうちの第1のキュービット・デバイスへの信号の適用を制御することと、
を行わせるように前記プロセッサによって実行可能である、コンピュータ・プログラム製品。
【請求項14】
前記プログラム命令は、前記プロセッサに、高速のノン・ブロッキングのポイント・ツー・ポイント接続を介して、前記1つまたは複数の制御メッセージのうちの第1のメッセージを前記第1のコントローラ・デバイスに送信することを行わせるように前記プロセッサによって更に実行可能である、請求項13に記載のコンピュータ・プログラム製品。
【請求項15】
前記1つまたは複数の制御メッセージを生成することは、前記第1のキュービット・デバイスにおける前記量子プログラムの実行中の分岐命令のための実行経路を定義する第1のペイロード・データ、または前記実行経路内の1つまたは複数の量子演算に対応するオペランド・データを定義する第2のペイロード・データのうちの少なくとも1つを有する第1のメッセージを生成することを含む、請求項13または14に記載のコンピュータ・プログラム製品。
【請求項16】
前記1つまたは複数の制御メッセージを生成することは、量子プログラムの実行における中断に対応する未来の作動時間を定義するペイロード・データを有する第1のメッセージを生成することを含む、請求項13ないし15のいずれか一項に記載のコンピュータ・プログラム製品。
【請求項17】
前記プログラム命令は、前記プロセッサに、前記複数のキュービット・デバイスにおいて前記量子プログラムの実行を開始するために複数の第2の制御メッセージを生成することを行わせるように前記プロセッサによって更に実行可能であり、
前記プログラム命令は、前記プロセッサに、高速のノン・ブロッキングのポイント・ツー・ポイント接続を介して、前記複数の第2の制御メッセージのうちの第1のメッセージを前記複数のコントローラ・デバイスのうちの第1のコントローラ・デバイスに送信することを行わせるように前記プロセッサによってまた更に実行可能であり、前記複数のコントローラ・デバイスは、前記複数のキュービット・デバイスの各々へのそれぞれの信号の適用を制御する、請求項13ないし16のいずれか一項に記載のコンピュータ・プログラム製品。
【請求項18】
デバイスであって、
前記デバイスに対しリモートに位置するコンピューティング・システムからクロッキング信号を受信するクロック・ユニットであって、前記クロッキング信号は、前記デバイスと、前記デバイスに対しリモートに位置する複数の第2のデバイスとを同期させる、前記クロック・ユニットと、
メモリに記憶されたコンピュータ実行可能コンポーネントを実行するプロセッサであって、前記コンピュータ実行可能コンポーネントは、
前記コンピューティング・システムから量子プログラムを定義するデータを受信するインジェスチョン・コンポーネントであって、前記デバイスは、複数のキュービット・デバイスのうちの第1のキュービット・デバイスへの信号の適用を制御する、前記インジェスチョン・コンポーネントと、
制御フロー・ハンドリング・コンポーネントであって、
前記量子プログラムの実行中の前記量子プログラムの測定命令を特定し、
前記第1のキュービット・デバイスの状態または前記第1のキュービット・デバイスの物理的特性のうちの少なくとも1つの測定を行わせるようにモニタリング・コンポーネントに指示する、前記制御フロー・ハンドリング・コンポーネントと、
を含む、前記プロセッサと、
を備える、デバイス。
【請求項19】
前記コンピュータ実行可能コンポーネントは、前記測定の結果として得られる測定データを、高速のノン・ブロッキングのポイント・ツー・ポイント接続を介して前記コンピューティング・システムに送信する報告コンポーネントを更に含む、請求項18に記載のデバイス。
【請求項20】
前記インジェスチョン・コンポーネントは、前記コンピューティング・システムから、分岐命令に応じて実行経路を定義する第1のペイロード・データ、または前記実行経路内の1つまたは複数の量子演算に対応するオペランド・データを定義する第2のペイロード・データのうちの少なくとも1つを有する制御メッセージを受信する、請求項18または19に記載のデバイス。
【請求項21】
前記制御メッセージは、量子プログラムの実行における中断に対応する未来の作動時間を定義する第2のペイロード・データを更に含む、請求項20に記載のデバイス。
【請求項22】
コンピュータ実装方法であって、
少なくとも1つのプロセッサを有するコントローラ・デバイスによって、前記コントローラ・デバイスに対しリモートに位置するコンピューティング・システムからクロッキング信号を受信することであって、前記クロッキング信号は、前記デバイスと、前記デバイスに対しリモートに位置する複数の第2のデバイスとを同期させることと、
少なくとも1つのプロセッサを有するコントローラ・デバイスによって、前記コンピューティング・システムから量子プログラムを定義するデータを受信することであって、前記コントローラ・デバイスは、前記量子プログラムを実行する複数のキュービット・デバイスのうちの第1のキュービット・デバイスへの信号の適用を制御することと、
前記コントローラ・デバイスによって、前記量子プログラムの実行中の前記量子プログラムの測定命令を特定することと、
前記コントローラ・デバイスによって、前記第1のキュービット・デバイスの状態または前記第1のキュービット・デバイスの物理的特性のうちの少なくとも1つの測定を行わせることと、
を含む、コンピュータ実装方法。
【請求項23】
前記コントローラ・デバイスによって、前記測定の結果として得られる測定データを、高速のノン・ブロッキングのポイント・ツー・ポイント接続を介して前記コンピューティング・システムに送信することを更に含む、請求項22に記載のコンピュータ実装方法。
【請求項24】
前記コントローラ・デバイスによって、前記コンピューティング・システムから、分岐命令に応じて実行経路を定義する第1のペイロード・データ、または前記実行経路内の1つまたは複数の量子演算に対応するオペランド・データを定義する第2のペイロード・データのうちの少なくとも1つを有する制御メッセージを受信することを更に含む、請求項22または23に記載のコンピュータ実装方法。
【請求項25】
記制御メッセージは、量子プログラムの実行における中断に対応する未来の作動時間を定義する第3のペイロード・データを更に含む、請求項24に記載のコンピュータ実装方法。
【発明の詳細な説明】
【技術分野】
【0001】
本開示の1つまたは複数の実施形態は、量子プログラムの実行の集中型制御に関する。
【背景技術】
【0002】
量子コンピュータ上で実行されるプログラム命令の制御は、量子コンピュータの量子プロセッサを構成するキュービット・デバイスの数と共に複雑性を増す。各キュービット・デバイスは、所望の量子回路を実行するために、異なる波形を実行する必要がある場合がある。量子プログラムの実行を制御するための一般的な手法は、どの量子命令を実行するかを指示するためにキュービットごとの波形ユニットに命令を発行する集中型コントローラを有することである。
【0003】
しかしながら、通常の集中型制御手法は、命令発行レートまたは相互接続帯域幅あるいはその両方から生じる課題を有する。例えば、通常の集中型コントローラ・アーキテクチャは、量子プロセッサにおけるキュービット・デバイスの数が増加する際、プログラム命令の多岐にわたるセットを各キュービット・デバイスにリアルタイムで効率的に分配することができない。このため、そのようなアーキテクチャにおけるスケーラビリティを達成するのが困難である場合がある。更に、リアルタイムデータは、複雑な量子回路が実行されることを可能にするために、必須でないにしても望ましい。
【0004】
したがって、量子コンピュータにおけるプログラム命令の実行の集中型制御のための改善された技法が望ましい場合がある。
【発明の概要】
【0005】
以下は、本発明の1つまたは複数の実施形態の基本的な理解を提供するための概要を提示する。この概要は、主要なまたは重要な要素を特定することを意図したものでもなければ、特定の実施形態の任意の適用範囲または特許請求の範囲の任意の適用範囲を画定することを意図したものでもない。この概要の唯一の目的は、後に提示されるより詳細な説明に対する導入部として、単純な形式で概念を提示することである。
【0006】
一実施形態において、システムが提供される。システムは、メモリに記憶されたコンピュータ実行可能コンポーネントを実行するプロセッサを含む。コンピュータ実行可能コンポーネントは、システムに対しリモートに位置する複数のコントローラ・デバイスが、互いに、およびシステムと同期するようにする、同期コンポーネントを含む。コンピュータ実行可能コンポーネントは、それぞれのキュービット・デバイスにおける1つまたは複数の測定値から結果として得られる測定データにアクセスするインジェスチョン・コンポーネント(ingestion component)も含む。コンピュータ実行可能コンポーネントは、測定データを用いて、複数のコントローラ・デバイスのうちのそれぞれの第2のコントローラ・デバイスのための1つまたは複数の制御メッセージを生成するコンポジション・コンポーネント(composition component)を更に含む。それぞれの第2のコントローラ・デバイスのうちの第1のコントローラ・デバイスは、それぞれのキュービット・デバイスのうちの第1のキュービット・デバイスへの信号の適用を制御する。そのような制御メッセージを生成することによって、システムは、コントローラ・デバイスによって制御されるキュービット・デバイスによって実行される量子プログラムのランタイム時にコントローラ・デバイスに供給することができる少量の情報にアクセスを有する。結果として、量子プログラムの実行はリアルタイムで集中的かつ効率的に制御することができ、これにより、量子プロセッサを形成するキュービット・デバイスの数を容易に増大させることを可能にすることができる。
【0007】
加えて、または他の実施形態において、コンピュータ実行可能コンポーネントは、高速のノン・ブロッキングのポイント・ツー・ポイント接続を介して、1つまたは複数の制御メッセージのうちの第1のメッセージを第1のコントローラ・デバイスに送信するメッセージング・コンポーネントを更に含むことができる。更に、または更に他の実施形態において、コンポジション・コンポーネントは、第1のキュービット・デバイスにおける量子プログラムの実行中の分岐命令のための実行経路を定義する第1のペイロード・データ、または実行経路内の1つまたは複数の量子演算に対応するオペランド・データを定義する第2のペイロード・データのうちの少なくとも1つを有する第1のメッセージを生成する。このため、そのような第1のメッセージは、量子プログラムのランタイム時にコントローラ・デバイスに供給することができる。第1のメッセージは、集中型制御に対する通常の手法と際立って対照的に、分岐命令に関する適切な分岐を選択するためのペイロード・データを含むため、量子プログラムの実行のリアルタイムの集中型制御は、本開示の実施形態によって効率的に達成することができる。
【0008】
別の実施形態によれば、コンピュータ実装方法が提供される。コンピュータ実装方法は、プロセッサに作動的に結合されたシステムによって、システムに対しリモートに位置する複数のコントローラ・デバイスが、互いに、およびシステムと同期するようにすることを含む。コンピュータ実装方法は、システムによって、それぞれのキュービット・デバイスにおける1つまたは複数の測定値から結果として得られる測定データにアクセスすることも含む。コンピュータ実装方法は、システムによって、測定データを用いて、複数のコントローラ・デバイスのうちのそれぞれの第2のコントローラ・デバイスのための1つまたは複数の制御メッセージを生成することを更に含む。それぞれの第2のコントローラ・デバイスのうちの第1のコントローラ・デバイスは、それぞれのキュービット・デバイスのうちの第1のキュービット・デバイスへの信号の適用を制御する。
【0009】
更なる実施形態によれば、量子プログラムの実行の制御のためのコンピュータ・プログラム製品が提供される。コンピュータ・プログラム製品は、プログラム命令が具現化されたコンピュータ可読ストレージ媒体を含み、プログラム命令は、プロセッサに、プロセッサに対しリモートに位置する複数のコントローラ・デバイスが、互いに、およびプロセッサに作動的に結合されたコンピューティング・システムと同期するようにさせるようにプロセッサによって実行可能である。プログラム命令はまた、プロセッサに、それぞれのキュービット・デバイスにおける1つまたは複数の測定値から結果として得られる測定データにアクセスさせるようにプロセッサによって実行可能である。プログラム命令はまた、プロセッサに、測定データを用いて、複数のコントローラ・デバイスのうちのそれぞれの第2のコントローラ・デバイスのための1つまたは複数の制御メッセージを生成させるようにプロセッサによって実行可能である。それぞれの第2のコントローラ・デバイスのうちの第1のコントローラ・デバイスは、それぞれのキュービット・デバイスのうちの第1のキュービット・デバイスへの信号の適用を制御する。
【0010】
一実施形態によれば、デバイスが提供される。デバイスは、デバイスに対しリモートに位置するコンピューティング・システムからクロッキング信号を受信するクロック・ユニットを備え、クロッキング信号は、デバイスと、デバイスに対しリモートに位置する複数の第2のデバイスとを同期させる。デバイスは、メモリに格納されたコンピュータ実行可能コンポーネントを実行するプロセッサも含み、ここで、コンピュータ実行可能コンポーネントは、コンピューティング・システムから量子プログラムを定義するデータを受信するインジェスチョン・コンポーネントを含む。デバイスは、複数のキュービット・デバイスのうちの第1のキュービット・デバイスへの信号の適用を制御する。コンピュータ実行可能コンポーネントは、量子プログラムの実行中の量子プログラムの測定命令を特定する制御フロー・ハンドリング・コンポーネントも含む。制御フロー・ハンドリング・コンポーネントはまた、第1のキュービット・デバイスの状態または第1のキュービット・デバイスの物理的特性のうちの少なくとも1つの測定を行わせるようにモニタリング・コンポーネントに指示する。
【0011】
加えて、または他の実施形態において、コンピュータ実行可能コンポーネントは、測定の結果として得られる測定データを、高速のノン・ブロッキングのポイント・ツー・ポイント接続を介してコンピューティング・システムに送信する報告コンポーネントも含むこともできる。更に、または更に他の実施形態において、インジェスチョン・コンポーネントは、コンピューティング・システムから、分岐命令に応じて実行経路を定義する第1のペイロード・データ、または実行経路内の1つまたは複数の量子演算に対応するオペランド・データを定義する第2のペイロード・データのうちの少なくとも1つを有する制御メッセージを受信する。そのような制御メッセージは、量子プログラムのランタイム時に受信することができる。第1の制御メッセージは、集中型制御に対する通常の手法と際立って対照的に、分岐命令に関する適切な分岐を選択するためのペイロード・データを含むため、量子プログラムの実行のリアルタイムの集中型制御は、本開示の実施形態によって効率的に達成することができる。
【0012】
別の実施形態によれば、コンピュータ実装方法が提供される。コンピュータ実装方法は、少なくとも1つのプロセッサを有するコントローラ・デバイスによって、コントローラ・デバイスに対しリモートに位置するコンピューティング・システムからクロッキング信号を受信することを含む。クロッキング信号は、デバイスと、デバイスに対しリモートに位置する複数の第2のデバイスとを同期させる。コンピュータ実装方法はまた、コントローラ・デバイスによって、コンピューティング・システムから量子プログラムを定義するデータを受信することを含む。コントローラ・デバイスは、量子プログラムを実行する複数のキュービット・デバイスのうちの第1のキュービット・デバイスへの信号の適用を制御する。コンピュータ実装方法は、コントローラ・デバイスによって、量子プログラムの実行中の量子プログラムの測定命令を特定することを更に含む。コンピュータ実装方法は、コントローラ・デバイスによって、第1のキュービット・デバイスの状態または第1のキュービット・デバイスの物理的特性のうちの少なくとも1つの測定を行わせることをまた更に含む。
【図面の簡単な説明】
【0013】
図1】本開示の1つまたは複数の実施形態による、量子プログラムの実行の集中型制御のための動作環境の非限定的例を示す図である。
図2】本開示の1つまたは複数の実施形態による、図1に示す動作環境に含まれる制御ハブ・システム、コントローラ・デバイスおよびキュービット・デバイスの概略構成の非限定的例を示す図である。
図3】本開示の1つまたは複数の実施形態による、量子プログラムの実行の集中型制御のための制御ハブ・システムの非限定的例を示す図である。
図4】本開示の1つまたは複数の実施形態による、量子プログラムの実行の集中型制御のための制御デバイスの非限定的例を示す図である。
図5】(A)は、本開示の1つまたは複数の実施形態による、コントローラ・デバイス上にロードすることができるプログラム制御フロー・グラフ(CFG)によって表されるプログラム命令のシーケンスの概略的な非限定的例を示す図である。(B)は、本開示の1つまたは複数の実施形態による、コントローラ・デバイス上にロードすることができるプログラムCFGによって同様に表されるプログラム命令のシーケンスの別の概略的な非限定的例を示す図である。
図6図5Aに示すプログラムCFGの非限定的例を表す図であり、ここで、そのプログラムCFGにおけるノードは、本開示の1つまたは複数の実施形態による量子ハードウェアにおける測定結果に基づくオペランドを含む動作を定義する。
図7】本明細書に記載の1つまたは複数の実施形態による、量子プログラムの実行の集中型制御のためのコンピューティング・システムの非限定的例を示す図である。
図8】本明細書に記載の1つまたは複数の実施形態による、量子プログラムの実行の集中型制御のためのコンピューティング・デバイスの非限定的例を示す図である。
図9】本開示の1つまたは複数の実施形態による、量子プログラムの実行の集中型制御のための方法の非限定的例を示す図である。
図10】本開示の1つまたは複数の実施形態による、量子プログラムの制御された実行のための方法の非限定的例を示す図である。
図11】本明細書に記載の1つまたは複数の実施形態を実施することができる動作環境の非限定的例のブロック図である。
図12】本明細書に記載の1つまたは複数の実施形態による、クラウド・コンピューティング環境の非限定的例のブロック図である。
図13】本明細書に記載の1つまたは複数の実施形態による、抽象化モデルレイヤの非限定的例のブロック図である。
【発明を実施するための形態】
【0014】
本開示の実施形態は、量子コンピュータにおける量子プログラムの集中型実行制御の問題に対処する。このために、本開示の実施形態は、量子コンピュータの量子プロセッサに含まれるキュービット・デバイスに関連付けられたコントローラ・デバイスに送信されるデータを搬送するデータ量およびメッセージ数をリアルタイムで制限することができる。より詳細には、本開示のいくつかの実施形態は、量子プログラムを構成するプログラム命令の従来の制御フローのための制御ハブ・システムを含むことができる。量子コンピュータにおける量子プログラムの実行前に、制御ハブ・システムは、量子プロセッサを形成する複数のキュービット・デバイスに関連付けられた複数のコントローラ・デバイスの各々に量子プログラムを送信することができる。したがって、量子プログラムの実行中、複数のキュービット・デバイスによって実行される動作を定義するデータのストリームを送信するのではなく、制御ハブ・システムは、少量のペイロード・データを有する制御メッセージを送信することができる。いくつかの場合、制御メッセージのサイズは、16ビット~64ビットの範囲をとることができる。各制御メッセージは、ヘッダと、それに続く、ペイロード・データを含むフィールドとを有するようにフォーマット設定される。制御メッセージは、量子プログラムに対応するプログラム制御フロー・グラフ(CFG)をトラバースするための制御情報を定義することができる。すなわち、制御情報は、分岐命令の実行経路の選択、または選択された実行経路内での動作の実行、あるいはその両方を可能にすることができる。加えて、制御メッセージは、プログラムCFGの境界において送信することができる。結果として、送信される制御メッセージの数が、量子プログラム内のプログラム命令ごとに情報(データまたはシグナリング)を送信する既存の制御プラットフォームにおいて送信されるメッセージの数未満となる。
【0015】
制御経路実行の異なる実行経路は、異なる数のプログラム命令、したがって異なる実行時間を有することができる。量子命令は、通常、非可換であることに起因して、また、いくつかの命令は、送信ユニットと受信ユニットとの間で密なタイミング合わせを必要とする場合があることに起因して、本開示の実施形態は、複数の制御デバイスを互いに同期させておくことを可能にすることができる。このために、制御ハブ・システムは、未来作動時間(FAT)に頼る同期メカニズムを提供することができる。ここで、このメカニズムは、コントローラ・デバイスの各々に、コントローラ・デバイスが実行を再開する前に、CFGにおける同じタイムライン・ポイントに達するまで中断させることができる。
【0016】
本開示の実施形態は、量子プログラムの実行の集中型制御に対する通常の手法に対するいくつかの利点を提供することができる。例えば、コントローラ・デバイスによって制御されるキュービット・デバイスによって実行される量子プログラムのランタイム時に小さな制御メッセージを生成することによって、本開示の実施形態は、ランタイム時にコントローラ・デバイスに供給することができる少量の適切な情報へのアクセスを有する。小さな制御メッセージは、ネットワーク帯域幅を効率的に利用することを可能にすることができ、そのようなメッセージを受信するデバイスにおける処理時間を低減することもできる。結果として、量子プログラムの実行はリアルタイムで集中的かつ効率的に制御することができ、これにより、これまで可能であったよりもはるかに大きな量子システムへのスケーリングを可能にすることができる。例えば、既存の量子システムは、約数十のキュービットまでスケーリングすることができるのに対し、本開示の実施形態は、1万を超えるキュービットまで量子システムをスケーリングすることができる。
【0017】
更に、ランタイム時に制御メッセージを生成することができるのみでなく、これをランタイム時にコントローラ・デバイスに供給することもできる。したがって、量子プログラムの実行の集中型制御に対する通常の手法と際立って対照的に、そのような制御メッセージを受信する本開示のコントローラ・デバイスは、適切な分岐を選択し、分岐内で動作を実行するために、ペイロードへのアクセスを有することができる。このため、量子プログラムの実行のリアルタイムの集中型制御は、本開示の実施形態によって効率的に達成することができる。
【0018】
本開示のいくつかの実施形態は、単に例示のために、キュービット・デバイスおよび量子回路を参照して説明されることに留意されたい。しかしながら、本開示はその点において限定されない。実際に、本開示の原理は、量子演算の他のタイプの表現に頼る量子プログラム、および量子コンピュータの物理的実施において利用される(キュービット・デバイスまたはボーズ粒子システム等の)任意のタイプの量子デバイスにも適用することができる。
【0019】
図面を参照すると、図1は、本開示の1つまたは複数の実施形態による、量子プログラム104の実行の集中型制御のための動作環境100の非限定的例を示す。量子プログラム104は、1つまたはいくつかのアルゴリズムを定義することができる。いくつかの場合、量子プログラム104は、1つまたはいくつかの量子回路を含むことができ、ここで、量子回路は、量子アルゴリズムを少なくとも部分的に定義する動作の複数のシーケンスを含むことができる。加えて、または他の場合、量子プログラム104は、1つまたはいくつかのプログラム・スケジュールを含むことができ、ここで、プログラム・スケジュールは、量子アルゴリズムを少なくとも部分的に定義する動作の複数のシーケンスを含むことができる。加えて、プログラム・スケジュールは、時点および波形の両方を定義することができ、ここで、プログラム・スケジュールにおいて定義される特定の波形は、スケジュールにおいて定義される特定の時点において適用することができる。理論またはモデリングによって縛られることを意図することなく、シーケンスは、ノイズの多い量子ハードウェアに入力されるチャネルにおいて順次生じる量子演算の順序付けされたリストを指す。このため、量子プログラム104は、1つまたはいくつかのシーケンスを含むことができる。プログラム・スケジュールとして表されるシーケンスは、回路動作を実施するように構成することができる。逆に、回路動作は、量子デバイスにおいて動作するために、プログラム・スケジュール定義を有することができる。
【0020】
特定の構成にかかわらず、量子プログラム104は、連続して実行することができるプログラム命令を含む。プログラム命令は、量子回路もしくはスケジュール、またはその両方を定義し、量子プログラム104を構成する各プログラム命令は、量子演算と呼ぶことができる。
【0021】
動作環境100は、1つまたは複数のメモリ・デバイス112(メモリ112と呼ばれる)において量子プログラム104を保持することができる制御ハブ・システム110を含む。制御ハブ・システム110は、量子プログラム104の実行を制御することができる。そのために、制御ハブ・システム110は、制御ハブ・システム110に対しリモートに位置する複数のコントローラ・デバイス140に機能的に結合される。通信ネットワーク120は、制御ハブ・システム110および複数のコントローラ・デバイス140を機能的に結合することができる。通信ネットワーク120は、制御ハブ・システム110と、複数のコントローラ・デバイス140の各々との間の高速(例えば、Gbpsのオーダ)のノン・ブロッキングのポイント・ツー・ポイント接続を形成することを可能にする。すなわち、通信ネットワーク120は、制御ハブ・システム110を、複数のコントローラ・デバイス140のうちの第1のコントローラ・デバイスに、第1の高速のノン・ブロッキングのポイント・ツー・ポイント接続を介して機能的に結合することができ、また、制御ハブ・システム110を、複数のコントローラ・デバイス140のうちの第2のコントローラ・デバイスに、第2の高速のノン・ブロッキングのポイント・ツー・ポイント接続を介して機能的に結合することができる。しかしながら、本開示は、ポイント・ツー・ポイント接続を提供するトポロジを有する通信ネットワーク120に限定されない。他のネットワークトポロジを企図することができる。例えば、いくつかの実施形態では、通信ネットワーク120は、リング・ネットワーク、スター・ネットワークまたは類似のネットワークに従って、制御ハブ・システム110およびコントローラ・デバイス140を機能的に結合することができる。更に、いくつかの場合、本明細書に記載の実施形態の集中型制御のスケーラビリティは、単一のホップにおける制御ハブ・システム110とコントローラ・デバイス140のうちのコントローラ・デバイスとの間の完全な接続が通信ネットワーク120に欠如しているときに改善することができる。例示的な実施形態において、通信ネットワーク120は、ハイパーキューブ接続性に従って制御ハブ・システム110およびコントローラ・デバイス140を機能的に結合することができ、ここで、制御ハブ・システム110およびコントローラ・デバイス140の各々は、ハイパーキューブにおいて定義された数の近傍に接続され、制御メッセージは、ハイパーキューブにわたって小さな数のホップにおいて意図されたコントローラ・デバイスに達することができる。
【0022】
複数のコントローラ・デバイス140も、量子ハードウェア150を構成する複数のキュービット・デバイス160に機能的に結合される。複数の量子デバイス160は、特定のレイアウトで配置することができる。複数のキュービット・デバイス160に含まれるキュービット・デバイスは、いくつかのタイプのうちの1つのソリッド・ステート・デバイスとすることができる。単に例示として、キュービット・デバイスは、ジョセフソン接合デバイス、半導体量子ドット、または半導体材料における欠陥(SiおよびGeにおける空孔等)とすることができる。1つの例において、キュービット・デバイス160の各々はトランズモンにおいて具現化することができる。他の実施形態において、キュービット・デバイスは、イオン・トラップにおいて組み立てられた原子キュービットを含むことができる。例えば、原子キュービットは、カルシウム・イオン、イッテルビウム・イオンまたは類似のイオンにおいて具現化することができる。
【0023】
複数のリンク170が、複数のコントローラ・デバイス140を複数のキュービット・デバイス160に機能的に結合する。いくつかの実施形態において、複数のリンク170は、マイクロ波共振器デバイスまたはマイクロ波伝送線、またはその両方の組合せ等のソリッド・ステート・リンクを含むことができる。複数のリンク170のうちの少なくともいくつかのリンクは、コントローラ・デバイスからキュービット・デバイスにシグナリングまたはデータあるいはその両方を送信することを可能にすることができる。複数のリンクのうちのそのようなリンクまたは他のリンクは、コントローラ・デバイスにおいてキュービット・デバイスからシグナリングまたはデータあるいはその両方を受信することを可能にすることができる。いくつかの場合、複数のリンク170のうちの少なくともいくつかは、コントローラ・デバイスとキュービット・デバイスとの間でシグナリングまたはデータあるいはその両方を交換することを可能にすることができる。換言すれば、複数のリンク170は、異なる機能、例えば、送信のみ、受信のみおよび送信-受信を有するコントローラ・デバイスが量子デバイスとインタラクトすることを可能にすることができる。
【0024】
複数のコントローラ・デバイス140のうちの少なくともいくつかは、複数のリンク170によって提供される機能的結合を用いて、複数のキュービット・デバイス160への信号の適用を制御することができる。そのような信号は、量子プログラム104のプログラム命令によって定義される量子演算に対応することができる。すなわち、コントローラ・デバイス140のうちの少なくともいくつかは、量子プログラム104を実行することができる。例えば、特定の信号は、複数のキュービット・デバイス160のうちの1つまたはいくつかの特定のキュービット・デバイスに作用するように定義された特定のゲート(またはユニタリ)に対応することができる。いくつかの実施形態では、複数のコントローラ・デバイス140のうちの第1のコントローラ・デバイスは、複数のキュービット・デバイス160のうちの第1のキュービット・デバイスへの信号の適用を制御することができ、複数のコントローラ・デバイス140のうちの第2のコントローラ・デバイスは、複数のキュービット・デバイス160のうちの第2のキュービット・デバイスへの信号の適用を制御することができ、以下同様である。
【0025】
例示の目的で、図2は、本開示の1つまたは複数の実施形態による、制御ハブ・システム110、複数のコントローラ・デバイス140および複数のキュービット・デバイス160の概略的で非限定的な例示的構成200を提示する。構成200は、制御ハブ・システム110と複数のコントローラ・デバイス140との間、および複数のコントローラ・デバイス140とキュービット・デバイス160との間の機能的結合を示す。複数のコントローラ・デバイス140は、例えば、第1のコントローラ・デバイス210(1)、第2のコントローラ・デバイス210(2)、および第Nのコントローラ・デバイス210(N)までの他のコントローラ・デバイスを含むことができる。ここで、Nは1より大きい自然数である。制御ハブ・システム110は、高速のノン・ブロッキングのポイント・ツー・ポイント接続204(K)を介してコントローラ・デバイス210(K)に機能的に結合することができ、ここで、K=1、2,・・・,Nである。特に、制御ハブ・システム110は、第1の高速のノン・ブロッキングのポイント・ツー・ポイント接続204(1)を介してコントローラ・デバイス210(1)に機能的に結合することができ、また、制御ハブ・システム110は、第2の高速のノン・ブロッキングのポイント・ツー・ポイント接続204(2)を介してコントローラ・デバイス210(2)に機能的に結合することができ、...、更に、コントローラ・ハブ・システム110は、高速のノン・ブロッキングのポイント・ツー・ポイント接続204(N)を介してコントローラ・デバイス210(N)に機能的に結合することができる。高速のノン・ブロッキングのポイント・ツー・ポイント接続204(K)は、ハブ・コントローラ・メッセージ経路を具現化する。
【0026】
図2に示すように、複数のキュービット・デバイス160は、例えば、第1のキュービット・デバイス220(1)、第2のキュービット・デバイス220(2)、および第Nのキュービット・デバイス220(N)までの他のキュービット・デバイスを含むことができる。例示的な構成200において、各制御デバイス210(K)は、双方向リンク215(K)(情報をアップストリームおよびダウンストリームに供給することができるリンク)によってキュービット・デバイス220(K)に機能的に結合される。本開示の実施形態は、そのような1対1の結合または双方向リンク215(1)~215(N)あるいはその両方に限定されないことに留意されたい。いくつかの実施形態では、キュービット・デバイス160のうちの2つ以上のキュービット・デバイスは、複数のコントローラ・デバイス140のうちの単一のコントローラ・デバイスに機能的に結合することができる。更に他の実施形態では、異なるタイプの機能的結合の組合せを実施することができ、ここで、コントローラ・デバイス140のうちのいくつか、およびキュービット・デバイス160のうちのいくつかは、1対1の構成で配置することができ、コントローラ・デバイス140のうちのいくつかの他のコントローラ・デバイス、およびキュービット・デバイス160のうちのいくつかの他のキュービット・デバイスは、1対多の構成で配置することができる。更に他の実施形態では、複数のコントローラ・デバイス140のうちのいくつかのコントローラ・デバイスのグループは、キュービット・デバイス160のうちの単一のキュービット・デバイスに機能的に結合することができる。いくつかのコントローラ・デバイスを単一のキュービット・デバイスに結合させることによって、例えば、異なる特性の刺激をその単一のキュービット・デバイスに適用することができる。そのような刺激は、いくつかの場合、AC結合RFパルスおよびDC結合フラックス・パルスを含むことができる。
【0027】
通信ネットワーク120によって提供される高速のノン・ブロッキングのポイント・ツー・ポイント接続を用いて、量子プログラム104の実行の集中型制御の一部として、制御ハブ・システム110から複数のコントローラ・デバイス140にメッセージを送信することができる。図1に示すように、メッセージは、初期化メッセージ132および制御メッセージ134を含むことができる。
【0028】
制御ハブ・システム110は、量子プログラム104の実行の前に初期制御状態においてコントローラ・デバイス140を構成するための初期化メッセージ132を送信することができる。その状態において、複数のコントローラ・デバイス140の各々が、1つまたは複数のメモリ・デバイス142内に量子プログラム104のコピーを保持することができる。加えて、複数のコントローラ・デバイス140のそれぞれのクロック・ユニット144は、互いに、および制御ハブ・システム110のクロック・ユニット114と同期することができる。したがって、制御ハブ・システム110は、量子プログラム104を定義するペイロード・データを搬送する第1の初期化メッセージ132を複数のコントローラ・デバイス140の各々に送信することができる。
【0029】
本明細書に記載のように、第1の初期化メッセージ132は、それぞれの高速のノン・ブロッキングのポイント・ツー・ポイント接続を介して送信することができる。いくつかの場合、それぞれのハブ・コントローラ・メッセージ経路を通じて第1の初期化メッセージ132を送信するのではなく、制御ハブ・システム110は、任意選択により、別個のより高い帯域幅のインタフェース124(イーサネット(R)・インタフェース等)を介して複数のコントローラ・デバイス140に第1の初期化メッセージ132を送信することができる。第1の初期化メッセージ132を送信するために頼る接続性のタイプにかかわらず、いくつかの実施形態では、図3に示すように、制御ハブ・システム110は、第1の初期化メッセージ132をコントローラ・デバイス140の各々に送信することができるコンパイル・コンポーネント(compilation component)330を含むことができる。同様に図3に示されているように、制御ハブ・システム110は、他のコンポーネント、1つまたはいくつかのプロセッサ360およびメモリ112も備えることができる。コンポーネント、プロセッサ360およびメモリ112は、電気的に、光学的にまたは通信的に、あるいはその組合せで、互いに結合することができる。加えて、または更なる実施形態において、図4に示すように、コントローラ・デバイス140のうちの少なくとも1つは、量子プログラム104を定義するデータを受信することができるインジェスチョン・コンポーネント410を含むことができる。同様に図4に示されているように、コントローラ・デバイス140のうちの1つまたは複数を表すコントローラ・デバイス400は、他のコンポーネント、1つまたはいくつかのプロセッサ460およびメモリ142も備えることができる。コンポーネント、プロセッサ460およびメモリ142は、電気的に、光学的にまたは通信的に、あるいはその組合せで、互いに結合することができる。
【0030】
制御ハブ・システム110は、それぞれのクロック・ユニット144を同期させるために、複数のコントローラ・デバイス140の各々に第2の初期化メッセージ132を送信することもできる。第2の初期化メッセージ132の各々は、内部に統合された(またはいくつかの場合、機能的に結合された)クロック・ユニット144を始動させるようにそれぞれのコントローラ・デバイス140に指示することができる。制御ハブ・システム110は、制御ハブ・システム110のクロック・ユニット114の始動時に第2の初期化メッセージ132を送信することができる。このため、制御ハブ・システム110および複数のコントローラ・デバイス140は、互いに同期することができる。
【0031】
これらのクロック・ユニットを同期させるために、いくつかの実施形態では、制御ハブ・システム110は、複数のコントローラ・デバイス140が互いにおよび制御ハブ・システム110と同期するようにすることができる同期コンポーネント310(図3)を備えることができる。その点で、同期コンポーネント310はクロック・ユニット112を始動することができ、複数のコントローラ・デバイス140に、それぞれのクロック・ユニット144を始動するように指示することができる。いくつかの実施形態では、クロック・ユニット112は、適切な有線リンクと、コントローラ・デバイス140の各々に統合されたアダプタ・インタフェースとによって各クロック・ユニット144に接続することができる。同期コンポーネント310がクロック・ユニット112を始動するのに応じて、各クロック・ユニット144は、クロック・ユニット144をトリガするクロッキング信号を受信することができ、コントローラ・デバイス140の各々のためのタイミング信号を具現化する。
【0032】
制御メッセージ134は、量子プログラム104の実行フローを指示することができる。1つの態様において、制御ハブ・システム110は、制御メッセージ134の初期制御メッセージを生成することができる。初期制御メッセージは、複数のキュービット・デバイス160において量子プログラム104の実行を開始するようにコントローラ・デバイス140に指示することができる。このため、初期制御メッセージは、その趣旨の命令を含むことができる。いくつかの場合、複数のコントローラ・デバイス140のそれぞれのクロック・ユニット144が同期されたため、初期制御メッセージは、量子プログラムの実行を開始する特定の時間(定義された遅延Δt等)を定義するペイロード・データも含むことができる。次に、制御ハブ・システム110は、初期制御メッセージをコントローラ・デバイス140に送信することができる。いくつかの実施形態では、図3に示すように、制御ハブ・システム110は、複数のキュービット・デバイス160において量子プログラムの実行を開始するための初期制御メッセージを生成することができるコンポジション・コンポーネント320を備えることができる。加えて、制御ハブ・システム110は、初期制御メッセージを複数のコントローラ・デバイス140に送信することができるメッセージング・コンポーネント340も備えることができる。特に、メッセージング・コンポーネント340は、初期制御メッセージを、複数のコントローラ・デバイス140のうちの第1のコントローラ・デバイスに、第1の高速のノン・ブロッキングのポイント・ツー・ポイント接続を介して送信することができ、また、初期制御メッセージを、複数のコントローラ・デバイス140のうちの第2のコントローラ・デバイスに、別の高速のノン・ブロッキングのポイント・ツー・ポイント接続を介して送信することができる。
【0033】
初期制御メッセージの受信に応答して、初期制御メッセージを受信したコントローラ・デバイス140の各々が、量子プログラム104の実行を開始することができる。そのために、いくつかの実施形態では、図4に示すように、これらのコントローラ・デバイスの各々は、波形発生器450に、1つまたはいくつかの波形をキュービット・デバイスに適用させることができる1つまたは複数のプロセッサ460を含むことができ、ここで、適用される波形は、量子プログラム内の量子回路によって指定される。波形発生器450は、例えば、定義された波形に従って電圧信号を出力する任意波形発生器(AWG)において具現化することができる。
【0034】
量子プログラム104は、定義された制御フロー構造を有し、各コントローラ・デバイスは同じ量子プログラム104を実行するため、各コントローラ・デバイスは、グローバル・プログラムCFGを通じて同じ経路を辿ることができる。いくつかの場合、量子プログラム104は複数の分岐命令を含み、ここで、分岐命令のうちの少なくとも1つは、条件付き実行経路(または分岐)を有することができる。特定の条件付き実行経路がとられるか否か、例えばその分岐における命令が実行されるか否かは、ランタイム値に依拠し得る。ランタイム値は、例えば、キュービット測定により、またはランタイムの通常計算により、または両方の組合せにより生成することができる。キュービット測定は、特定のコントローラ・デバイスに対し最初にローカライズすることができる。測定の完了時に、または測定が完了した後、特定のコントローラ・デバイスは、キュービット測定の結果として得られた測定データを制御ハブ・システム110に送信することができる。量子プログラム104に含まれる測定命令は、1つまたはいくつかのキュービット測定を引き起こすことができる。量子プログラムは、複数の測定命令を含むことができる。
【0035】
いくつかの実施形態では、図4に示すように、コントローラ・デバイス140のうちの少なくとも1つは、モニタリング・コンポーネント430に機能的に結合されたキュービット・デバイスの状態の測定を引き起こすことができるモニタリング・コンポーネント430を含むことができる。そのような測定は、キュービット・デバイスの1つまたは複数のオブザーバブルをプローブすることができる。加えて、または代替的に、モニタリング・コンポーネント430は、温度の測定を引き起こすことができる。観測される温度は、キュービット・デバイス160を含むクリオスタット内の1つまたは複数のチップセットが、クリオスタットの冷却能力にストレスを加える可能性がある温度で動作しているとき、量子プログラム104における新たなプログラム命令の実行をコントローラ・デバイスにスロットル調整させることができる。温度以外に、いくつかの場合、モニタリング・コンポーネント430は、キュービット・デバイスまたはその動作環境の他の物理的特性の測定も引き起こすことができる。1つの例示的な実施形態において、モニタリング・コンポーネント430は、電圧レールまたは電流あるいはその両方をプローブすることができる。電圧レールのプローブの結果として得られる測定データを用いて、フラックス制御パルスを仕様内に維持することができる。プロービング電流から結果として得られる測定データを用いて、加熱および冷却を制御することができ、また、おそらく、テストをロードするか、またはテスト・ケース・データをアンロードするか、あるいはその両方のために、高帯域幅経路をクリオスタット・チップセット内にスロットル設定することができる。加えて、または別の例示的な実施形態において、モニタリング・コンポーネント430は、0-1キュービット・マニホールドからの量子システムの遷移を検出することができる。更に、または更に別の例示的な実施形態において、モニタリング・コンポーネント430は、キュービットの損失(光学格子における極低温原子等)を検出することができる。その点で、そのような実施形態において、モニタリング・コンポーネント430は電荷結合素子(CCD)カメラを含むことができる。加えて、コントローラ・デバイス140のうちの少なくとも1つは、測定の結果として得られる測定データを制御ハブ・システム110に送信することができる報告コンポーネント440を含むことができる。図3に示すように、いくつかの実施形態では、インジェスチョン・コンポーネント350は、測定データを受信することができる。
【0036】
より詳細には、コントローラ・デバイス140のうちのコントローラ・デバイスは、ランタイム時に量子プログラム104の測定命令を特定することができる。測定命令は、量子プログラム104の実行スレッド内の量子プログラム104の命令を解決することによって特定することができる。そのために、いくつかの実施形態では、コントローラ・デバイス140のうちの少なくとも1つは、命令を解決し、命令が測定命令であると判断する制御フロー・ハンドリング・コンポーネント420(図4)を含むことができる。
【0037】
測定命令を特定することに応じて、コントローラ・デバイスは、コントローラ・デバイスによって制御されるキュービット・デバイスの状態の測定を引き起こすことができる。そのために、いくつかの実施形態では、制御フロー・ハンドリング・コンポーネント420は、キュービット・デバイスの状態またはその環境のキュービット・デバイスの他の物理的特性、あるいはその両方を測定するようにモニタリング・コンポーネント430に指示することができる。制御フロー・ハンドリング・コンポーネント420は、モニタリング・コンポーネント430に対し実行される測定のタイプを特定するシグナリングを送信することができる。次に、コントローラ・デバイスは、測定の結果として得られる測定データを制御ハブ・システム110に送信することができる。例示として、図2を参照すると、コントローラ・デバイスは、コントローラ・デバイス210(2)において具現化することができる。コントローラ・デバイス210(2)は、量子プログラム104の実行中、実行のためにフェッチされた命令が測定命令であると判断することができる。そのような判断に応答して、コントローラ・デバイス210(2)は、キュービット・デバイス220(2)の状態の測定を引き起こすことができる。コントローラ・デバイス210(2)は、測定の結果として得られる測定データ206を制御ハブ・システム110に送信することができる。いくつかの場合、第2のコントローラ・デバイスは、別のキュービット・デバイスの状態の測定も引き起こすことができる。例えば、コントローラ・デバイス210(2)に加えて、コントローラ・デバイス210(N)は、実行のためにフェッチされた命令が測定命令であるという判断に応じて、キュービット・デバイス220(N)の測定を引き起こすことができる。次に、コントローラ・デバイス210(N)は、測定の結果として得られる測定データ208を制御ハブ・システム110に送信することができる。
【0038】
図1を更に参照すると、制御ハブ・システム110は、従来のコンピューティング技法を用いて、測定命令に応答してコントローラ・デバイス140のうちのコントローラ・デバイスから受信した測定データ136を用いて新たなランタイム値を生成することができる。いくつかの場合、測定データを用いて生成されるランタイム値は、分岐命令のための実行経路を定義する。制御ハブ・システム110は、その実行経路を定義するペイロード・データを有する制御メッセージを生成することができる。制御ハブ・システム110は、例えばコントローラ・デバイス140の各々に、制御メッセージ134のうちの1つとして、制御メッセージを送信することもできる。上述したように、制御メッセージは、それぞれの高速のノン・ブロッキングのポイント・ツー・ポイント接続を介してコントローラ・デバイス140に送信することができる。いくつかの実施形態では、コンポジション・コンポーネント320(図3)は、そのような制御メッセージを生成することができ、メッセージング・コンポーネント340(図3)は、制御メッセージを、測定データを供給した制御デバイスに送信することができる。
【0039】
そのような制御メッセージをコントローラ・デバイス140の各々に渡すことにより、ランタイム時に分岐命令のいずれの条件付き実行経路がとられるかをコントローラ・デバイス140が判断することを可能にすることができる。全ての可能な分岐命令を含む命令ストリームが実行前にコントローラ・デバイス140にロードされたため、実行するプログラム命令の長いリストを送信する必要がない。そのような長いリストは数千のプログラム命令、いくつかの場合、更には数百万の命令を含むことができる。送信されるのは、分岐命令に応答して実行経路を選択するための情報を含む小さな制御メッセージである。したがって、ネットワーク帯域幅およびプロセッサ・サイクルの使用は、量子プログラムの実行の集中型制御に対する既存の手法と比較して低減することができる。
【0040】
分岐命令に応じて実行経路を決定することを可能にするデータは、分岐選択データと呼ぶことができる。分岐命令のための分岐選択データは、分岐命令の実行前に受信することができる。これらの場合、それぞれの制御メッセージ(例えば、制御メッセージ134のうちの少なくともいくつかにおいて受信される)における分岐選択データを受信するコントローラ・デバイスは、受信した分岐選択データをメモリ142内に保持することができる。他の場合において、制御ハブ・システム110は、複数のコントローラ・デバイス140と同期し、量子プログラム104におけるプログラム命令のシーケンスにアクセスすることができるため、制御ハブ・システム110は、分岐命令のフェッチに応じて分岐選択データを含む制御メッセージを送信することができる。したがって、コントローラ・デバイス140のうちのコントローラ・デバイスは、ランタイム時の量子プログラム104の分岐命令の特定に応じて、分岐選択データを含む制御メッセージを受信することができる。コントローラ・デバイスは、量子プログラム104の実行スレッド内の量子プログラム104の命令を解決することによって分岐命令を特定することができる。そのために、いくつかの実施形態では、制御フロー・ハンドリング・コンポーネント420(図4)は、フェッチした命令を解決することができ、命令が分岐命令であると判断することができる。
【0041】
単に例示として、図5(A)は、本開示の1つまたは複数の実施形態による、コントローラ・デバイス140(図1)の各々にロードすることができるプログラム制御フロー・グラフ(CFG)500によって表されるプログラム命令のシーケンスの概略的な非限定的例を表す。プログラムCFG500は、各々が数字をラベル付けされた円によって表される複数のノードを含む。J=1,2,3,4,5,6,7である各ノード510(J)は、おそらく、関連付けられた分岐を有しない終端分岐命令の場合を除いて、制御フローを有しない量子回路の選択を表す。このため、セクションは、直線サブCFGとして表すことができる。コントローラ・デバイス140の各々は、ノード510(1)によって表される第1の量子回路およびノード510(2)によって表される第2の量子回路を連続して実行することができる。ノード510(2)を実行した後、プログラム命令のシーケンスにおける分岐命令は、制御ハブ・システム110からの制御メッセージ内の分岐選択データを用いることができるか、またはいくつかの場合、ノード510(3)またはノード510(4)が次に実行されるか否かを判断するために、コントローラ・デバイスのメモリ142を用いることができる。このため、ノード510(2)における分岐選択データに基づいて、1つのプログラム実行は、ノード510(3)およびノード510(4)を含む実行経路をとることができ、別のプログラム実行は、ノード510(4)を含む実行経路をとることができる。
【0042】
量子プログラム104の実行が複数のコントローラ・デバイス140にわたって同期を保つためには、分岐選択データを含む制御ハブ・システム110からの制御メッセージが異なる時点にコントローラ・デバイス140に到達する場合であっても、とられた実行経路の実行の完了後に、複数のコントローラ・デバイス140の各々が適用可能なノード(例えば、ノード510(6))の実行を同期して継続することが必要である。その点で、量子プログラム104の実行における同期を保持するために、本開示の実施形態は未来の動作時間tFATに頼る。モデリングによって制約されることを意図することなく、制御ハブ・システム110は、制御ハブ・システム110およびコントローラ・デバイス140を機能的に結合する通信ネットワーク120を通じた最悪のケースの伝播遅延δτを用いてtFATを決定することができる。
【0043】
特に、tFATは、現在の時点tにδτを加えたものに等しくすることができる。コントローラ・デバイス140のそれぞれのクロック・ユニット144は同期しているため、現在の時点tは、コントローラ・デバイス140の各々において同じである。いくつかの実施形態では、制御ハブ・システム110は、コンパイル・コンポーネント330(図3)によりtFATを決定することができる。そのために、コンパイル・コンポーネント310は、制御ハブ・システム110とコントローラ・デバイス140との間の通信について様々な伝播遅延を特定する伝播遅延データにアクセスすることができる。伝播遅延データは、例えば、遅延テーブル364に保持することができる。伝播遅延データは、量子プログラム104の実行前に生成することができる。例えば、制御ハブ・システム110は、同期コンポーネント310により、例えば、これらのデバイスの互いとのおよび制御ハブ・システム110との同期後にコントローラ・デバイス140の各々にパイロット・メッセージを送信することによって伝播遅延データを生成することができる。制御ハブ・システム110は、同期コンポーネントを介して、例えばコントローラ・デバイスからのこれらのパイロット・メッセージに対する応答の受信における遅延をモニタリングすることができ、遅延データを遅延テーブル364に記録することができる。tFATを決定することに加えて、制御ハブ・システム110は、tFATを示すペイロード・データを、分岐選択データを含む制御メッセージに加えることができる。
【0044】
したがって、例示的なプログラムCFG500の参照を継続して、ノード510(2)が実行された後、制御ハブ・システム110は、それぞれのローカル・クロック・ユニットがtFATに一致するまで、コントローラ・デバイス140の各々における実行を中断するために、量子プログラム104に対応する命令ストリームに遅延命令を挿入することができる。遅延命令は、「現在の時点=FATまで待機」によって一般的に表すことができる。量子プログラム104は、コントローラ・デバイス140の各々において連続的に実行されるため、制御ハブ・システム110は、遅延命令を定義するペイロード・データを含む制御メッセージ(例えば、制御メッセージ134のうちの1つ)を送信することによって、遅延命令を挿入することができる。FATが各コントローラ・デバイスが同期して進行することができることを保証することができるまで、更なる実行を遅延させる。
【0045】
FATを用いることにより、プログラムCFGを通る実行経路が異なる実行持続時間を有するとき、更なる効率性を提供することができ、プログラムCFG経路が再結合するときの再同期を可能にする。例えば、図5(A)において、ノード510(2)において受信される条件付き情報(例えば、測定データ)に依拠して、1つのプログラム実行は、経路1-2-3-5-6-7を辿ることができるのに対し、別のプログラム実行は、1-2-4-6-7を辿ることができる。ノード510(3)およびノード510(5)のためのそれぞれの量子回路の実行時間が、ノード510(4)に対応する量子回路のための実行時間と異なる場合、量子プログラム104の実行は異なる時点にノード510(6)に達することができる。例えば、分岐における各ノードが等しい実行時間を有する場合、ノード510(4)(図5(A)においてR分岐として表される)を含む条件付き実行経路は、ノード510(3)およびノード510(5)を含む他の条件付き実行経路(図5(A)においてL分岐として表される)よりも高速に実行することができる。更に、コントローラ・デバイス140のうちの1つまたはいくつかがいずれの分岐のローカル・アクションもとらないことが可能である。そのような制御デバイスは、スペクテータ・コントローラと呼ぶことができる。条件付き実行経路がノード510(6)においてマージする図5(A)に示すように、1つまたは複数のいくつかのスペクテータ・コントローラが分岐を有するCFG500の或るセクションについて存在し、マージする状況において、図5(B)に示すように、ノード510(3)、ノード510(4)およびノード510(5)は、これらのスペクテータ・コントローラにロードされた量子プログラム104から除去することができ、ノード510(6)直前の同期命令550と置き換えることができる。
【0046】
とるべき分岐を定義するランタイム値を生成するのみでなく、いくつかの場合、制御ハブ・システム110は、従来、オペランドとして用いることができる他のランタイム値、または量子プログラム104の実行中の他のタイプの命令データを計算することができる。そのようなランタイム値は、1つ以上のコントローラ・デバイス(例えば、コントローラ・デバイス210(2)またはコントローラ・デバイス210(N)あるいはその両方)から受信した測定値に応じて生成することもできる。制御ハブ・システム110は、オペランドを定義するかまたは別のタイプの命令データを含むペイロード・データを含む制御メッセージを生成することができる。そのタイプの制御メッセージは、制御メッセージ132に含めることができ、「命令データ・メッセージ」と呼ぶことができる。
【0047】
命令-データ・メッセージは、多くのシナリオにおいて用いることができる。1つの例示的なシナリオにおいて、量子回路は、ランタイム時に構築されるデータに依拠する。例は、各反復が回転Rz(θ)を含む反復位相推定量子回路とすることができ、回転角度θは、前回の反復におけるキュービット測定値によってランタイム時に決定される。そのような場合、量子回路のセクションは、制御ハブ・システム110から受信することができるデータを参照するオペランドを有する命令により表すことができる。
【0048】
上記の例示的なシナリオにおける命令-データ・メッセージの使用の例示として、図6は、図5に示すプログラムCFG500の非限定的な例を表し、ここで、ノード510(4)は、キュービット測定の結果に基づくオペランドを含む動作を定義する。動作は、定義された量θ・nの回転Rzであり、ここで、θは角度を表し、係数nは測定データによって定義される。
【0049】
図6に示すように、制御ハブ・システム110は、キュービット測定から結果として得られる測定データを受信することができる。測定データは、第1の測定データ610(1)、第2の測定データ610(2)および第3の測定データ610(3)を含むことができる。そのような第1のデータ、第2のデータおよび第3のデータは、それぞれM、MおよびMによって表され、第1のキュービット・デバイス、第2のキュービット・デバイスおよび第3のキュービット・デバイスのそれぞれの状態を示すことができる。したがって、Mは「0」または「1」に等しくすることができ、Mも「0」または「1」に等しくすることができ、Mも「0」または「1」に等しくすることができる。上述したように、制御ハブ・システム110は、制御デバイス140の1つまたは複数のコントローラ・デバイスから測定データを受信することができる。同様に上述したように、いくつかの実施形態では、制御ハブ・システム110は、インジェスチョン・コンポーネント350により測定データを受信することができる。
【0050】
量子プログラム104の実行の一部として、制御ハブ・システム110は、M、MまたはMのうちの少なくとも1つを用いて制御フロー結果を生成することができる。図6に示す例において、例示的なプログラム命令610では、Mがゼロの値を有する場合、回転Rzが実行されるべきである(分岐右)。回転が行われるとき、MおよびMのそれぞれの値は、係数nを決定することによって回転量を決定することができる。そのために、例示的なプログラム命令610において、MおよびMは、Mによって表される2ビット・バイナリ・フィールドを定義する。このため、図6に示したように、回転量は4つの値:0b00、0b01、0b10および0b11によって決定することができる。「分岐」によって表される変数は、2つの値(例えば、LまたはR)のうちの1つを有することができ、これらの値の各々は、Mの値に応じてとられる実行経路を特定する。制御ハブ・システム110は、「分岐」変数を定義するペイロード・データを含むことができる命令-データ・メッセージ620を生成することができる。すなわち、ペイロード・データは、例えば「L」または「R」のうちの1つに対し分岐変数を構成することができる。命令-データ・メッセージ620は、係数nを特定するオペランドを定義する第2のペイロード・データも含むことができる。この係数は、回転量θ・nを定義する。次に、制御ハブ・システム110は、命令-データ・メッセージ620をコントローラ・デバイス140に送信することができる。プログラムにおけるノード2において、CFG500は「分岐」変数情報を用いて、実行経路Lまたは実行経路Rが次に実行されるか否かを判断する。したがって、命令-データ・メッセージ620が、分岐変数がRに等しいことを示すとき、ノード2を実行するコントローラ・デバイスは、ノード4を含む実行経路Rがとられ、次に実行されると判断することができる。ノード4において、次にコントローラ・デバイスは、オペランドを定義する第2のペイロード・データを用いて、行う回転Rzの度合いを決定することができる。
【0051】
図7は、本明細書に記載の1つまたは複数の実施形態による、量子プログラムの実行の集中型制御のための制御ハブ・システム110の非限定的例のブロック図である。図7に示すように、制御ハブ・システム120は、1つまたはいくつかのプロセッサ710と、1つまたはいくつかのメモリ・デバイス730(メモリ730と呼ばれる)と、クロック・ユニット114とを含むことができる。いくつかの実施形態では、プロセッサ710は、単一のコンピューティング装置(例えば、ブレード・サーバ・デバイスまたは別のタイプのサーバ・デバイス)において配置することができる。他の実施形態において、プロセッサ710は、2つ以上のコンピューティング装置(例えば、マルチ・ブレード・サーバ・デバイスまたは他のタイプのサーバ・デバイス)にわたって分散させることができる。
【0052】
プロセッサ710は、例えば1つまたはいくつかの通信インタフェース720を介して、メモリ730、クロック・ユニット114およびI/Oインタフェース740に作動的に結合することができる。通信インタフェース720は、プロセッサ710の特定の構成(局所化または分散)に好適であり得る。いくつかの実施形態では、通信インタフェース720は、イーサネット(R)・ベースの産業バス、コントローラ・エリア・ネットワーク(CAN)バス、Modbus、他のタイプのフィールドバス・アーキテクチャ等の1つまたは多数のバス・アーキテクチャを含むことができる。加えて、または他の実施形態において、通信インタフェースは、それぞれのフットプリントを有する無線ネットワークまたは有線ネットワークあるいはその両方を含むことができる。I/Oインタフェース840は、個々に、または特定の組合せで、制御ハブ・システム110からのデータ/シグナリングの送信、または制御・ハブ・システムにおけるデータ/シグナリングの受信、あるいはその両方を可能にする。I/Oインタフェース840は、シリアル・ポート、パラレル・ポート、汎用I/O(GPIO)ピン、またはその組合せを含むことができる。
【0053】
メモリ730は、機械アクセス可能コンポーネント(例えば、コンピュータ可読またはコンピュータ実行可能あるいはその両方のコンポーネント)および本開示によるデータを保持するかまたは他の形で記憶することができる。したがって、いくつかの実施形態では、機械アクセス可能命令(例えば、コンピュータ可読またはコンピュータ実行可能あるいはその両方の命令)は、メモリ730内の機械アクセス可能コンポーネントの各々を具現化するかまたは他の形で構成する。機械アクセス可能命令は、メモリ730に符号化することができ、機械アクセス可能コンポーネントの各々を形成するように配置することができる。機械アクセス可能命令は、メモリ730内または1つもしくはいくつかの他の機械アクセス可能非一過性ストレージ媒体にコンピュータ実行可能形態で構築(例えば、リンクおよびコンパイル)ならびに保持することができる。特に、図7に示すように、いくつかの実施形態では、機械アクセス可能コンポーネントは、同期コンポーネント310、コンポジション・コンポーネント320、コンパイル・コンポーネント330、メッセージング・コンポーネント340およびインジェスチョン・コンポーネント350を含む。メモリ730は、本明細書に記載の様々な機能を可能にするデータも含むことができる。例えば、図7に示すように、メモリ830は量子プログラム104を保持することができる。
【0054】
機械アクセス可能コンポーネントは、個々にまたは特定の組合せで、プロセッサ710のうちの少なくとも1つによってアクセスおよび実行することができる。実行に応じて、機械アクセス可能コンポーネントの各々は、量子プログラムの実行の集中型制御に関連して本明細書に記載した機能を提供することができる。したがって、メモリ730内に保持されるコンピュータアクセス可能コンポーネントの実行により、制御ハブ・システム110に本明細書に記載の態様に従って動作させることができる。より具体的には、例として、プロセッサ710のうちの少なくとも1つは、本明細書に記載の態様に従って、制御ハブ・システム110に技法のうちの1つまたは組合せ実行させる機械アクセス可能コンポーネントを実行することができる。
【0055】
図7には示していないが、制御ハブ・システム120は、メモリ730に保持される機械アクセス可能コンポーネントの実行を許可するかまたは他の形で容易にすることができる他のタイプのコンピューティング・リソースを含むこともできる。これらのコンピューティング・リソースは、例えば、中央処理ユニット(CPU)、グラフィック処理ユニット(GPU)、テンソル処理ユニット(TPU)、メモリ、ディスク空間、着信帯域幅または発信帯域幅あるいはその両方、インタフェース(I/Oインタフェース等)、コントローラ・デバイス、電源等を含むことができる。例えば、メモリ730も、プログラミング・インタフェース(API等)、オペレーティング・システム、仮想化環境の構成または制御あるいはその両方のためのソフトウェア、ファームウェア等を含むことができる。
【0056】
図8は、本明細書に記載の1つまたは複数の実施形態による、量子プログラムの実行の集中型制御のためのコントローラ・デバイス800の非限定的例のブロック図である。コントローラ・デバイス800は、本明細書に記載のコントローラ・デバイス140(図1)のうちの少なくとも1つを具現化することができるかまたは構成することができる。図8に示すように、コントローラ・デバイス800は、1つまたはいくつかのプロセッサ810と、1つまたはいくつかのメモリ・デバイス830(メモリ830と呼ばれる)と、クロック・ユニット144と、波形発生器450とを含むことができる。いくつかの実施形態では、プロセッサ810は、1つまたは多くの処理コアを有するマイクロ処理ユニット(MPU)において具現化することができる。他の実施形態において、プロセッサ810は、1つまたは多くの処理コアを有する専用処理デバイスにおいて具現化することができる。
【0057】
プロセッサ810は、例えば1つまたはいくつかの通信インタフェース820を介して、メモリ830、クロック・ユニット144、波形発生器450、モニタリング・コンポーネント430、およびI/Oインタフェース840に作動的に結合することができる。通信インタフェース820は、プロセッサ810の特定の構成(局所化または分散)に好適であり得る。いくつかの実施形態では、通信インタフェース820は、低電圧差分シグナリング(LVDS)、JESD204b、イーサネット(R)・ベースの産業バス、コントローラ・エリア・ネットワーク(CAN)バス、Modbus、他のタイプのフィールドバス・アーキテクチャ等の多数のバス・アーキテクチャのうちの1つまたは組合せを含むことができる。加えて、または他の実施形態において、通信インタフェースは、それぞれのフットプリントを有する無線ネットワークまたは有線ネットワークあるいはその両方を含むことができる。I/Oインタフェース840は、個々に、または特定の組合せで、コントローラ・デバイス800からのデータ/シグナリングの送信、またはコントローラ・デバイス800におけるデータ/シグナリングの受信、あるいはその両方を可能にする。I/Oインタフェース840は、プロセッサ810によって個々にアドレス指定することができる。I/Oインタフェース840は、シリアル・ポート、パラレル・ポート、汎用I/O(GPIO)ピン、またはその組合せを含むことができる。
【0058】
メモリ830は、機械アクセス可能コンポーネント(例えば、コンピュータ可読またはコンピュータ実行可能あるいはその両方のコンポーネント)および本開示によるデータを保持するかまたは他の形で記憶することができる。したがって、いくつかの実施形態では、機械アクセス可能命令(例えば、コンピュータ可読またはコンピュータ実行可能あるいはその両方の命令)は、メモリ830内の機械アクセス可能コンポーネントの各々を具現化するかまたは他の形で構成する。機械アクセス可能命令は、メモリ830に符号化することができ、機械アクセス可能コンポーネントの各々を形成するように配置することができる。機械アクセス可能命令は、メモリ830内または1つもしくはいくつかの他の機械アクセス可能非一過性ストレージ媒体にコンピュータ実行可能形態で構築(例えば、リンクおよびコンパイル)ならびに保持することができる。特に、図8に示すように、いくつかの実施形態では、機械アクセス可能コンポーネントは、インジェスチョン・コンポーネント410、制御フロー・ハンドリング・コンポーネント420、モニタリング・コンポーネント430および報告コンポーネント440を含む。メモリ830は、本明細書に記載の様々な機能を可能にするデータも含むことができる。例えば、図8に示すように、メモリ830は量子プログラム104を保持することができる。
【0059】
機械アクセス可能コンポーネントは、個々にまたは特定の組合せで、プロセッサ810のうちの少なくとも1つによってアクセスおよび実行することができる。実行に応じて、機械アクセス可能コンポーネントの各々は、量子プログラムの実行の集中型制御に関連して本明細書に記載した機能を提供することができる。したがって、メモリ830内に保持されるコンピュータアクセス可能コンポーネントの実行により、コントローラ・デバイス800に本明細書に記載の態様に従って動作させることができる。より具体的には、例として、プロセッサ810のうちの少なくとも1つは、本明細書に記載の態様に従って、コントローラ・デバイス800に技法のうちの1つまたは組合せ実行させる機械アクセス可能コンポーネントを実行することができる。
【0060】
図8には示していないが、コントローラ・デバイス800は、メモリ830に保持される機械アクセス可能コンポーネントの実行、ならびにデータまたはシグナリングあるいはその両方の受信および送信を許可するかまたは他の形で容易にすることができる他のタイプのコンピューティング・リソースも含むことができる。これらのコンピューティング・リソースは、例えば、他のメモリ、ディスク空間、着信帯域幅または発信帯域幅あるいはその両方、インタフェース(I/Oインタフェース等)、電源等を含むことができる。例えば、メモリ830も、プログラミング・インタフェース(API等)、オペレーティング・システム、仮想化環境の構成または制御あるいはその両方のためのソフトウェア、ファームウェア等を含むことができる。
【0061】
図9は、本開示の1つまたは複数の実施形態による、量子プログラムの実行の集中型制御のための方法900の例を示す。コンピューティング・システムは、例示的な方法900を全体的にまたは部分的に実施することができる。コンピュータ実装方法900を実施することは、例えばコンピュータ実装方法900に含まれるブロックのうちの1つまたはいくつかをコンパイルするかまたは実行するかあるいはその両方を行うことを含むことができる。コンピューティング・システムは、1つもしくはいくつかのプロセッサ、1つもしくはいくつかのメモリ・デバイス、他のタイプのコンピューティング・リソース(通信インタフェース等)、それらの組合せ、または他の類似のリソースを含むことができるか、またはそれらに作動的に結合することができるか、あるいはその両方である。コンピューティング・システムは、集中型制御システムを具現化するかまたは含むことができる。例えば、コンピューティング・システムは、制御ハブ・システム110(図1)を具現化することができる。
【0062】
ブロック910において、コンピューティング・システムは、集中型制御システム、および集中型制御システムに対しリモートに位置する複数のコントローラ・デバイスのそれぞれのクロックを同期させることができる。上述したように、複数のコントローラ・デバイスの第1のうちのコントローラ・デバイスは、複数のキュービット・デバイスのうちの第1のキュービット・デバイスへの信号の適用を制御することができ、複数のコントローラ・デバイスのうちの第2のコントローラ・デバイスは、複数のキュービット・デバイスのうちの第2のキュービット・デバイスへの信号の適用を制御することができる。これらのクロックを同期させるために、いくつかの実施形態では、コンピューティング・システムは、同期コンポーネント(例えば、同期コンポーネント310(図3))を実行して、集中型制御システムのクロック・ユニットを始動し、複数のコントローラ・デバイスに、内部に統合されたかまたは機能的に結合されたそれぞれのクロック・ユニットを始動するように指示することができる。
【0063】
ブロック920において、コンピューティング・システムは、量子プログラムを複数のコントローラ・デバイスに送信することができる。量子プログラムを送信することは、複数のコントローラ・デバイスの各々に、量子プログラムを定義するデータを送信することを含むことができる。いくつかの実施形態では、コンピューティング・システムは、コンパイル・コンポーネント(例えば、コンパイル・コンポーネント330(図3))を実行して、そのようなデータをコントローラ・デバイスに送信することができる。
【0064】
ブロック910およびブロック920は、まとめて準備段階を具現化することができる。準備段階の実施により、いくつかのコントローラ・デバイスの制御状態を集中制御されるように初期化することができる。
【0065】
ブロック930において、コンピューティング・システムは、量子プログラムの実行を開始するための複数の制御メッセージを生成することができる。いくつかの場合、複数のコントローラ・デバイスのそれぞれのクロックが同期されたため、複数の制御メッセージの各々は、量子プログラムの実行を開始する特定の時間(定義された遅延ΔtまたはFAT tFAT等)を定義するペイロード・データを含むことができる。いくつかの実施形態では、コンピューティング・システムは、コンポジション・コンポーネント(例えば、コンポジション・コンポーネント320(図3))を実行して、複数の制御メッセージを生成することができる。
【0066】
ブロック940において、コンピューティング・システムは、複数の制御メッセージを複数のコントローラ・デバイスの各々に送信することができる。複数の制御メッセージは、複数のコントローラ・デバイスをコンピューティング・システムに機能的に結合するそれぞれの高速のノン・ブロッキングのポイント・ツー・ポイント接続を介して送信することができる。いくつかの実施形態では、コンピューティング・システムは、メッセージング・コンポーネント(例えば、メッセージング・コンポーネント340(図3))を実行して、これらの接続を介して複数の制御メッセージを送信することができる。
【0067】
ブロック950において、コンピューティング・システムは、それぞれのキュービット・デバイスにおける1つまたは複数の測定値から結果として得られる測定データを受信することができる。いくつかの実施形態では、コンピューティング・システムは、インジェスチョン・コンポーネント(例えば、インジェスチョン・コンポーネント350(図3))を介して測定データを受信することができる。複数のコントローラ・デバイスのうちの第1のコントローラ・デバイスは、第1のキュービット・デバイスまたはそれぞれのキュービット・デバイスの状態の測定を引き起こすことができる。そのような測定の結果として、測定データの第1の測定データを得ることができる。次に、第1のコントローラ・デバイスは、第1の測定データをコンピューティング・システムに送信することができる。
【0068】
ブロック960において、コンピューティング・システムは、測定データを用いて、複数のコントローラ・デバイスの各々の1つまたは複数の制御メッセージを生成することができる。いくつかの実施形態では、コンピューティング・システムは、コンポジション・コンポーネントを実行して制御メッセージを生成することができる。
【0069】
ブロック970において、コンピューティング・システムは、制御メッセージのうちの第1の制御メッセージを複数のコントローラ・デバイスの各々の第1のコントローラ・デバイスに送信することができる。コンピューティング・システムは、メッセージング・コンポーネントを介して、例えば、第1のコントローラ・デバイスおよびコンピューティング・システムを機能的に結合する高速のノン・ブロッキングのポイント・ツー・ポイント接続を用いて、第1の制御メッセージを送信することができる。
【0070】
ブロック930~ブロック970は、まとめて制御段階を具現化することができる。制御段階の実施は、量子プログラムの実行の集中制御を可能にすることができる。
【0071】
図10は、本開示の1つまたは複数の実施形態による、量子プログラムの制御された実行のための方法1000の例を示す。コンピューティング・デバイスは、例示的な方法1000を全体的にまたは部分的に実施することができる。コンピュータ実装方法1000を実施することは、例えばコンピュータ実装方法1000に含まれるブロックのうちの1つまたはいくつかをコンパイルするかまたは実行するかあるいはその両方を行うことを含むことができる。コンピューティング・デバイスは、1つもしくはいくつかのプロセッサ、1つもしくはいくつかのメモリ・デバイス、他のタイプのコンピューティング・リソース(通信インタフェース等)、それらの組合せ、または他の類似のリソースを含むことができるか、またはそれらに作動的に結合することができるか、あるいはその両方である。コンピューティング・デバイスは、集中型制御システムを具現化するかまたは含むコンピューティング・システムに機能的に結合することができる。いくつかの実施形態では、コンピューティング・デバイスは、キュービット・コントローラ・デバイス(例えば、コントローラ・デバイス140(図1)のうちの1つ)を具現化し、コンピューティング・システムは、制御ハブ・システム110(図1)を具現化する。
【0072】
ブロック1010において、コンピューティング・デバイスは、コンピューティング・デバイスに対しリモートに位置する集中型制御システム(例えば、制御ハブ・システム110(図1))から量子プログラムを受信することができる。いくつかの実施形態では、コンピューティング・デバイスは、量子プログラムを実行する複数のキュービット・デバイスのうちの第1のキュービット・デバイスへの信号の適用を制御することができる。量子プログラムを受信することは、量子プログラムを定義するデータを受信することを含むことができる。そのようなデータは、コンピューティング・デバイスと集中型制御システムとの間の高速のノン・ブロッキングのポイント・ツー・ポイント接続を介して受信することができる。いくつかの実施形態では、コンピューティング・デバイスは、インジェスチョン・コンポーネント(例えば、インジェスチョン・コンポーネント410(図4))を実行して、量子プログラムを受信することができる。
【0073】
ブロック1020において、コンピューティング・デバイスは、ローカル・クロックを、集中型制御システムにおける基準クロックと同期させる信号を受信することができる。ローカル・クロックは、コンピューティング・デバイスに統合することができる。他の場合、ローカル・クロックは、短距離有線または無線リンクにおいてコンピューティング・デバイスに機能的に結合することができる。ローカル・クロックおよび基準クロックは、それぞれ、クロック・ユニット144(図1)およびクロック・ユニット114(図1)において具現化することができるかまたはこれらを構成することができる。
【0074】
ブロック1030において、コンピューティング・デバイスは、量子プログラムの実行を開始するための複数の制御メッセージを受信することができる。制御メッセージは、コンピューティング・デバイスと集中型制御システムとの間の高速のノン・ブロッキングのポイント・ツー・ポイント接続を介して受信することができる。いくつかの実施形態では、コンピューティング・デバイスは、制御メッセージを受信するインジェスチョン・コンポーネントを実行することができるかまたは実行し続けることができる。プロセッサは、プロセッサ460に組み込むことができるかまたはプロセッサを含むことができ、波形発生器は波形発生器450(図4)において具現化することができる。いくつかの場合、プロセッサは、少なくとも1つのマイクロプロセッサまたは少なくとも1つの専用プロセッサを含むことができる。
【0075】
ブロック1040において、コンピューティング・デバイスは、量子プログラムの実行中の量子プログラムの測定命令を特定することができる。いくつかの実施形態では、コンピューティング・デバイスは、コンポーネント(例えば、制御フロー・ハンドリング・コンポーネント420(図4))を実行して、そのような命令を特定することができる。
【0076】
ブロック1050において、コンピューティング・デバイスは、第1のキュービット・デバイスの状態、または第1のキュービット・デバイスもしくはその環境の他の物理的特性あるいはその両方の測定を引き起こすことができる。いくつかの実施形態では、コンピューティング・デバイスは、第1のキュービット・デバイスの状態または他の物理的特性あるいはその両方の測定を引き起こすモニタリング・コンポーネント(例えば、モニタリング・コンポーネント430(図4))を含むことができる。これらの実施形態において、測定命令を特定するコンポーネントは、第1のキュービット・デバイスの状態または他の物理的特性あるいはその両方の測定を引き起こすようにモニタリング・コンポーネントに指示することもできる。
【0077】
ブロック1060において、コンピューティング・デバイスは、集中型制御システムに、測定の結果として得られる測定データを送信することができる。そのために、いくつかの実施形態では、コンピューティング・デバイスは、報告コンポーネント(例えば、報告コンポーネント440(図4))を実行することができる。
【0078】
ブロック1070において、コンピューティング・デバイスは、集中型制御システムから、量子プログラムの分岐命令に応じて実行経路の選択を指示する制御メッセージを受信することができる。分岐命令は、ブロック1040において特定された測定命令に後続することができる。いくつかの場合、制御メッセージは、実行経路を定義するペイロード・データを含む。加えて、または他の場合、制御メッセージは、実行経路(図5(A)におけるノード510(4)等)内の量子演算命令に対応する1つまたは複数のオペランドを定義する第2のペイロード・データを含むこともできる。更に、また他の場合、制御メッセージは、コンピューティング・デバイスにおける量子プログラムの実行における中断に対応するFAT tFATを定義する他のペイロード・データを更に含むことができる。中断は、同様にコンピューティング・デバイスと同時に量子プログラムを実行する他のコンピューティング・デバイスに共通とすることができる。
【0079】
開示される主題の様々な態様についての文脈を提供するために、図11および後続の説明は、開示される主題の様々な態様が実装され得る好適な環境の一般的説明を提供するように意図される。図11は、本明細書に記載の1つまたは複数の実施形態を容易にすることができる例示的で非限定的な動作環境のブロック図を示す。本明細書に記載の他の実施形態において用いられる類似の要素の繰り返しの説明は、簡単にするために省かれる。本開示の様々な態様を実施するための好適な動作環境1100は、コンピュータ1112を含むことができる。コンピュータ1112は、処理ユニット1114、システム・メモリ1116、およびシステム・バス1118も含むことができる。システム・バス1118は、限定ではないが、システム・メモリ1116を含むシステム・コンポーネントを処理ユニット1114に作動的に結合することができる。処理ユニット1114は、様々な利用可能なプロセッサのうちの任意のものとすることができる。デュアル・マイクロプロセッサおよび他のマルチプロセッサ・アーキテクチャを処理ユニット1114として利用することもできる。システム・バス1118は、限定ではないが、インダストリアル・スタンダード・アーキテクチャ(ISA)、マイクロ・チャネル・アーキテクチャ(MCA)、拡張ISA(EISA)、インテリジェント・ドライブ・エレクトロニクス(IDE)、VESAローカル・バス(VLB)、ペリフェラル・コンポーネント・インタコネクト(PCI)、カード・バス、ユニバーサル・シリアル・バス(USB)、アドバンスド・グラフィックス・ポート(AGP)、Firewire、およびスモール・コンピュータ・システム・インタフェース(SCSI)を含む任意の多岐にわたる利用可能なバス・アーキテクチャを用いる、メモリバスもしくはメモリ・コントローラ、ペリフェラル・バスもしくは外部バス、またはローカル・バス、あるいはその組合せを含む、いくつかのタイプのバス構造のうちの任意のものとすることができる。システム・メモリ1116は、揮発性メモリ1120および不揮発性メモリ1122も含むことができる。例えば、起動中に、コンピュータ1112内の要素間で情報を転送するための基本的なルーチンを含む基本入出力システム(BIOS)を不揮発性メモリ1122に格納することができる。限定ではなく例示として、不揮発性メモリ1122は、リード・オンリー・メモリ(ROM)、プログラマブルROM(PROM)、電気的プログラマブルROM(EPROM)、電気的消去可能プログラマブルROM(EEPROM)、フラッシュ・メモリ、または不揮発性ランダム・アクセス・メモリ(RAM)(例えば、強誘電体RAM(FeRAM)を含むことができる。揮発性メモリ1120は、外部キャッシュ・メモリとして動作するランダム・アクセス・メモリ(RAM)も含むことができる。限定ではなく例として、RAMは、静的RAM(SRAM)、ダイナミックRAM(DRAM)、シンクロナスDRAM(SDRAM)、ダブル・データ・レートSDRAM(DDRSDRAM)、拡張SDRAM(ESDRAM)、シンクリンクDRAM(SLDRAM)、ダイレクト・ラムバスRAM(DRRAM)、ダイレクト・ラムバス・ダイナミックRAM(DRDRAM)、およびラムバス・ダイナミックRAM等の多くの形態で利用可能である。
【0080】
コンピュータ1112は、取り外し可能/非取り外し可能、揮発性/不揮発性コンピュータ記憶媒体も含むことができる。図11は例えばディスク・ストレージ1124を示す。ディスク・ストレージ1124は、限定ではないが、磁気ディスク・ドライブ、フロッピー(R)・ディスク・ドライブ、テープ・ドライブ、Jazドライブ、Zipドライブ、LS-100ドライブ、フラッシュ・メモリ・カード、またはメモリ・スティックのようなデバイスも含むことができる。ディスク・ストレージ1124は、別個に、または他の記憶媒体との組合せで記憶媒体も含むことができ、他の記憶媒体は、限定ではないが、コンパクト・ディスクROMデバイス(CD-ROM)、CD記録可能ドライブ(CD-Rドライブ)、CD書き換え可能ドライブ(CD-RWドライブ)、またはデジタル多用途ディスクROMドライブ(DVD-ROM)のような光学ディスク・ドライブを含む。システム・バス1118へのディスク・ストレージ1124の接続を容易にするために、インタフェース1126等の取り外し可能または非取り外し可能インタフェースを用いることができる。図11は、好適な動作環境1100において、ユーザと、記載の基本コンピュータ・リソースとの間の仲介として動作することができるソフトウェアも示す。そのようなソフトウェアは、例えば、オペレーティング・システム1128も含むことができる。ディスク・ストレージ1124に格納することができるオペレーティング・システム1128は、コンピュータ1112のリソースを制御し割り当てるように動作する。システム・アプリケーション1130は、例えば、システム・メモリ1116またはディスク・ストレージ1124のいずれかに格納されたプログラム・モジュール1132およびプログラム・データ1134を通じて、オペレーティング・システム1128によるリソースの管理を活用することができる。本開示は、様々なオペレーティング・システムまたはオペレーティング・システムの組合せで実装され得ることが認識されるべきである。ユーザは1つまたは複数の入力デバイス1136を通じてコンピュータ1112にコマンドまたは情報を入力する。入力デバイス1136は、限定ではないが、マウス、トラックボール、スタイラス、タッチパッド、キーボード、マイク、ジョイスティック、ゲーム・パッド、サテライト・ディッシュ、スキャナ、テレビ・チューナ・カード、デジタル・カメラ、デジタル・ビデオ・カメラ、ウェブ・カメラ等のポインティング・デバイスを含むことができる。これらおよび他の入力デバイスは、1つまたは複数のインタフェース・ポート1138を介して、システム・バス1118を通じて処理ユニット1114に接続することができる。1つまたは複数のインタフェース・ポート1138は、例えば、シリアル・ポート、パラレル・ポート、ゲーム・ポートおよびユニバーサル・シリアル・バス(USB)を含むことができる。1つまたは複数の出力デバイス1140は、同じタイプのポートのうちのいくつかを入力デバイス1136として用いることができる。したがって、例えば、USBポートを用いて、入力をコンピュータ1112に提供し、コンピュータ1112からの情報を出力デバイス1140に出力することができる。数ある他の出力デバイス1140の中でも、モニタ、スピーカ、およびプリンタのような、専用アダプタを必要とするいくつかの出力デバイス1140があることを示すために、出力アダプタ1142を提供することができる。出力アダプタ1142は、限定ではなく例示として、出力デバイス1140とシステム・バス1118との間の接続手段を提供するビデオおよびサウンド・カードを含むことができる。他のデバイスもしくはデバイスのシステムまたはその両方は、1つまたは複数のリモート・コンピュータ1144等の、入力および出力両方の能力を提供することに留意すべきである。
【0081】
コンピュータ1112は、リモート・コンピュータ1144等の1つまたは複数のリモート・コンピュータへの論理接続を使用して、ネットワーク環境において動作することができる。リモート・コンピュータ1144は、コンピュータ、サーバ、ルータ、ネットワークPC、ワークステーション、マイクロプロセッサ・ベースの機器、ピア・デバイスまたは他の共通ネットワーク・ノード等とすることができ、典型的には、コンピュータ1112に関して説明される要素のうちの多くまたは全ても含むことができる。簡潔にする目的で、メモリ・ストレージ・デバイス1146のみがリモート・コンピュータ1144と共に示される。リモート・コンピュータ1144は、ネットワーク・インタフェース1148を通じて論理的にコンピュータ1112に接続し、その後、通信接続1150を介して物理的に接続することができる。更に、動作は、複数の(ローカルおよびリモート)システムにわたって分散させることができる。ネットワーク・インタフェース1148は、ローカル・エリア・ネットワーク(LAN)、ワイド・エリア・ネットワーク(WAN)、セルラ・ネットワーク等のような、有線または無線あるいはその両方の通信ネットワークを包含することができる。LAN技術は、ファイバ分散データ・インタフェース(FDDI)、銅線分散データ・インタフェース(CDDI)、イーサネット(R)、およびトークン・リング等を含む。WAN技術は、限定ではないが、ポイント・ツー・ポイント・リンク、統合サービス・デジタル・ネットワーク(ISDN)およびその変形形態のような回線交換ネットワーク、パケット交換ネットワーク、およびデジタル加入者線(DSL)を含む。1つまたは複数の通信接続1150は、ネットワーク・インタフェース1148をシステム・バス1118に接続するために利用されるハードウェア/ソフトウェアを指す。明確な例示のために、通信接続1150はコンピュータ1112内部に示されているが、コンピュータ1112の外部にもあり得る。ネットワーク・インタフェース1148に接続するためのハードウェア/ソフトウェアはまた、例示の目的のみで、通常の電話グレード・モデム、ケーブル・モデム、DSLモデムを含むモデム、ISDNアダプタ、イーサネット(R)カード等の内部および外部技術を含むことができる。
【0082】
いくつかの実施形態では、本明細書に記載の制御ハブ・システム110は、クラウド・コンピューティング環境に関連付けることができる。例えば、制御ハブ・システム110は、図12に示す動作環境1200に含まれるクラウド・コンピューティング環境1250に関連付けることができるか、または図13を参照して本明細書に記載した1つまたは複数の機能抽象化レイヤ(例えば、ハードウェアおよびソフトウェア・レイヤ1360、仮想化レイヤ1370、管理レイヤ1380またはワークロード・レイヤ1390あるいはその組合せ)に関連付けることができるか、あるいはその両方である。
【0083】
本開示は、クラウド・コンピューティングに関する詳細な説明を含むが、本明細書に記載の教示の実施は、クラウド・コンピューティング環境に限定されないことを理解されたい。むしろ、本発明の実施形態は、現在既知の、または後に開発される任意の他のタイプのコンピューティング環境と併せて実装することが可能である。
【0084】
クラウド・コンピューティングは、最小限の管理労力およびサービス・プロバイダとの対話で迅速にプロビジョニングおよびリリースすることができる、構成可能なコンピューティング・リソース(例えば、ネットワーク、ネットワーク帯域幅、サーバ、処理、メモリ、ストレージ、アプリケーション、仮想マシンおよびサービス)の共有プールへの好都合でオン・デマンドのネットワーク・アクセスを可能にするためのサービス送達のモデルである。このクラウド・モデルは、少なくとも5つの特性、少なくとも3つのサービス・モデル、および少なくとも4つの展開モデルを含むことができる。
【0085】
特性は以下の通りである。
【0086】
オン・デマンドのセルフサービス:クラウド消費者は、サービス・プロバイダとの人間の対話を必要とすることなく、自動的に必要に応じて、サーバ時間およびネットワーク・ストレージ等のコンピューティング能力を一方的にプロビジョニングすることができる。
【0087】
ブロード・ネットワーク・アクセス:能力は、ネットワークを介して利用可能にされ、異種シンまたはシック・クライアント・プラットフォーム(例えば、携帯電話、ラップトップおよびPDA)による使用を促進する標準的なメカニズムを通じてアクセスされる。
【0088】
リソース・プーリング:マルチ・テナント・モデルを用いて複数の消費者にサービングするために、プロバイダのコンピューティング・リソースがプールされ、異なる物理的リソースおよび仮想リソースが、要求に従って動的に割当ておよび再割当てされる。消費者が、通常、提供されるリソースの厳密な場所に対する制御も知識も有しないが、より高い抽象度(例えば、国、州またはデータ・センタ)で場所を指定することが可能であり得るという点で、場所独立性の意義がある。
【0089】
高速な弾力性:能力は、場合によっては自動的に、即座にスケール・アウトするように高速かつ弾力的にプロビジョニングされ、即座にスケール・インするように高速に解放され得る。消費者に対しては、プロビジョニングに利用可能な能力が、多くの場合無制限であるように見え、いつでも任意の量で購入可能である。
【0090】
測定されるサービス:クラウド・システムは、サービスのタイプ(例えば、ストレージ、処理、帯域幅、アクティブなユーザ・アカウント)に適した或る抽象度において計測能力を活用することによって、リソース使用を自動的に制御し、最適化する。リソース使用量は、モニタリング、制御、および報告することができ、利用サービスのプロバイダおよび消費者の両方に透明性がもたらされる。
【0091】
サービス・モデルは、以下の通りである。
【0092】
サービスとしてのソフトウェア(SaaS):消費者に提供される能力は、クラウド・インフラ上で実行中のプロバイダのアプリケーションを使用する能力である。アプリケーションは、ウェブ・ブラウザ等のシン・クライアント・インタフェース(例えば、ウェブ・ベースの電子メール)を通して、様々なクライアント・デバイスからアクセス可能である。消費者は、限定されたユーザ固有アプリケーションの構成設定は例外である可能性があるが、ネットワーク、サーバ、オペレーティング・システム、ストレージ、または更には個々のアプリケーション能力を含む、基礎となるクラウド・インフラを管理または制御しない。
【0093】
サービスとしてのプラットフォーム(PaaS):消費者に提供される能力は、プロバイダによってサポートされるプログラミング言語およびツールを用いて生成された、消費者が作成または取得したアプリケーションを、クラウド・インフラ上に展開する能力である。消費者は、ネットワーク、サーバ、オペレーティング・システム、またはストレージを含む基礎となるクラウド・インフラを管理または制御しないが、展開されたアプリケーション、および、場合によっては、アプリケーション・ホスティング環境構成に対して制御を行う。
【0094】
サービスとしてのインフラ(IaaS):消費者に提供される能力は、処理、ストレージ、ネットワーク、ならびに消費者がオペレーティング・システムおよびアプリケーションを含み得る任意のソフトウェアを展開および実行することが可能な、他の基本コンピューティング・リソースをプロビジョニングする能力である。消費者は、基礎となるクラウド・インフラを管理または制御しないが、オペレーティング・システム、ストレージ、展開されたアプリケーションに対して制御を行い、かつ場合によっては、選択ネットワーキング・コンポーネント(例えば、ホスト・ファイアウォール)の限定的な制御を行う。
【0095】
展開モデルは、以下の通りである。
【0096】
プライベート・クラウド:クラウド・インフラは、組織のためだけに動作される。クラウド・インフラは、その組織または第三者によって管理されてもよく、構内または構外に存在し得る。
【0097】
コミュニティ・クラウド:クラウド・インフラは、いくつかの組織によって共有され、共有の関心事(例えば、任務、セキュリティ要件、ポリシー、およびコンプライアンスの考慮事項)を有する特定のコミュニティをサポートする。クラウド・インフラは、その組織または第三者によって管理されてもよく、構内または構外に存在し得る。
【0098】
パブリック・クラウド:クラウド・インフラは、一般公衆または大きな業界団体に利用可能とされ、クラウド・サービスを販売する組織によって所有される。
【0099】
ハイブリッド・クラウド:クラウド・インフラは、一意なエンティティのままであるが、データおよびアプリケーション・ポータビリティを可能にする標準化技術または独自技術(例えば、クラウド間のロード・バランシングのためのクラウド・バースティング)によって結合された、2つ以上のクラウド(プライベート、コミュニティ、またはパブリック)の合成物である。
【0100】
クラウド・コンピューティング環境は、無国籍、低結合、モジュール性、および意味相互運用性に焦点を当てたサービス指向型である。クラウド・コンピューティングの中心は、相互接続されたノードのネットワークを含むインフラである。
【0101】
ここで図12を参照すると、例示的なクラウド・コンピューティング環境1250が示されている。図示するように、クラウド・コンピューティング環境1250は、クラウド消費者によって使用されるローカル・コンピューティング・デバイス、例えば、携帯情報端末(PDA)もしくは携帯電話1254A、デスクトップ・コンピュータ1254B、ラップトップ・コンピュータ1254C、または自動車コンピュータ・システム1254N、あるいはそれらの組合せが通信し得る、1つまたは複数のクラウド・コンピューティング・ノード1210を含む。図12には示していないが、クラウド・コンピューティング・ノード1210は、クラウド消費者によって用いられるローカル・コンピューティング・デバイスが通信することができる量子プラットフォーム(例えば、量子コンピュータ、量子ハードウェア、量子ソフトウェア、または別の量子プラットフォーム、あるいはその組合せ)を更に含むことができる。ノード1210は、互いに通信することができる。それらは、上述のようなプライベート、コミュニティ、パブリック、もしくはハイブリッド・クラウド、またはそれらの組合せ等の、1つまたは複数のネットワーク内で物理的または仮想的にグループ化されてもよい(図示せず)。これによって、クラウド・コンピューティング環境1250が、インフラ、プラットフォーム、またはソフトウェア、あるいはそれらの組合せを、クラウド消費者がローカル・コンピューティング・デバイス上でリソースを維持する必要がないサービスとして提案することが可能となる。図12に示されるコンピューティング・デバイス125A~Nのタイプは、単なる例示であることを意図し、コンピューティング・ノード1210およびクラウド・コンピューティング環境1250は、任意のタイプのネットワークまたはネットワーク・アドレス可能な接続あるいはその両方を経て(例えば、ウェブ・ブラウザを用いて)、任意のタイプのコンピュータ化デバイスと通信し得ると理解される。
【0102】
ここで図13を参照すると、クラウド・コンピューティング環境1250(図12)によって提供される機能抽象化レイヤのセットが示されている。図13に示されるコンポーネント、レイヤ、および機能は、単なる例示であることが意図され、本発明の実施形態は、それらに限定されないと、予め理解されるべきである。図示するように、以下のレイヤおよび対応する機能が提供される。
【0103】
ハードウェアおよびソフトウェア・レイヤ1360は、ハードウェアおよびソフトウェア・コンポーネントを含む。ハードウェア・コンポーネントの例は、メインフレーム1361、RISC(縮小命令セット・コンピュータ)、アーキテクチャ・ベース・サーバ1362、サーバ1363、ブレード・サーバ1364、ストレージ・デバイス1365、ならびにネットワークおよびネットワーキング・コンポーネント1366を含む。いくつかの実施形態では、ソフトウェア・コンポーネントは、ネットワーク・アプリケーション・サーバ・ソフトウェア1367、データベース・ソフトウェア1368、量子プラットフォーム・ルーティング・ソフトウェア(図13には示していない)、または量子ソフトウェア(図13には示していない)、あるいはその組合せを含む。
【0104】
仮想化レイヤ1370は、仮想エンティティの以下の例、仮想サーバ1371、仮想ストレージ1372、仮想プライベート・ネットワークを含む仮想ネットワーク1373、仮想アプリケーションおよびオペレーティング・システム1374、ならびに仮想クライアント1375が提供され得る、抽象化レイヤを提供する。
【0105】
1つの例では、管理レイヤ1380は、後述する機能を提供することができる。リソース・プロビジョニング1381は、クラウド・コンピューティング環境内でタスクを実行するために利用される、コンピューティング・リソースおよび他のリソースの動的な調達を提供する。測定および価格設定1382は、リソースがクラウド・コンピューティング環境内で利用されるときにコスト追跡を提供し、これらのリソースの消費に対する課金または請求を提供する。1つの例では、これらのリソースは、アプリケーション・ソフトウェア・ライセンスを含み得る。セキュリティは、データおよび他のリソースについての保護だけでなく、クラウド消費者およびタスクについての本人確認を提供する。ユーザ・ポータル1383は、消費者およびシステム管理者にクラウド・コンピューティング環境へのアクセスを提供する。サービス・レベル管理1384は、要求されるサービス・レベルが満たされるように、クラウド・コンピューティング・リソース配分および管理を提供する。サービス水準合意(SLA)計画および遂行1385は、SLAに従って将来の要件が予期されるクラウド・コンピューティング・リソースの事前配置および調達を提供する。
【0106】
ワークロード・レイヤ1390は、クラウド・コンピューティング環境が利用され得る機能性の例を提供する。このレイヤから提供され得るワークロードおよび機能の非限定的例は、マッピングおよびナビゲーション1391、ソフトウェア開発およびライフサイクル管理1392、仮想クラスルーム教育配信1393、データ解析処理1394、トランザクション処理1395、および脆弱性リスク評価ソフトウェア1396を含む。
【0107】
本発明の実施形態は、統合の任意の可能な技術的詳細レベルにおける、システム、方法、装置またはコンピュータ・プログラム製品、あるいはそれらの組合せとすることができる。コンピュータ・プログラム製品は、プロセッサに本発明の態様を実行させるためのコンピュータ可読プログラム命令を有するコンピュータ可読記憶媒体を含むことができる。
【0108】
コンピュータ可読記憶媒体は、命令実行デバイスによって用いるための命令を保持および記憶することができる有形デバイスとすることができる。コンピュータ可読記憶媒体は、例えば、限定ではないが、電子ストレージ・デバイス、磁気ストレージ・デバイス、光ストレージ・デバイス、電磁ストレージ・デバイス、半導体ストレージ・デバイス、または上記の任意の適切な組合せとすることができる。コンピュータ可読記憶媒体のより具体的な例の非網羅的なリストは、以下のもの、すなわち、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、リード・オンリー・メモリ(ROM)、消去可能プログラマブル・リード・オンリー・メモリ(EPROMまたはフラッシュ・メモリ)、スタティック・ランダム・アクセス・メモリ(SRAM)、ポータブル・コンパクト・ディスク・リード・オンリー・メモリ(CD-ROM)、デジタル・バーサタイル・ディスク(DVD)、メモリ・スティック、フロッピー(R)・ディスク、パンチカードまたは命令が記録された溝内の隆起構造等の機械的に符号化されたデバイス、および上記の任意の適切な組合せも含むことができる。本明細書において用いられるとき、コンピュータ可読記憶媒体は、電波もしくは他の自由に伝播する電磁波、導波路もしくは他の伝送媒体を通じて伝播する電磁波(例えば、光ファイバ・ケーブルを通る光パルス)、または配線を介して送信される電気信号等の、一過性の信号自体であると解釈されるべきではない。
【0109】
本明細書に記載のコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体からそれぞれのコンピューティング/処理デバイスに、または、ネットワーク、例えばインターネット、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワーク、またはワイヤレス・ネットワークあるいはその組合せを介して外部コンピュータまたは外部記憶デバイスにダウンロードすることができる。ネットワークは、銅伝送ケーブル、光伝送ファイバ、ワイヤレス伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、またはエッジ・サーバあるいはその組合せを含むことができる。各コンピューティング/処理デバイスにおけるネットワーク・アダプタ・カードまたはネットワーク・インタフェースが、ネットワークからコンピュータ可読プログラム命令を受信し、それらのコンピュータ可読プログラム命令を、それぞれのコンピューティング/処理デバイス内のコンピュータ可読記憶媒体への記憶のために転送する。
【0110】
本発明の様々な態様の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ(ISA)命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、集積回路のための構成データ、または、Smalltalk(R)、C++等のオブジェクト指向プログラミング言語および「C」プログラミング言語もしくは同様のプログラム言語等の手続き型プログラミング言語を含む1つまたは複数のプログラミング言語の任意の組合せで書かれたソース・コードもしくはオブジェクト・コードとすることができる。コンピュータ可読プログラム命令は、スタンド・アロン・ソフトウェア・パッケージとして全体がユーザのコンピュータ上で、一部がユーザのコンピュータ上で、一部がユーザのコンピュータ上かつ一部がリモート・コンピュータ上で、または全体がリモート・コンピュータもしくはサーバ上で実行されてもよい。後者の場合、リモート・コンピュータは、ローカル・エリア・ネットワーク(LAN)もしくはワイド・エリア・ネットワーク(WAN)を含む、任意のタイプのネットワークを介してユーザのコンピュータに接続されてもよく、または接続は外部コンピュータ(例えば、インターネット・サービス・プロバイダを使用してインターネットを介して)に対して行ってもよい。いくつかの実施形態では、本発明の態様を実行するために、例えばプログラマブル・ロジック回路、フィールド・プログラマブル・ゲート・アレイ(FPGA)、またはプログラマブル・ロジック・アレイ(PLA)を含む電子回路が、コンピュータ可読プログラム命令の状態情報を利用して電子回路をカスタマイズすることによって、コンピュータ可読プログラム命令を実行することができる。
【0111】
本発明の態様について、本発明の実施形態による方法、装置(システム)、およびコンピュータ・プログラム製品のフローチャート図またはブロック図あるいはその両方を参照しながら本明細書において説明している。フローチャート図またはブロック図あるいはその両方の各ブロック、およびフローチャート図またはブロック図あるいはその両方のブロックの組合せは、コンピュータ可読プログラム命令によって実施され得ることが理解されよう。
【0112】
これらのコンピュータ可読プログラム命令は、コンピュータまたは他のプログラマブル・データ処理装置のプロセッサを介して実行される命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックで指定される機能/動作を実施する手段を作り出すように、汎用コンピュータ、専用コンピュータ、または他のプログラマブル・データ処理装置のプロセッサに提供されて、マシンを作り出すものであってもよい。これらのコンピュータ可読プログラム命令は、命令が記憶されたコンピュータ可読記憶媒体が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックで指定される機能/動作の態様を実施する命令を含む製造品を含むように、コンピュータ可読媒体に記憶され、コンピュータ、プログラマブル・データ処理装置、または他のデバイスあるいはその組合せに対して特定の方式で機能するように指示することができるものであってもよい。
【0113】
コンピュータ可読プログラム命令は、コンピュータ、他のプログラマブル装置、または他のデバイスで実行される命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックに指定される機能/動作を実施するように、コンピュータ実装プロセスを作り出すべく、コンピュータ、他のプログラマブル・データ処理装置、または他のデバイスにロードされて、コンピュータ、他のプログラマブル装置、または他のデバイス上で一連の演算動作を実行させるものであってもよい。
【0114】
図中のフローチャートおよびブロック図は、本発明の様々な実施形態によるシステム、方法およびコンピュータ・プログラム製品の可能な実装形態のアーキテクチャ、機能性および動作を示す。なお、フローチャートまたはブロック図の各ブロックは、指定される論理機能を実装するための1つまたは複数の実行可能命令を含む、命令のモジュール、セグメント、または部分を表すことができる。いくつかの代替の実装形態では、ブロックに記載されている機能は、図に記載されている順序とは異なる順序で行われてもよい。例えば、連続して示されている2つのブロックは、関与する機能性に応じて、実際には実質的に同時に実行されてよく、またはそれらのブロックは場合によっては逆の順序で実行されてもよい。ブロック図またはフローチャート図あるいはその両方の各ブロック、およびブロック図またはフローチャート図あるいはその両方のブロックの組合せは、指定される機能または動作を実行するか、あるいは専用ハードウェアとコンピュータ命令との組合せを遂行する専用ハードウェア・ベースのシステムによって実施され得ることにも留意されたい。
【0115】
主題は、1つ以上のコンピュータ上で実行されるコンピュータ・プログラム製品のコンピュータ実行可能命令の一般的な文脈で上述されてきたが、当業者は、本開示がまた、他のプログラム・モジュールと組み合わせて実装することができることを認識するであろう。一般に、プログラム・モジュールは、特定のタスクを実行するかまたは特定の抽象データ・タイプを実装するかあるいはその両方を行う、ルーチン、プログラム、コンポーネント、データ構造等を含む。更に、当業者は、本発明のコンピュータ実装方法が、シングル・プロセッサまたはマルチ・プロセッサ・コンピュータ・システム、ミニ・コンピュータ装置、メインフレーム・コンピュータ、ならびにコンピュータ、ハンド・ヘルド・コンピュータ装置(例えば、PDA、電話)、マイクロプロセッサ・ベースのまたはプログラム可能なコンシューマまたは産業用電子機器等を含む他のコンピュータ・システム構成で実施できることを理解するであろう。示された態様は、通信ネットワークを介してリンクされているリモート処理デバイスによってタスクが実行される分散型クラウド・コンピューティング環境において実施されてもよい。しかしながら、本開示の全てではないにしてもいくつかの態様は、スタンド・アロン・コンピュータにおいて実施されてもよい。分散コンピューティング環境では、プログラム・モジュールは、ローカルおよびリモートの両方のメモリ・ストレージ・デバイスに配置され得る。
【0116】
本出願において用いられるとき、「コンポーネント」、「システム」、「プラットフォーム」、「インタフェース」等の用語は、1つまたは複数の特定の機能を含むコンピュータ関連のエンティティまたは操作可能なマシンに関連するエンティティを指すことができるか、またはそれらのエンティティを含むことができるか、あるいはその両方が可能である。本明細書に開示されるエンティティは、ハードウェア、ハードウェアとソフトウェアとの組合せ、ソフトウェア、または実行中のソフトウェアのいずれかとすることができる。例えば、コンポーネントは、限定ではないが、プロセッサ上で実行されるプロセス、プロセッサ、オブジェクト、実行ファイル、実行のスレッド、プログラム、またはコンピュータ、あるいはその組合せとすることができる。例示として、サーバ上で実行されるアプリケーションおよびサーバの両方を、コンポーネントとすることができる。1つまたは複数のコンポーネントが、プロセス内または実行のスレッド内あるいはその両方に存在することができ、コンポーネントは、1つのコンピュータ上に局在するか、または2つ以上のコンピュータ間で分散されるか、あるいはその両方が可能である。別の例では、それぞれのコンポーネントは、様々なデータ構造が格納されている様々なコンピュータ可読媒体から実行することができる。コンポーネントは、1つまたは複数のデータ・パケット(例えば、ローカル・システム内または分散システム内の別のコンポーネントとインタラクトするか、またはインターネット等のネットワークを経由して、信号を介して他のシステムとインタラクトするか、あるいはその両方によってインタラクトする、1つのコンポーネントからのデータ)を有する信号等に従って、ローカルまたはリモートあるいはその両方のプロセスを介して通信することができる。別の例として、コンポーネントは、電気または電子回路によって操作される機械的部品によって提供される特定の機能を有する装置とすることができ、プロセッサによって実行されるソフトウェア・アプリケーションまたはファームウェア・アプリケーションによって操作される。そのような場合、プロセッサは、装置の内部または外部に存在することができ、ソフトウェア・アプリケーションまたはファームウェア・アプリケーションの少なくとも一部を実行することができる。更に別の例として、コンポーネントは、機械的部品を有しない電子コンポーネントを通じて特定の機能を提供する装置とすることができ、これらの電子コンポーネントは、電子コンポーネントの機能の少なくとも一部を与えるソフトウェアまたはファームウェアを実行するためのプロセッサまたはその他の手段を含むことができる。一態様では、コンポーネントは、例えばクラウド・コンピューティング・システム内で、仮想マシンを介して電子コンポーネントをエミュレートすることができる。
【0117】
加えて、「または」という用語は、排他的論理和ではなく、包含的論理和を意味するように意図されている。すなわち、特に指定されない限り、または文脈から明らかでない限り、「XがAまたはBを使用する」は、自然な包含的順列のいずれかを意味するように意図されている。すなわち、XがAを使用するか、XがBを使用するか、またはXがAおよびBの両方を使用する場合、「XがAまたはBを使用する」が、前述の事例のいずれかにおいて満たされる。更に、本明細書および添付の図面において使用されるとき、冠詞「a」および「an」は、単数形を対象にすることが特に指定されない限り、または文脈から明らかでない限り、「1つまたは複数」を意味すると一般に解釈されるべきである。本明細書において使用されるとき、「例」または「例示的」あるいはその両方の用語は、例、事例、または実例となることを意味するために利用される。疑念を避けるために、本明細書で開示される主題は、そのような例によって制限されない。加えて、「例」または「例示的」あるいはその両方として本明細書に記載された任意の態様または設計は、他の態様または設計よりも好ましいか、または有利であると必ずしも解釈されず、当業者に知られている同等の例示的な構造および技術を除外するように意図されていない。
【0118】
本明細書において使用されるとき、「プロセッサ」という用語は、限定ではないが、シングルコア・プロセッサと、ソフトウェアのマルチスレッド実行機能を備えるシングル・プロセッサと、マルチコア・プロセッサと、ソフトウェアのマルチスレッド実行機能を備えるマルチコア・プロセッサと、ハードウェアのマルチスレッド技術を備えるマルチコア・プロセッサと、並列プラットフォームと、分散共有メモリを備える並列プラットフォームとを含む、実質的に任意のコンピューティング処理ユニットまたはデバイスを指すことができる。更に、プロセッサは、集積回路、特定用途向け集積回路(ASIC)、デジタル信号プロセッサ(DSP)、フィールド・プログラマブル・ゲート・アレイ(FPGA)、プログラマブル・ロジック・コントローラ(PLC)、複合プログラム可能論理デバイス(CPLD)、個別のゲートまたはトランジスタ論理、個別のハードウェア・コンポーネント、あるいは本明細書に記載された機能を実行するように設計されたその任意の組合せを指すことができる。更に、プロセッサは、空間利用を最適化し、またはユーザ機器の性能を向上するために、限定ではないが、分子および量子ドット・ベースのトランジスタ、スイッチ、およびゲート等のナノスケール・アーキテクチャを活用することができる。プロセッサは、計算処理ユニットの組合せとして実装されてもよい。
【0119】
本開示では、コンポーネントの動作および機能に関連する「ストア」、「ストレージ」、「データ・ストア」、「データ・ストレージ」、「データベース」、「レポジトリ」、および実質的に任意の他の情報格納コンポーネント等の用語は、「メモリ・コンポーネント」、「メモリ」内に具現化されたエンティティ、またはメモリを含むコンポーネントを指すために利用される。本明細書に記載のメモリまたはメモリ・コンポーネントあるいはその両方が、揮発性メモリまたは不揮発性メモリのいずれかとすることができ、あるいは揮発性メモリおよび不揮発性メモリの両方を含むことができるということが、理解されるべきである。限定ではなく例示として、不揮発性メモリは、リード・オンリー・メモリ(ROM)、プログラマブルROM(PROM)、電気的プログラマブルROM(EPROM)、電気的消去可能ROM(EEPROM)、フラッシュ・メモリ、または不揮発性ランダム・アクセス・メモリ(RAM)(例えば、強誘電体RAM(FeRAM)を含むことができる。揮発性メモリは、例えば外部キャッシュ・メモリとして機能することができる、RAMを含むことができる。限定ではなく例として、RAMは、シンクロナスRAM(SRAM)、ダイナミックRAM(DRAM)、シンクロナスDRAM(SDRAM)、ダブル・データ・レートSDRAM(DDRSDRAM)、拡張SDRAM(ESDRAM)、シンクリンクDRAM(SLDRAM)、ダイレクト・ラムバスRAM(DRRAM)、ダイレクト・ラムバス・ダイナミックRAM(DRDRAM)、およびラムバス・ダイナミックRAM(RDRAM)等の多くの形態で利用可能である。更に、開示された本明細書のシステムまたはコンピュータ実装方法のメモリ・コンポーネントは、限定ではないがこれらおよび任意のその他の適切なタイプのメモリを含むように意図されている。
【0120】
上記の内容は、システム、コンピュータ・プログラム製品およびコンピュータ実装方法の単なる例を含む。当然ながら、本開示を説明する目的で、コンポーネント、製品またはコンピュータ実装方法あるいはそれらの組合せの考えられる全ての組合せについて説明することは不可能であるが、当業者は、本開示の多くの更なる組合せおよび並べ替えが可能であるということを認識できる。更に、「含む」、「有する」、「所有する」等の用語が、発明を実施するための形態、特許請求の範囲、付録、および図面において用いられる範囲では、それらの用語は、「備える」が特許請求における暫定的な用語として使用されるときに解釈されるような、用語「備える」と同様の方法で、包含的であるように意図される。
【0121】
様々な実施形態の説明が、例示の目的で提示されたが、包括であることも、開示される実施形態に限定されることも意図されていない。説明された実施形態の思想および範囲から逸脱することなく、多くの変更形態および変形形態が当業者には明らかとなろう。本明細書において用いられる用語は、実施形態の原理、実際の用途、もしくは市場に見られる技術を上回る技術の改善を最も良好に説明し、または他の当業者が、本明細書に開示される実施形態を理解することを可能にするために選択された。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
【手続補正書】
【提出日】2024-07-23
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
システムであって、
メモリに記憶されたコンピュータ実行可能コンポーネントを実行するプロセッサを備え、前記コンピュータ実行可能コンポーネントは、
前記システムに対しリモートに位置する複数のコントローラ・デバイスが、互いに、および前記システムと同期するようにする、同期コンポーネントと、
それぞれのキュービット・デバイスにおける1つまたは複数の測定値から結果として得られる測定データにアクセスするインジェスチョン・コンポーネントと、
前記測定データを用いて、前記複数のコントローラ・デバイスのそれぞれの第2のコントローラ・デバイスのための1つまたは複数の制御メッセージを生成するコンポジション・コンポーネントであって、前記それぞれの第2のコントローラ・デバイスのうちの第1のコントローラ・デバイスは、前記それぞれのキュービット・デバイスのうちの第1のキュービット・デバイスへの信号の適用を制御する、前記コンポジション・コンポーネントと、
を備える、システム。
【請求項2】
高速のノン・ブロッキングのポイント・ツー・ポイント接続を介して、前記1つまたは複数の制御メッセージのうちの第1のメッセージを前記第1のコントローラ・デバイスに送信するメッセージング・コンポーネントを更に備える、請求項1に記載のシステム。
【請求項3】
前記コンポジション・コンポーネントは、前記第1のキュービット・デバイスにおける量子プログラムの実行中の分岐命令のための実行経路を定義する第1のペイロード・データ、または前記実行経路内の1つまたは複数の量子演算に対応するオペランド・データを定義する第2のペイロード・データのうちの少なくとも1つを有する第1のメッセージを生成する、請求項1または2に記載のシステム。
【請求項4】
前記コンポジション・コンポーネントは、量子プログラムの実行における中断に対応する未来の作動時間を定義するペイロード・データを有する第1のメッセージを生成する、請求項1または2に記載のシステム。
【請求項5】
量子プログラムを定義するデータを前記複数のコントローラ・デバイスに送信するコンパイル・コンポーネントを更に備え、前記複数のコントローラ・デバイスは、前記それぞれのキュービット・デバイスを含む複数のキュービット・デバイスの各々へのそれぞれの信号の適用を制御する、請求項1または2に記載のシステム。
【請求項6】
前記コンポジション・コンポーネントは、前記複数のキュービット・デバイスにおける前記量子プログラムの実行を開始するために、複数の第2の制御メッセージを生成し、
前記システムは、高速のノン・ブロッキングのポイント・ツー・ポイント接続を介して、前記複数の制御メッセージのうちの第1のメッセージを前記複数のコントローラ・デバイスのうちの第1のコントローラ・デバイスに送信するメッセージング・コンポーネントを更に備える、請求項5に記載のシステム。
【請求項7】
前記システムと、前記複数のコントローラ・デバイスのうちの第1のコントローラ・デバイスとを、第1の高速のノン・ブロッキングのポイント・ツー・ポイント接続を介して機能的に結合し、更に、前記システムと、前記複数のコントローラ・デバイスのうちの第2のコントローラ・デバイスとを、第2の高速のノン・ブロッキングのポイント・ツー・ポイント接続を介して機能的に結合する通信ネットワークを更に備える、請求項6に記載のシステム。
【請求項8】
コンピュータ実装方法であって、
プロセッサに作動的に結合されたシステムによって、前記システムに対しリモートに位置する複数のコントローラ・デバイスが、互いに、および前記システムと同期するようにすることと、
前記システムによって、それぞれのキュービット・デバイスにおける1つまたは複数の測定値から結果として得られる測定データにアクセスすることと、
前記システムによって、前記測定データを用いて、前記複数のコントローラ・デバイスのそれぞれの第2のコントローラ・デバイスのための1つまたは複数の制御メッセージを生成することであって、前記それぞれの第2のコントローラ・デバイスのうちの第1のコントローラ・デバイスは、前記それぞれのキュービット・デバイスのうちの第1のキュービット・デバイスへの信号の適用を制御することと、
を含む、コンピュータ実装方法。
【請求項9】
前記システムによって、高速のノン・ブロッキングのポイント・ツー・ポイント接続を介して、前記1つまたは複数の制御メッセージのうちの第1のメッセージを前記第1のコントローラ・デバイスに送信することを更に含む、請求項8に記載のコンピュータ実装方法。
【請求項10】
前記1つまたは複数の制御メッセージを生成することは、前記第1のキュービット・デバイスにおける量子プログラムの実行中の分岐命令のための実行経路を定義する第1のペイロード・データ、または前記実行経路内の1つまたは複数の量子演算に対応するオペランド・データを定義する第2のペイロード・データのうちの少なくとも1つを有する第1のメッセージを生成することを含む、請求項8または9に記載のコンピュータ実装方法。
【請求項11】
前記1つまたは複数の制御メッセージを生成することは、量子プログラムの実行における中断に対応する未来の作動時間を定義するペイロード・データを有する第1のメッセージを生成することを含む、請求項8または9に記載のコンピュータ実装方法。
【請求項12】
前記それぞれのキュービット・デバイスを含む複数のキュービット・デバイスにおいて量子プログラムの実行を開始するために複数の第2の制御メッセージを生成することを更に含み、前記コンピュータ実装方法は、
前記システムによって、高速のノン・ブロッキングのポイント・ツー・ポイント接続を介して、前記複数のメッセージのうちの第1のメッセージを前記複数のコントローラ・デバイスのうちの第1のコントローラ・デバイスに送信することであって、前記複数のコントローラ・デバイスは、前記複数のキュービット・デバイスの各々へのそれぞれの信号の適用を制御することを更に含む、請求項8または9に記載のコンピュータ実装方法。
【請求項13】
量子プログラムの実行の制御のためのコンピュータ・プログラムであって、
前記プロセッサに、前記プロセッサに対しリモートに位置する複数のコントローラ・デバイスが、互いに、および前記プロセッサに作動的に結合されたコンピューティング・システムと同期するようにさせ
前記プロセッサに、それぞれのキュービット・デバイスにおける1つまたは複数の測定値から結果として得られる測定データにアクセスさせ
前記プロセッサに、前記測定データを用いて、前記複数のコントローラ・デバイスのそれぞれの第2のコントローラ・デバイスのための1つまたは複数の制御メッセージを生成することを行わせ、前記それぞれの第2のコントローラ・デバイスのうちの第1のコントローラ・デバイスは、前記それぞれのキュービット・デバイスのうちの第1のキュービット・デバイスへの信号の適用を制御する、
、コンピュータ・プログラム。
【請求項14】
前記プロセッサに、さらに、高速のノン・ブロッキングのポイント・ツー・ポイント接続を介して、前記1つまたは複数の制御メッセージのうちの第1のメッセージを前記第1のコントローラ・デバイスに送信することを行わせる、請求項13に記載のコンピュータ・プログラム。
【請求項15】
前記1つまたは複数の制御メッセージを生成することは、前記第1のキュービット・デバイスにおける前記量子プログラムの実行中の分岐命令のための実行経路を定義する第1のペイロード・データ、または前記実行経路内の1つまたは複数の量子演算に対応するオペランド・データを定義する第2のペイロード・データのうちの少なくとも1つを有する第1のメッセージを生成することを含む、請求項13または14に記載のコンピュータ・プログラム。
【請求項16】
前記1つまたは複数の制御メッセージを生成することは、量子プログラムの実行における中断に対応する未来の作動時間を定義するペイロード・データを有する第1のメッセージを生成することを含む、請求項13または14に記載のコンピュータ・プログラム。
【請求項17】
前記プロセッサに、さらに、前記複数のキュービット・デバイスにおいて前記量子プログラムの実行を開始するために複数の第2の制御メッセージを生成することを行わせ、
前記プロセッサに、さらに、高速のノン・ブロッキングのポイント・ツー・ポイント接続を介して、前記複数の第2の制御メッセージのうちの第1のメッセージを前記複数のコントローラ・デバイスのうちの第1のコントローラ・デバイスに送信することを行わせ、前記複数のコントローラ・デバイスは、前記複数のキュービット・デバイスの各々へのそれぞれの信号の適用を制御する、請求項13または14に記載のコンピュータ・プログラム。
【請求項18】
デバイスであって、
前記デバイスに対しリモートに位置するコンピューティング・システムからクロッキング信号を受信するクロック・ユニットであって、前記クロッキング信号は、前記デバイスと、前記デバイスに対しリモートに位置する複数の第2のデバイスとを同期させる、前記クロック・ユニットと、
メモリに記憶されたコンピュータ実行可能コンポーネントを実行するプロセッサであって、前記コンピュータ実行可能コンポーネントは、
前記コンピューティング・システムから量子プログラムを定義するデータを受信するインジェスチョン・コンポーネントであって、前記デバイスは、複数のキュービット・デバイスのうちの第1のキュービット・デバイスへの信号の適用を制御する、前記インジェスチョン・コンポーネントと、
制御フロー・ハンドリング・コンポーネントであって、
前記量子プログラムの実行中の前記量子プログラムの測定命令を特定し、
前記第1のキュービット・デバイスの状態または前記第1のキュービット・デバイスの物理的特性のうちの少なくとも1つの測定を行わせるようにモニタリング・コンポーネントに指示する、前記制御フロー・ハンドリング・コンポーネントと、
を含む、前記プロセッサと、
を備える、デバイス。
【請求項19】
前記コンピュータ実行可能コンポーネントは、前記測定の結果として得られる測定データを、高速のノン・ブロッキングのポイント・ツー・ポイント接続を介して前記コンピューティング・システムに送信する報告コンポーネントを更に含む、請求項18に記載のデバイス。
【請求項20】
前記インジェスチョン・コンポーネントは、前記コンピューティング・システムから、分岐命令に応じて実行経路を定義する第1のペイロード・データ、または前記実行経路内の1つまたは複数の量子演算に対応するオペランド・データを定義する第2のペイロード・データのうちの少なくとも1つを有する制御メッセージを受信する、請求項18または19に記載のデバイス。
【請求項21】
前記制御メッセージは、量子プログラムの実行における中断に対応する未来の作動時間を定義する第2のペイロード・データを更に含む、請求項20に記載のデバイス。
【請求項22】
コンピュータ実装方法であって、
少なくとも1つのプロセッサを有するコントローラ・デバイスによって、前記コントローラ・デバイスに対しリモートに位置するコンピューティング・システムからクロッキング信号を受信することであって、前記クロッキング信号は、前記デバイスと、前記デバイスに対しリモートに位置する複数の第2のデバイスとを同期させることと、
少なくとも1つのプロセッサを有するコントローラ・デバイスによって、前記コンピューティング・システムから量子プログラムを定義するデータを受信することであって、前記コントローラ・デバイスは、前記量子プログラムを実行する複数のキュービット・デバイスのうちの第1のキュービット・デバイスへの信号の適用を制御することと、
前記コントローラ・デバイスによって、前記量子プログラムの実行中の前記量子プログラムの測定命令を特定することと、
前記コントローラ・デバイスによって、前記第1のキュービット・デバイスの状態または前記第1のキュービット・デバイスの物理的特性のうちの少なくとも1つの測定を行わせることと、
を含む、コンピュータ実装方法。
【請求項23】
前記コントローラ・デバイスによって、前記測定の結果として得られる測定データを、高速のノン・ブロッキングのポイント・ツー・ポイント接続を介して前記コンピューティング・システムに送信することを更に含む、請求項22に記載のコンピュータ実装方法。
【請求項24】
前記コントローラ・デバイスによって、前記コンピューティング・システムから、分岐命令に応じて実行経路を定義する第1のペイロード・データ、または前記実行経路内の1つまたは複数の量子演算に対応するオペランド・データを定義する第2のペイロード・データのうちの少なくとも1つを有する制御メッセージを受信することを更に含む、請求項22または23に記載のコンピュータ実装方法。
【請求項25】
前記制御メッセージは、量子プログラムの実行における中断に対応する未来の作動時間を定義する第3のペイロード・データを更に含む、請求項24に記載のコンピュータ実装方法。
【国際調査報告】