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

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

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

<>
  • 特表-バックエンド量子ランタイム 図1
  • 特表-バックエンド量子ランタイム 図2
  • 特表-バックエンド量子ランタイム 図3
  • 特表-バックエンド量子ランタイム 図4
  • 特表-バックエンド量子ランタイム 図5
  • 特表-バックエンド量子ランタイム 図6
  • 特表-バックエンド量子ランタイム 図7
  • 特表-バックエンド量子ランタイム 図8
  • 特表-バックエンド量子ランタイム 図9
  • 特表-バックエンド量子ランタイム 図10
  • 特表-バックエンド量子ランタイム 図11
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-04-16
(54)【発明の名称】バックエンド量子ランタイム
(51)【国際特許分類】
   G06N 10/20 20220101AFI20240409BHJP
【FI】
G06N10/20
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2023561137
(86)(22)【出願日】2022-05-03
(85)【翻訳文提出日】2023-10-04
(86)【国際出願番号】 EP2022061770
(87)【国際公開番号】W WO2022233823
(87)【国際公開日】2022-11-10
(31)【優先権主張番号】17/314,372
(32)【優先日】2021-05-07
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレーション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
【住所又は居所原語表記】New Orchard Road, Armonk, New York 10504, United States of America
(74)【代理人】
【識別番号】100112690
【弁理士】
【氏名又は名称】太佐 種一
(74)【代理人】
【識別番号】100120710
【弁理士】
【氏名又は名称】片岡 忠彦
(74)【復代理人】
【識別番号】110000877
【氏名又は名称】弁理士法人RYUKA国際特許事務所
(72)【発明者】
【氏名】ジョンソン、ブレーク
(72)【発明者】
【氏名】ファロ セルタージュ、イスマエル
(72)【発明者】
【氏名】ビショップ、レヴ
(72)【発明者】
【氏名】ガンベッタ、ジェイ
(72)【発明者】
【氏名】モラレス、レニエ
(57)【要約】
バックエンド量子ランタイムを促進するシステム及び技法が提供される。様々な実施形態において、システムは、クライアントデバイスによって提供されるコンピュータプログラムにアクセスすることができるバックエンド受信機コンポーネントを備えることができ、ここで、前記コンピュータプログラムは、量子計算を示すように構成されている。様々な態様において、前記システムは、バックエンド古典的コンピューティングリソースをインスタンス化することによって前記コンピュータプログラムをホストすることができるバックエンドランタイムマネージャコンポーネントを更に備えることができる。様々な事例において、前記バックエンド古典的コンピューティングリソースは、前記コンピュータプログラムの古典的実行及び前記コンピュータプログラムによって示される前記量子計算の量子実行の両方を編成することができる。
【特許請求の範囲】
【請求項1】
コンピュータ可読メモリに記憶されたコンピュータ実行可能コンポーネントを実行するプロセッサを備え、前記コンピュータ実行可能コンポーネントは:
クライアントデバイスによって提供されるコンピュータプログラムにアクセスするバックエンド受信機コンポーネント、ここで、前記コンピュータプログラムは、量子計算を示すように構成されている;及び
バックエンド古典的コンピューティングリソースをインスタンス化することによって前記コンピュータプログラムをホストするバックエンドランタイムマネージャコンポーネント、ここで、前記バックエンド古典的コンピューティングリソースは、前記コンピュータプログラムの古典的実行及び前記コンピュータプログラムによって示される前記量子計算の量子実行の両方を編成する
を有する、システム。
【請求項2】
前記バックエンド古典的コンピューティングリソースからの命令に応答して、前記コンピュータプログラムによって示される前記量子計算を実行する少なくとも1つのバックエンド量子コンピューティングデバイスを更に備える、請求項1に記載のシステム。
【請求項3】
前記バックエンド古典的コンピューティングリソースによる実行中、前記コンピュータプログラムは、前記少なくとも1つのバックエンド量子コンピューティングデバイスによって生成された量子結果を利用し、それによって、プログラム結果がもたらされる、請求項2に記載のシステム。
【請求項4】
前記コンピュータ実行可能コンポーネントは:前記量子結果又は前記プログラム結果を記録するバックエンド記録コンポーネントを更に有する、請求項3に記載のシステム。
【請求項5】
前記バックエンド古典的コンピューティングリソース及び前記少なくとも1つのバックエンド量子コンピューティングデバイスは、同一の場所に位置し、又は、前記バックエンド古典的コンピューティングリソース及び前記少なくとも1つのバックエンド量子コンピューティングデバイスは、専用通信チャネルを介して結合される、請求項2から4のいずれか1項に記載のシステム。
【請求項6】
前記バックエンド古典的コンピューティングリソースは、ランタイムコンテナである、請求項1から5のいずれか1項に記載のシステム。
【請求項7】
前記バックエンドランタイムマネージャコンポーネントは、前記クライアントデバイス及び前記コンピュータプログラムの間の通信を媒介する、請求項1から6のいずれか1項に記載のシステム。
【請求項8】
前記バックエンド受信機コンポーネントは、別のクライアントデバイスによって提供される別のコンピュータプログラムにアクセスし、前記別のコンピュータプログラムは、別の量子計算を示すように構成されており、前記バックエンドランタイムマネージャコンポーネントは、別のバックエンド古典的コンピューティングリソースをインスタンス化することによって前記別のコンピュータプログラムをホストし、前記別のバックエンド古典的コンピューティングリソースは、前記別のコンピュータプログラムの古典的実行及び前記別のコンピュータプログラムによって示される前記別の量子計算の量子実行の両方を編成し、前記別のバックエンド古典的コンピューティングリソースは、前記バックエンド古典的コンピューティングリソースと並列に動作する、請求項1から7のいずれか1項に記載のシステム。
【請求項9】
プロセッサに動作可能に結合されたバックエンドデバイスによって、クライアントデバイスによって提供されるコンピュータプログラムにアクセスする段階、ここで、前記コンピュータプログラムは、量子計算を示すように構成されている;及び
前記バックエンドデバイスによって、バックエンド古典的コンピューティングリソースをインスタンス化することによって前記コンピュータプログラムをホストする段階、ここで、前記バックエンド古典的コンピューティングリソースは、前記コンピュータプログラムの古典的実行及び前記コンピュータプログラムによって示される前記量子計算の量子実行の両方を編成する
を備える、コンピュータ実装方法。
【請求項10】
前記バックエンドデバイスによって、前記バックエンド古典的コンピューティングリソースからの命令に応答して、少なくとも1つのバックエンド量子コンピューティングデバイス上で前記量子計算を実行する段階を更に備える、請求項9に記載のコンピュータ実装方法。
【請求項11】
前記バックエンド古典的コンピューティングリソースによる実行中、前記コンピュータプログラムは、前記少なくとも1つのバックエンド量子コンピューティングデバイスによって生成された量子結果を利用し、それによって、プログラム結果がもたらされる、請求項10に記載のコンピュータ実装方法。
【請求項12】
前記バックエンドデバイスによって、前記量子結果又は前記プログラム結果を記録する段階を更に備える、請求項11に記載のコンピュータ実装方法。
【請求項13】
前記バックエンド古典的コンピューティングリソース及び前記少なくとも1つのバックエンド量子コンピューティングデバイスは、同一の場所に位置し、又は、前記バックエンド古典的コンピューティングリソース及び前記少なくとも1つのバックエンド量子コンピューティングデバイスは、専用通信チャネルを介して結合される、請求項10から12のいずれか1項に記載のコンピュータ実装方法。
【請求項14】
前記バックエンド古典的コンピューティングリソースは、ランタイムコンテナである、請求項9~13のいずれか1項に記載のコンピュータ実装方法。
【請求項15】
ランタイムマネージャコンポーネントは、前記クライアントデバイス及び前記コンピュータプログラムの間の通信を媒介する、請求項9~14のいずれか1項に記載のコンピュータ実装方法。
【請求項16】
前記バックエンドデバイスによって、別のクライアントデバイスによって提供される別のコンピュータプログラムにアクセスする段階、ここで、前記別のコンピュータプログラムは、別の量子計算を示すように構成されている;及び
前記バックエンドデバイスによって、別のバックエンド古典的コンピューティングリソースをインスタンス化することによって前記別のコンピュータプログラムをホストする段階、ここで、前記別のバックエンド古典的コンピューティングリソースは、前記別のコンピュータプログラムの古典的実行及び前記別のコンピュータプログラムによって示される前記別の量子計算の量子実行の両方を編成し、前記別のバックエンド古典的コンピューティングリソースは、前記バックエンド古典的コンピューティングリソースと並列に動作する
を更に備える、請求項9~15のいずれか1項に記載のコンピュータ実装方法。
【請求項17】
バックエンド量子ランタイムを促進するコンピュータプログラム製品であって、前記コンピュータプログラム製品は、プログラム命令が具現化されたコンピュータ可読メモリを備え、前記プログラム命令は、バックエンドプロセッサに:
前記バックエンドプロセッサによって、クライアントデバイスによって提供されるコンピュータプログラムにアクセスする手順、ここで、前記コンピュータプログラムは、量子計算を示すように構成されている;及び
前記バックエンドプロセッサによって、バックエンド古典的コンピューティングリソースをインスタンス化することによって前記コンピュータプログラムをホストする手順、ここで、前記バックエンド古典的コンピューティングリソースは、前記コンピュータプログラムの古典的実行及び前記コンピュータプログラムによって示される前記量子計算の量子実行の両方を編成する
を行わせるために前記バックエンドプロセッサによって実行可能である、コンピュータプログラム製品。
【請求項18】
前記プログラム命令は、前記バックエンドプロセッサに:前記バックエンドプロセッサによって、前記バックエンド古典的コンピューティングリソースからの命令に応答して、少なくとも1つのバックエンド量子コンピューティングデバイス上で前記量子計算を実行する手順を行わせるために更に実行可能である、請求項17に記載のコンピュータプログラム製品。
【請求項19】
前記バックエンド古典的コンピューティングリソースによる実行中、前記コンピュータプログラムは、前記少なくとも1つのバックエンド量子コンピューティングデバイスによって生成された量子結果を利用し、それによって、プログラム結果がもたらされる、請求項18に記載のコンピュータプログラム製品。
【請求項20】
前記プログラム命令は、前記バックエンドプロセッサに:前記バックエンドプロセッサによって、前記量子結果又は前記プログラム結果を記録する手順を行わせるために更に実行可能である、請求項19に記載のコンピュータプログラム製品。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、量子コンピューティングに関し、より具体的には、リモートサービスとして量子コンピューティングを効率的に提供することができるバックエンド量子ランタイムに関する。
【0002】
量子コンピューティングの分野では、最近、古典的処理及び量子処理の両方を利用するアルゴリズムの成長が見られている。換言すれば、そのような古典的/量子アルゴリズムの実行は、古典的コンピューティングリソース及び量子コンピューティングリソースの両方を活用することによって促進することができる。古典的コンピューティングリソースは広く利用可能であるが、量子コンピューティングリソースはそうではなく、これはなぜならば、量子コンピューティングが依然として発生の途中の状態であるためであるとともに、既存の量子ハードウェアの物理的環境が、コヒーレンスを維持しかつ有害な雑音効果を最小化するように注意深く制御されなければならないためである。それに応じて、量子ハードウェアの構築及びメンテナンスに特化した幾つかの産業プレーヤがリモートサービスとして量子コンピューティングを提供している。それゆえ、古典的/量子アルゴリズムを実行することを望むクライアントは、そのようなリモート量子コンピューティングサービスを活用することによってこれを行うことができる。
【0003】
既存のリモート量子コンピューティングサービスは、古典的コンピューティングリソース及び量子コンピューティングリソースの間の分割を呈し、ここで、古典的コンピューティングリソースは、排他的にクライアント側に位置し、量子コンピューティングリソースは、排他的にサービス側に位置する。本発明者らは、そのような分割されたリモートサービスアーキテクチャが、古典的コンピューティングリソース及び量子コンピューティングリソースの間の高レイテンシインタラクションに起因して不良な性能を呈し得ることを認識した。それゆえ、本発明者らは、この技術的問題に対処することができるシステム及び/又は技法が望ましいものであり得ることを観測した。
【発明の概要】
【0004】
以下は、本発明の1つ又は複数の実施形態の基本的理解を提供するために概要を提示する。この概要は、重要な又は必須の要素を識別することも、又は特定の実施形態のいかなる範囲も又は特許請求の範囲のいかなる範囲も定めることも意図するものではない。その唯一の目的は、後に提示されるより詳細な説明への前置きとして簡略化された形態で概念を提示することである。本明細書において説明される1つ又は複数の実施形態では、バックエンド量子ランタイムを促進することができるデバイス、システム、コンピュータ実装方法、装置及び/又はコンピュータプログラム製品が説明される。
【0005】
1つ又は複数の実施形態によれば、システムが提供される。前記システムは、コンピュータ実行可能コンポーネントを記憶することができるメモリを備えることができる。前記システムは、前記メモリに動作可能に結合され、前記メモリに記憶された前記コンピュータ実行可能コンポーネントを実行することができるプロセッサを更に備えることができる。様々な実施形態において、前記コンピュータ実行可能コンポーネントは、クライアントデバイスによって提供されるコンピュータプログラムにアクセスすることができる受信機コンポーネントを有することができる。様々な場合において、前記コンピュータプログラムは、量子計算を示すように構成することができる。様々な態様において、前記コンピュータ実行可能コンポーネントは、バックエンド古典的コンピューティングリソースをインスタンス化することによって前記コンピュータプログラムをホストすることができるバックエンドランタイムマネージャコンポーネントを更に有することができる。様々な場合において、前記バックエンド古典的コンピューティングリソースは、前記コンピュータプログラムの古典的実行及び前記コンピュータプログラムによって示される前記量子計算の量子実行の両方を編成することができる。様々な事例において、前記システムは、前記バックエンド古典的コンピューティングリソースからの命令に応答して、前記コンピュータプログラムによって示される前記量子計算を実行することができる少なくとも1つのバックエンド量子コンピューティングデバイスを更に備えることができる。
【0006】
1つ又は複数の実施形態によれば、上記で説明されたシステムは、コンピュータ実装方法及び/又はコンピュータプログラム製品として実装することができる。
【図面の簡単な説明】
【0007】
図1】本明細書において説明される1つ又は複数の実施形態に係る、バックエンド量子ランタイムを促進する例示の非限定的なシステムのブロック図である。
【0008】
図2】本明細書において説明される1つ又は複数の実施形態に係る、バックエンド量子ランタイムを促進するコンピュータプログラムを含む例示の非限定的なシステムのブロック図である。
【0009】
図3】本明細書において説明される1つ又は複数の実施形態に係る、古典的最適化ループ内で量子計算を含む例示の非限定的なコンピュータプログラムのブロック図である。
【0010】
図4】本明細書において説明される1つ又は複数の実施形態に係る、バックエンド量子ランタイムを促進するランタイムコンテナを含む例示の非限定的なシステムのブロック図である。
【0011】
図5】本明細書において説明される1つ又は複数の実施形態に係る、バックエンド量子ランタイムを促進する、量子結果及び/又はプログラム結果を含む例示の非限定的なシステムのブロック図である。
【0012】
図6】本明細書において説明される1つ又は複数の実施形態に係る、バックエンド量子ランタイムを促進する例示の非限定的なコンピュータ実装方法のフロー図である。
【0013】
図7】本明細書において説明される1つ又は複数の実施形態に係る、バックエンド量子ランタイムを促進する例示の非限定的なワークフローの通信図である。
【0014】
図8】本明細書において説明される1つ又は複数の実施形態に係る、バックエンド量子ランタイムを促進する例示の非限定的なコンピュータ実装方法のフロー図である。
【0015】
図9】本明細書において説明される1つ又は複数の実施形態が促進され得る例示の非限定的な動作環境のブロック図である。
【0016】
図10】本明細書において説明される1つ又は複数の実施形態に係る例示の非限定的なクラウドコンピューティング環境を示す図である。
【0017】
図11】本明細書において説明される1つ又は複数の実施形態に係る、例示の非限定的な抽象化モデル層を示す図である。
【発明を実施するための形態】
【0018】
以下の詳細な説明は、単に例示であり、実施形態及び/又は実施形態の適用又は使用を限定することを意図するものではない。さらに、前述の背景技術又は発明の概要セクションにおいて、又は発明を実施するための形態セクションにおいて提示される任意の明示された又は暗黙的な情報によって拘束される意図はない。
【0019】
ここで、図面を参照して1つ又は複数の実施形態が説明され、全体を通して、同様の参照番号は、同様の要素を指すために使用される。以下の説明では、説明の目的で、多数の特定の詳細が、1つ又は複数の実施形態のより完全な理解を提供するために記載される。しかしながら、様々な場合において、これらの具体的な詳細なしで、1つ又は複数の実施形態が実施され得ることは明らかである。
【0020】
量子コンピューティングの分野では、最近、古典的処理及び量子処理の両方を利用するアルゴリズムの成長が見られている。すなわち、そのような古典的/量子アルゴリズムの実行は、古典的コンピューティングリソース(例えば、古典的コンピュータ、これは、情報を表現及び処理するためにビットを利用する)及び量子コンピューティングリソース(例えば、量子コンピュータ及び/又は量子ハードウェア、これは、情報を表現及び処理するために量子ビットを利用する)の両方を活用することによって促進することができる。例えば、古典的/量子アルゴリズムは、幾つかの場合では、古典的最適化ループ内で量子計算を呼び出すことができる(例えば、古典的最適化ループの各反復は、量子計算のパフォーマンスを要求することができる)。そのような古典的/量子アルゴリズムの非限定的な例としては、変分量子固有値ソルバ(VQE)及び量子近似最適化アルゴリズム(QAOA)を挙げることができる。古典的コンピューティングリソースは量子計算を実行することができないので、そのような古典的/量子アルゴリズムは、古典的コンピューティングリソース単独によって促進することができない。その代わりに、そのような古典的/量子アルゴリズムは、量子コンピューティングリソースとインタラクトする古典的コンピューティングリソースによって促進することができる。
【0021】
古典的コンピューティングリソースは、広く利用可能である(例えば、デスクトップコンピュータ、ラップトップコンピュータ、及び/又はスマートフォンは、古典的コンピューティングリソースの非限定的な例である)。対照的に、量子コンピューティングリソースは、まだ広く利用可能ではない。これは、量子コンピューティングが依然として発生の途中の状態であることに部分的に起因する。実際、既存の量子ハードウェア(例えば、雑音性中間スケール量子ハードウェア)は、実装することができる量子ビットの数が限られており、通常、高信頼度の結果を提供するために広範囲な誤り訂正を要求する。これは、既存の量子ハードウェアの物理的環境を注意深く制御しなければならないことにも部分的に起因する。実際、既存の量子ハードウェアは、コヒーレンスを維持しかつ有害な雑音効果を最小化するように、極低温に保たれなければならない。量子コンピューティングリソースは作成及び動作が極めて困難であり得るので、幾つかの産業会社は、量子コンピューティングリソースの構築及びメンテナンスに特化している。その上、そのような産業会社は、量子コンピューティングリソースをリモートサービス(例えば、クラウドサービス)としてクライアントに提供し得る。それゆえ、古典的/量子アルゴリズムを実行することを望むクライアントは、これを行うためにそのようなリモート量子コンピューティングサービスを活用することができる。
【0022】
既存のリモート量子コンピューティングサービスは、次のとおり機能し得る。まず、クライアントデバイス(例えば、デスクトップコンピュータ、ラップトップコンピュータ)は、古典的処理を実行することができる(例えば、古典的/量子アルゴリズムの古典的最適化ループの現在の反復を実行することができる)。様々な態様において、そのような古典的処理は、実行されることになる量子計算を指定及び/又は別様に示すことができる(例えば、1つ又は複数の特定の量子状態に適用されることになる1つ又は複数の特定の量子回路を識別することができる)。様々な場合において、クライアントデバイスは、量子計算を実行する命令をリモート量子コンピューティングサービスに送信することができる。様々な態様において、命令は、インターネットを介して送信することができ、リモート量子コンピューティングサービスのアプリケーションプログラミングインターフェースによって受信することができ、リモート量子コンピューティングサービスのキューに置くことができる。様々な事例において、リモート量子コンピューティングサービスは、キューから命令を抽出することができ、量子ハードウェア(例えば、マイクロ波パルスを介して動作させることができる量子ビットを含む量子基板)上で、命令において指定された量子計算を実行することができる。様々な場合において、リモート量子コンピューティングサービスは、量子ハードウェアによって生成された結果を、クライアントデバイスに返送することができる。様々な態様において、クライアントデバイスは、リモート量子コンピューティングサービスによって提供された結果を活用することによって、その古典的処理を完了することができる(例えば、古典的最適化ループの現在の反復を完了することができる)。
【0023】
上記の説明が示しているように、既存のリモート量子コンピューティングサービスは、古典的コンピューティングリソース及び量子コンピューティングリソースの間の分割を呈することができる。より具体的には、古典的コンピューティングリソースは、排他的にクライアント側に位置することができ、量子コンピューティングリソースは、排他的にサービス側に位置することができる。本発明者らは、そのような分割されたアーキテクチャが、古典的コンピューティングリソース及び量子コンピューティングリソースの間の高レイテンシインタラクションに起因して不良な性能を呈し得ることを認識した。実際、上記で言及されたように、クライアントデバイスから送信される量子計算命令は、量子計算命令がインターネットにわたって進み、アプリケーションプログラミングインターフェースをトラバースし、キュー内で待機した後で初めて、リモート量子コンピューティングサービスによって実行される。それに応じて、クライアントデバイスからリモート量子コンピューティングサービスへの量子計算命令の送信は、高レイテンシインタラクションとみなされ得る(例えば、量子計算命令が、インターネット接続を介してアプリケーションプログラミングインターフェースに到達するために、アプリケーションプログラミングインターフェースによって受け入れられるために、及び/又はキュー内で待機するために時間を要し得る)。クライアントデバイスが古典的最適化ループを伴う古典的/量子アルゴリズムを実行している場合、クライアントデバイスは、リモート量子コンピューティングサービスとの多くの繰り返しの高レイテンシインタラクションを有し得る(例えば、クライアントデバイスは、古典的最適化ループの反復ごとに1つ又は複数の量子計算命令をリモート量子コンピューティングサービスに送信し得る)。それゆえ、高レイテンシインタラクションは、迅速に蓄積し得、これにより、クライアントデバイスが古典的/量子アルゴリズムを完了するのに要求される時間量が不必要に拡大され得る。この技術的問題に対処することができるシステム及び/又は技法が望ましいものであり得る。
【0024】
本発明の様々な実施形態は、これらの技術的問題のうちの1つ又は複数に対処することができる。具体的には、本発明の様々な実施形態は、バックエンド量子ランタイムを促進することができるシステム及び/又は技法を提供することができる。様々な態様において、本発明の実施形態は、既存の技法と比較してより効率的にリモート量子コンピューティングサービスをクライアントデバイスに提供することができるコンピュータ化されたツール(例えば、コンピュータハードウェア及び/又はコンピュータソフトウェアの組み合わせ)とみなすことができる。
【0025】
様々な事例において、コンピュータ化されたツールは、量子ハードウェアとバンドル化される(例えば、これと同一の場所に位置する、及び/又はこれと専用通信する)バックエンドサーバとみなすことができる。様々な場合において、コンピュータ化されたツールは、入力として、クライアントデバイスからコンピュータプログラムを電子的に受信することができる。様々な態様において、コンピュータプログラムは、実行されることになる量子計算を指定、識別、及び/又は別様に示すように構成することができる。様々な事例において、コンピュータ化されたツールは、コンピュータプログラムを電子的にホストすることができる。すなわち、コンピュータ化されたツールは、コンピュータプログラムを古典的に実行することができ、それによって、コンピュータプログラムに、量子計算を示させる。その上、様々な場合において、コンピュータ化されたツールは、量子計算を実行するためにそれがバンドル化される相手の量子ハードウェアに電子的に命令することができる。様々な態様において、コンピュータ化されたツールは、量子ハードウェアによって生成された量子結果を活用することによって、コンピュータプログラムの古典的実行を継続及び/又は完了することができる。
【0026】
様々な実施形態において、そのようなコンピュータ化されたツールは、受信機コンポーネント、ランタイムマネージャコンポーネント、量子コンピューティングデバイス、記録コンポーネント、及び/又は送信機コンポーネントを備えることができる。
【0027】
様々な実施形態において、コンピュータ実行可能ハードウェア及び/又はコンピュータ実行可能ソフトウェアの任意の適した組み合わせとすることができるクライアントデバイスが存在することができる。例えば、クライアントデバイスは、デスクトップコンピュータ、ラップトップコンピュータ、スマートフォンデバイス、及び/又はタブレットデバイスとすることができる。様々な事例において、クライアントデバイスは、コンピュータプログラムを電子的に記憶し、維持し、及び/又は別様にこれへのアクセスを有することができる。様々な態様において、コンピュータプログラムは、古典的実行時及び/又は古典的実行中に量子計算を指定するように構成することができる。すなわち、コンピュータプログラムは、古典的/量子アルゴリズム(例えば、VQE及び/又はQAOA)のパフォーマンスを促進する実行可能スクリプトとすることができる。例えば、コンピュータプログラムは、古典的最適化ループを含むことができ、ここで、古典的最適化ループの各反復は、指定された量子計算のパフォーマンスを呼び出し、及び/又は別様に要求する。
【0028】
様々な場合において、クライアントデバイスのオペレータは、コンピュータプログラムを完全に実行することを望み得る。しかしながら、コンピュータプログラムは量子計算を伴い得るので、クライアントデバイスは、コンピュータプログラムを完全に実行することが不可能であり得る。この問題を解決するために、クライアントデバイスは、本明細書において説明されるコンピュータ化されたツールと通信することができる。本明細書における開示によって明らかになるように、クライアントデバイス及びコンピュータ化されたツールは、様々な場合において、クライアント/サーバ関係にあるとみなすことができ、ここで、クライアントデバイスは、フロントエンドクライアントとみなすことができ、コンピュータ化されたツールは、フロントエンドクライアントのために幾つかの機能を実行するバックエンドサーバとみなすことができる。様々な態様において、その機能は、本明細書において説明されるように、コンピュータプログラムの完全なホスト及び/又は実行(例えば、古典的及び量子実行の両方)とすることができる。
【0029】
様々な実施形態において、コンピュータ化されたツールの受信機コンポーネントは、任意の適した有線及び/又は無線電子接続を介して、クライアントデバイスからコンピュータプログラムを電子的に受信し、及び/又は取り出すことができる。それに応じて、コンピュータ化されたツールの他のコンポーネントは、コンピュータプログラムと電子的にインタラクトすることができる。様々な事例において、受信機コンポーネントは、クライアントデバイスから、コンピュータプログラムを実行するために要求される、及び/又はコンピュータプログラムが別様に依拠する任意の適したソフトウェアライブラリのインジケーションを電子的に受信し、及び/又は取り出すこともできる。様々な態様において、受信機コンポーネントは、クライアントデバイスから、コンピュータプログラムにフィードされることになる任意の適した入力パラメータを追加的に電子的に受信し、及び/又は取り出すことができる。
【0030】
様々な実施形態において、コンピュータ化されたツールのランタイムマネージャコンポーネントは、コンピュータプログラムのためのランタイムコンテナを電子的にスプールすることができる。様々な態様において、ランタイムコンテナは、コンピュータプログラムの任意の非量子部分を古典的に実行することができる任意の適したコンピュータ実行可能ソフトウェアコンテナとすることができる。幾つかの非限定的な例として、ランタイムコンテナは、Docker(登録商標)コンテナ、Kubernetes(登録商標)コンテナ、containerdコンテナ、及び/又はソフトウェアアプリケーションをホストすることが可能である他の任意の適したオペレーティングシステムレベル仮想化とすることができる。様々な事例において、コンピュータプログラムは、ランタイムコンテナによってホスト、実装、及び/又は実行されるソフトウェアイメージとみなすことができる。様々な場合において、クライアントデバイスが、受信機コンポーネントに、コンピュータプログラムが依拠する1つ又は複数のソフトウェアライブラリのインジケーションを提供する場合、ランタイムマネージャコンポーネントは、そのようなソフトウェアライブラリを用いてランタイムコンテナを電子的にインスタンス化することができる(例えば、ランタイムマネージャコンポーネントは、ランタイムコンテナをスプールすることができ、ランタイムコンテナに、任意の適した電子的アクセス可能データ構造からそのようなソフトウェアライブラリをダウンロードさせることができる)。
【0031】
様々な態様において、ランタイムコンテナは、コンピュータプログラムを古典的に実行することができる(例えば、コンピュータプログラム内に含まれる非量子命令を実行することができる)。様々な事例において、クライアントデバイスが、受信機コンポーネントに、コンピュータプログラムのための入力パラメータを提供する場合、ランタイムコンテナは、そのような古典的実行前及び/又はそのような古典的実行中にそのような入力パラメータをコンピュータプログラムにフィードすることができる。様々な態様において、コンピュータプログラムのそのような古典的実行は、コンピュータプログラムに、入力パラメータに基づいて、量子計算が実行されることをリクエストさせることができる。例えば、ランタイムコンテナによる古典的実行中、コンピュータプログラムは、入力パラメータとして、特定の量子演算子、パラメータ化された量子回路、及び/又は回路パラメータ値のセットを受信することができ、コンピュータプログラムの目的は、量子演算子の期待値を推定することとすることができる。様々な場合において、コンピュータプログラムは、そのような入力パラメータに基づいて、特定の量子状態(例えば、これは、量子確率振幅によって表現され得る)及び/又は特定の量子回路(例えば、これは、量子ゲートのシーケンスとすることができる)を構築することができる。その上、ランタイムコンテナによる古典的実行中、コンピュータプログラムは、特定の量子回路が特定の量子状態に適用されることになることを示すことができる。様々な場合において、特定の量子回路が特定の量子状態に適用されることになるというコンピュータプログラムのインジケーションは、特定の量子計算のインジケーション及び/又はそのリクエストとみなされ、及び/又は別様に解釈され得る。様々な場合において、この特定の量子計算が促進されると、コンピュータプログラムは、量子演算子の期待値を推定するために特定の量子計算を利用することができる。
【0032】
様々な実施形態において、コンピュータ化されたツールの量子コンピューティングデバイスは、ランタイムコンテナから、コンピュータプログラムによって示される量子計算を実行する命令を電子的に受信することができる。様々な態様において、量子コンピューティングデバイスは、任意の適した配置において結合される任意の適した数の任意の適したタイプの量子ビットを含む任意の適した量子処理ユニットとすることができる。例えば、量子コンピューティングデバイスは、量子基板(例えば、シリコンウェハ)、量子基板上に製造された超伝導量子ビット(例えば、トランスモン量子ビット)のアレイ、及び/又は量子基板上に製造され、かつ超伝導量子ビットの状態を制御可能に変更するように構成されたマイクロ波共振器を備えることができる。様々な事例において、量子コンピューティングデバイスは、任意の適した量子誤り訂正ハードウェアを更に備えることができる。様々な事例において、量子コンピューティングデバイスは、示された量子計算を実行することができ、量子結果をランタイムコンテナに返すことができる。例えば、ランタイムコンテナによる古典的実行が、コンピュータプログラムに、特定の量子回路が特定の量子状態に適用されることをリクエストさせると仮定する。そのような場合において、量子コンピューティングデバイスは、その量子ビットを特定の量子状態に初期化することができ、量子コンピューティングデバイスは、特定の量子回路に従ってその初期化された量子ビットの状態を操作することができる。様々な場合において、量子コンピューティングデバイスの量子ビットの結果として得られる量子状態は、量子結果とみなすことができる。様々な他の場合において、特定の量子回路は、古典的ビットをもたらす測定値を含むことができる。そのような古典的ビットは、様々な態様において、量子結果とみなすことができる。
【0033】
様々な事例において、ランタイムコンテナは、量子コンピューティングデバイスから量子結果を取り出すことができ、ランタイムコンテナは、何らかのプログラム結果を古典的に生成及び/又は算出するために量子結果を利用することができる。換言すれば、ランタイムコンテナは、コンピュータプログラムの古典的実行を継続及び/又は完了するために量子結果を利用することができる。
【0034】
コンピュータプログラムは、古典的最適化ループを伴うと仮定する。そのような場合において、ランタイムコンテナによる古典的実行は、コンピュータプログラムに、任意の適した回数(例えば収束基準が達成されるまで)、反復させることができる。反復ごとに、コンピュータプログラムは、その反復中に実行されることになる量子計算を示すことができ、そのような量子計算の量子結果を使用して、その反復中にプログラム結果を計算することができる。その上、任意の所与の反復の量子計算は、以前の反復のプログラム結果(及び/又は、永続状態がコンピュータプログラムにおいて保持されるものであれば何でも)に基づくことができる。それに応じて、コンピュータプログラムの反復ごとに、ランタイムコンテナは、量子コンピューティングデバイスに、その反復に対応する量子計算を実行するように命令することができ、ランタイムコンテナは、量子コンピューティングデバイスから、その反復に対応する量子結果を受信することができ、及び/又は、ランタイムコンテナは、その反復に対応する何らかのプログラム結果を計算するために量子結果を利用することができる。ランタイムコンテナは、その後、次の反復に移ることができる。
【0035】
様々な実施形態において、ランタイムコンテナは、ランタイムコンテナ及び量子コンピューティングデバイスの間の通信が低レイテンシであるように、量子コンピューティングデバイスとバンドル化することができる。例えば、ランタイムコンテナは、特定のコンピューティングマシン上で実行されるコンピュータソフトウェアとすることができ、その特定のコンピューティングマシンは、量子コンピューティングデバイスと物理的に結合し、及び/又はこれと物理的に同一の場所に位置することができ(例えば、量子コンピューティングデバイス及び特定のコンピューティングマシンは同じ部屋内にあることができ、それゆえ、容易に物理的にともに配線することができ)、それによって、ランタイムコンテナ及び量子コンピューティングデバイスの間の低レイテンシ通信がもたらされる。別の例として、ランタイムコンテナは、特定のコンピューティングマシン上で実行されるコンピュータソフトウェアとすることができ、その特定のコンピューティングマシンは、量子コンピューティングデバイスとの専用無線電子接続を有することができ(例えば、量子コンピューティングデバイス及び特定のコンピューティングマシンは、量子コンピューティングデバイス及び特定のコンピューティングマシンが同一の場所に位置していない可能性があるにもかかわらず、他のコンピューティングデバイスと共有されない固定帯域幅ネットワーク接続を介して結合することができる)、それによって、ランタイムコンテナ及び量子コンピューティングデバイスの間の低レイテンシ通信がもたらされる。
【0036】
様々な実施形態において、コンピュータ化されたツールの記録コンポーネントは、量子コンピューティングデバイス及び/又はランタイムコンテナによって生成された量子結果及び/又はプログラム結果を電子的に記録及び/又は記憶することができる。コンピュータプログラムが古典的最適化ループを含む場合、記録コンポーネントは、反復ごとに量子結果及び/又はプログラム結果を電子的に文書記録することができる。換言すれば、記録コンポーネントは、コンピュータプログラムによって生成される中間結果(例えば、コンピュータプログラムの非最終反復からの量子結果及び/又はプログラム結果)及びコンピュータプログラムによって生成される最終結果(例えば、コンピュータプログラムの最終反復からの量子結果及び/又はプログラム結果)を記録することとみなすことができる。様々な態様において、記録コンポーネントは、任意の適したデータベース及び/又はデータ構造を含むことができ、及び/又は任意の適したデータフォーマットにおいてコンピュータプログラムの中間及び/又は最終結果を記憶/維持することができる。
【0037】
様々な実施形態において、コンピュータ化されたツールの送信機コンポーネントは、コンピュータプログラムの中間結果及び/又は最終結果をクライアントデバイスに電子的に送信することができる。
【0038】
上記の論述の一部を明確化することを助けるために、以下の非限定的な例を検討する。コンピュータプログラムは、ハミルトニアンの期待値を反復的に計算するように構成されていると仮定する。その上、コンピュータプログラムは、任意の適した正の整数nについて、n回の反復を伴う古典的最適化ループを含むと仮定する。さらに、各反復は、量子状態の形成及びハミルトニアンの、量子状態への適用を伴うと仮定する。ハミルトニアンの、量子状態への適用は、量子計算であることに留意されたい。
【0039】
そのような場合において、クライアントデバイスは、受信機コンポーネントに、コンピュータプログラム、コンピュータプログラムによって依拠される任意のソフトウェアライブラリのインジケーション、及びコンピュータプログラムにフィードされることになる仮設パラメータを送信することができる。様々な態様において、仮設パラメータは、ハミルトニアンの期待値についての初期推測とみなすことができる。様々な事例において、ランタイムマネージャコンポーネントは、示されたソフトウェアライブラリを実装/ダウンロードすることができ、かつコンピュータプログラムをホストすることができるランタイムコンテナをインスタンス化することができる。様々な場合において、ランタイムコンテナは、仮設パラメータをコンピュータプログラムにフィードすることができ、コンピュータプログラムの古典的実行を開始することができる。
【0040】
第1の反復中、コンピュータプログラムは、仮設パラメータを使用して、第1の量子状態を計算することができ、コンピュータプログラムは、ハミルトニアンが第1の量子状態に適用されることになることを示すことができる。それに応じて、ランタイムコンテナは、量子コンピューティングデバイスに、その量子ビットを第1の量子状態に初期化し、ハミルトニアンに従って、初期化された量子ビットに変換を適用するように命令することができる。ランタイムコンテナは、量子コンピューティングデバイスから結果として得られる量子状態を受信することができ、コンピュータプログラムは、結果として得られる量子状態に基づいて収束基準をチェックすることができる。収束基準がまだ満たされていない場合、コンピュータプログラムは、仮設パラメータを更新することができ、第2の反復に移ることができる。ここで、量子コンピューティングハードウェアによって生成される結果として得られる量子状態は量子結果とみなすことができ、更新された仮設パラメータはプログラム結果とみなすことができる。
【0041】
第2の反復中、コンピュータプログラムは、以前に更新された仮設パラメータを使用して、第2の量子状態を計算することができ、コンピュータプログラムは、ハミルトニアンが第2の量子状態に適用されることになることを示すことができる。それに応じて、ランタイムコンテナは、量子コンピューティングデバイスに、その量子ビットを第2の量子状態に初期化し、ハミルトニアンに従って、初期化された量子ビットに変換を適用するように命令することができる。ランタイムコンテナは、量子コンピューティングデバイスから結果として得られる量子状態を受信することができ、コンピュータプログラムは、結果として得られる量子状態に基づいて収束基準をチェックすることができる。収束基準がまだ満たされていない場合、コンピュータプログラムは、仮設パラメータを再び摂動させることができ、第3の反復に移ることができる。
【0042】
ランタイムコンテナ及び量子コンピューティングハードウェアは、n回の反復の残りについてそのような動作を継続することができる。この非限定的な例では、これは、仮設パラメータがn回の異なる回数、コンピュータプログラムによって更新されることを意味することができ、第nの更新された仮設パラメータは、コンピュータプログラムによって生成される最適化されたプログラム結果である。様々な場合において、レコーダコンポーネントは、コンピュータプログラムの各反復中に生成される更新された仮設パラメータを記録することができる。コンピュータプログラムが収束すると(例えば、n回の反復の後)、送信機コンポーネントは、最適化されたプログラム結果をクライアントデバイスに送信することができる。
【0043】
n回の反復の各々において、ランタイムコンテナ及び量子コンピューティングデバイスは、総計2n回の通信のために、互いに二度通信することができる(例えば、ランタイムコンテナは、量子コンピューティングデバイスに、量子計算を実行するように命令することができ、量子コンピューティングデバイスは、量子結果を提供することができる)ことに留意されたい。しかしながら、ランタイムコンテナ及び量子コンピューティングデバイスは密にバンドル化することができる(例えば、同一の場所に位置し、及び/又は互いに専用ネットワーク接続状態になることができる)ので、これらの2n回の送信は、各々低レイテンシ(例えば、過度に時間を消費するものではない)であり得る。これらの2n回の低レイテンシ送信に加えて、コンピュータ化されたツールは、総計2n+2回の送信のために、二度(例えば、コンピュータプログラムを受信するために一度、及び最終プログラム結果を提供するために一度)クライアントデバイスと通信することができる。
【0044】
ここで、この非限定的な例においてどのように既存のリモート量子コンピューティングサービスが実行されるのかを検討する。クライアントデバイスは、それ自体、コンピュータプログラムをホストする。すなわち、クライアントデバイスは、仮設パラメータをコンピュータプログラムにフィードし、コンピュータプログラムの古典的実行を開始する。
【0045】
第1の反復中、コンピュータプログラムは、仮設パラメータを使用して、第1の量子状態を計算し、コンピュータプログラムは、ハミルトニアンが第1の量子状態に適用されることになることを示す。それに応じて、クライアントデバイスは、既存のリモート量子コンピューティングサービスに、その量子ビットを第1の量子状態に初期化し、ハミルトニアンに従って、初期化された量子ビットに変換を適用する命令を送信する。クライアントデバイスは、次に、既存のリモート量子コンピューティングサービスから結果として得られる量子状態を受信し、コンピュータプログラムは、結果として得られる量子状態に基づいて収束基準をチェックする。収束基準がまだ満たされていない場合、コンピュータプログラムは、仮設パラメータを更新し、第2の反復に移る。
クライアントデバイス及び既存のリモート量子コンピューティングサービスは、n回の反復の残りについてそのような動作を継続する。
【0046】
n回の反復の各々において、クライアントデバイス及び既存のリモート量子コンピューティングサービスは、総計2n回の送信のために、互いに二度通信することができる(例えば、クライアントデバイスは、既存のリモート量子コンピューティングサービスに、量子計算を実行するように命令することができ、既存のリモート量子コンピューティングサービスは、量子結果を提供することができる)ことに留意されたい。しかしながら、クライアントデバイス及び既存のリモート量子コンピューティングサービスは密にバンドル化することができない(例えば、同一の場所に位置することができず、互いに専用ネットワーク接続状態になることができず、キューによって分離され得る)ので、これらの2n回の送信は、各々高レイテンシ(例えば、過度に時間を消費する)であり得る。実際、様々な場合において、これらの2n回の高レイテンシ送信の各々は、本明細書において説明されるコンピュータ化されたツールに関連付けられた2n回の低レイテンシ送信の各々よりも著しく時間を消費し得る。それゆえ、この非限定的な例における既存のリモート量子コンピューティングサービスの実装は本明細書において説明されるコンピュータ化されたツールの実装よりも2回少ない送信を要求し得るが、既存のリモート量子コンピューティングサービスの実装によって消費される時間の総量(例えば、総レイテンシ)は、本明細書において説明されるコンピュータ化されたツールの実装によって消費される時間の総量(例えば、総レイテンシ)よりも著しく高くあり得る。
【0047】
換言すれば、本明細書において説明されるコンピュータ化されたツールは、既存のリモート量子コンピューティングサービスと比較して著しく削減されたレイテンシを呈することができる。そのようなレイテンシ低減は、コンピュータ化されたツールが、クライアントデバイスから、古典的実行時に、量子計算を指定するコンピュータプログラム全体を受信することができるとともに、これをホストすることができることに起因し得る。すなわち、コンピュータ化されたツールは、バックエンド環境において、コンピュータプログラムの古典的実行及びコンピュータプログラムによって指定される量子計算のパフォーマンス/実行の両方を管理することができる。実際には、コンピュータ化されたツールは量子コンピューティングデバイスに密にバンドル化され得るので、コンピュータ化されたツールは、コンピュータプログラムの各反復中にクライアントデバイスへのコストがかかる高レイテンシ送信を要求することなく、そのような量子計算を効率的に実行することができる。明らかに対照的に、既存のリモート量子コンピューティングサービスはそれ自体量子コンピューティングデバイスに密にバンドル化されているが、既存のリモート量子コンピューティングサービスは、コンピュータプログラムを受信することもホストすることもできない。その代わりに、既存の技法が実装される場合、クライアントデバイスは、それ自体がコンピュータプログラムをホストすることになり、クライアントデバイスは、コンピュータプログラムの各反復中に既存のリモート量子コンピューティングサービスとのコストがかかる高レイテンシ送信に関与しなければならない。
【0048】
更に換言すれば、量子コンピューティングデバイスがリモートサービス(例えば、クラウドサービス)としてバックエンド環境において提供される場合、かつフロントエンドクライアントが古典的/量子コンピュータプログラムを実行するために量子コンピューティングデバイスを活用することを望む場合、本発明者らは、フロントエンド環境において古典的/量子コンピュータプログラムをホストすることを伴う既存の技法と比較して、バックエンド環境において古典的/量子コンピュータプログラムをホストすることによってレイテンシを著しく削減することができることを認識した。フロントエンド環境において古典的/量子コンピュータプログラムをホストすることによって、フロントエンド古典的コンピューティングリソース及びバックエンド量子コンピューティングリソースの間の高レイテンシインタラクションが迅速に蓄積し得る。対照的に、バックエンド環境において古典的/量子コンピュータプログラムをホストすることによって、バックエンド環境において古典的コンピューティングリソース及び量子コンピューティングリソースの両方をともに密にバンドル化することができ、これは、古典的コンピューティングリソース及び量子コンピューティングリソースの間に主に低レイテンシインタラクションが存在することができることを意味する。すなわち、古典的/量子コンピュータプログラムがバックエンド環境においてホストされる場合、著しいレイテンシ低減が発生し得る。
【0049】
本発明の様々な実施形態は、(例えば、バックエンド量子ランタイムを促進するために)本質的に非常に技術的であり、抽象的ではなく、人間による精神の行為のセットとして実行することができない問題を解決するハードウェア及び/又はソフトウェアを使用するために利用することができる。さらに、実行されるプロセスの幾つかは、特化されたコンピュータ(例えば、ランタイムマネージャ、量子コンピューティングデバイス)によって実行することができる。様々な態様において、本発明の様々な実施形態に関連付けられた幾つかの定義されたタスクは:プロセッサに動作可能に結合されたバックエンドデバイスによって、クライアントデバイスによって提供されるコンピュータプログラムにアクセスすること、ここで、コンピュータプログラムは、量子計算を示すように構成されている;及びバックエンドデバイスによって、ランタイムコンテナをスプールすることによってコンピュータプログラムをホストすることを含むことができ、ここで、ランタイムコンテナは、コンピュータプログラムの古典的実行及びコンピュータプログラムによって示される量子計算の量子実行の両方を編成する。そのような定義されたタスクは、典型的には、人間によって手動で実行されない。その上、人間の精神も、ペン及び紙を持った人間も、量子計算を示すように構成されているコンピュータプログラムに電子的にアクセスし、コンピュータプログラムの古典的実行及び量子実行の両方を管理するランタイムコンテナをスプール/インスタンス化することによってコンピュータプログラムを電子的にホストすることができない。その代わりに、本発明の様々な実施形態は、コンピュータ技術に内在的にかつ分離不可能に結び付けられ、コンピューティング環境の外で実装することができない(例えば、コンピュータプログラムは、コンピューティングシステムの外に存在することができない内在的にコンピュータ化されたオブジェクトであり;同様に、バックエンド環境において、コンピュータプログラムの古典的実行及び量子実行の両方をハンドリングするコンピュータ化されたツールも、コンピュータを伴わない任意の理に適った方法において実用可能に実装することができない内在的にコンピュータ化デバイスである)。
【0050】
様々な事例において、本発明の実施形態は、実用的な適用に、バックエンド量子ランタイムに関する開示された教示を統合することができる。実際には、本明細書において説明されるように、システム及び/又はコンピュータ実装方法の形式を取ることができる本発明の様々な実施形態は、リモート量子コンピューティングサービスに関連付けられたレイテンシを削減することができるコンピュータ化されたツールとみなすことができる。具体的には、上記で説明されたように、コンピュータ化されたツールは、クライアントデバイスから、コンピュータプログラムを受信することができ、ここで、コンピュータプログラムは量子計算が実行されることをリクエストするように構成されている。様々な態様において、コンピュータ化されたツールは、バックエンド環境においてコンピュータプログラムをホストすることができるバックエンドランタイムコンテナをスプールすることができる。すなわち、バックエンドランタイムコンテナは、コンピュータプログラムの古典的実行及びコンピュータプログラムによってリクエストされる量子計算のパフォーマンス/実行の両方を管理することができる。実際には、バックエンドランタイムコンテナは、バックエンド量子コンピューティングデバイスと密にバンドル化することができ、それゆえ、バックエンドランタイムコンテナは、バックエンド量子コンピューティングデバイスに、コンピュータプログラムによって指定される量子計算を実行するように命令することができる。これは、バックエンドランタイムコンテナ及びバックエンド量子コンピューティングデバイスの間の複数の送信を伴うことができるが、そのような複数の送信は、各々、密なバンドル化に起因して低レイテンシとすることができ、これは、そのような複数の送信によって消費される全体時間を最小にすることができることを意味する。明らかに対照的に、既存の技法が実装される場合、そのような複数の送信は、密にバンドル化されたコンポーネント間で発生せず、その代わりに、クライアントデバイス及び既存のリモート量子コンピューティングサービスの間で発生する。クライアントデバイス及び既存のリモート量子コンピューティングサービスは密にバンドル化されないので、そのような複数の送信は、各々高レイテンシであり得、これは、そのような複数の送信によって消費される全体時間が不必要に高くなり得ることを意味する。換言すれば、本明細書において説明されるようなコンピュータツールは、リモート量子コンピューティングサービスの通信レイテンシを著しく削減することができる。この方法においてリモート量子コンピューティングサービスの通信レイテンシを削減することができるシステム及び/又は技法は、量子コンピューティングの分野において具体的でかつ有形の技術的改善を明らかに構成する。
【0051】
さらに、本発明の様々な実施形態は、開示された教示に基づいて、有形、ハードウェアベース、及び/又はソフトウェアベースデバイスを制御することができる。例えば、本発明の実施形態は、有形の量子ハードウェア上で、量子回路を実際に実行することができる。
【0052】
図及び本明細書における開示は、本発明の様々な実施形態の非限定的な例を説明することが認識されるべきである。
【0053】
図1は、本明細書において説明される1つ又は複数の実施形態に係る、バックエンド量子ランタイムを促進することができる例示の非限定的なシステム100のブロック図を示している。示されているように、バックエンド量子ランタイムシステム102は、任意の適した有線及び/又は無線電子接続を介して、クライアントデバイス104と電子的に統合することができる。
【0054】
様々な態様において、クライアントデバイス104は、コンピュータ実行可能ハードウェア及び/又はコンピュータ実行可能ソフトウェアの任意の適した組み合わせとすることができる。例えば、クライアントデバイス104は、ラップトップコンピュータ、デスクトップコンピュータ、車両一体型コンピュータ、スマートモバイルデバイス、タブレットデバイス、及び/又は他の任意の適した古典的コンピューティングデバイスとすることができる。様々な場合において、クライアントデバイス104は、量子ハードウェアを欠いている可能性がある。例えば、クライアントデバイス104は、量子ビット(例えば、超伝導量子ビット)が製造される量子基板(例えば、シリコンウェハ)、及び量子ビットの動作状態を制御することができるマイクロ波共振器を欠いている可能性がある。それに応じて、クライアントデバイス104は、量子計算を実行することが不可能であり得る。
【0055】
様々な事例において、クライアントデバイス104は、コンピュータプログラムを電子的に記憶し、電子的に維持し、及び/又は別様にこれに電子的にアクセスすることができる。様々な場合において、コンピュータプログラムは、古典的コンピューティング命令(例えば、古典的コンピュータによってハンドリング可能である符号化命令)及び量子コンピューティング命令(例えば、量子コンピュータによってハンドリング可能である符号化命令)の両方を含む任意の適した実行可能スクリプトとすることができる。例えば、コンピュータプログラムは、古典的実行時及び/又は古典的実行中、1つ又は複数の量子計算が促進されることを識別し、指定し、示し、及び/又は別様にリクエストすることができる。クライアントデバイス104は、量子ハードウェアを欠いている可能性があるので、クライアントデバイス104は、そのような量子計算を実行することができず、それゆえ、クライアントデバイス104は、単独で、コンピュータプログラムを完全に実行することが不可能であり得る。
【0056】
様々な態様において、この問題に対処するために、クライアントデバイス104は、コンピュータプログラムを完全に実行するようにバックエンド量子ランタイムシステム102と電子的に通信することができる。様々な場合において、クライアントデバイス104は、フロントエンドクライアントとみなすことができ、バックエンド量子ランタイムシステム102は、コンピュータプログラムを完全に実行する際にクライアントデバイス104を支援することができるバックエンドサーバ(例えば、クラウドサーバ)とみなすことができる。換言すれば、バックエンド量子ランタイムシステム102は、リモート量子コンピューティングサービスをクライアントデバイス104に提供するとみなすことができる。しかしながら、本明細書において説明されるように、バックエンド量子ランタイムシステム102は、既存のリモート量子コンピューティングサービスと比較して著しく削減されたレイテンシを呈することができる。
【0057】
様々な実施形態において、バックエンド量子ランタイムシステム102は、プロセッサ106(例えば、コンピュータ処理ユニット、マイクロプロセッサ)及び当該プロセッサ106に動作可能に接続されているコンピュータ可読メモリ108を備えることができる。メモリ108は、プロセッサ106による実行時に、プロセッサ106及び/又はバックエンド量子ランタイムシステム102の他のコンポーネント(例えば、受信機コンポーネント110、ランタイムマネージャコンポーネント112、量子コンピューティングデバイス114、記録コンポーネント116、送信機コンポーネント118)に1つ又は複数の行為を実行させることができるコンピュータ実行可能命令を記憶することができる。様々な実施形態において、メモリ108は、コンピュータ実行可能コンポーネント(例えば、受信機コンポーネント110、ランタイムマネージャコンポーネント112、量子コンピューティングデバイス114、記録コンポーネント116、送信機コンポーネント118)を記憶することができ、プロセッサ106は、コンピュータ実行可能コンポーネントを実行することができる。
【0058】
様々な実施形態において、バックエンド量子ランタイムシステム102は、受信機コンポーネント110を備えることができる。様々な態様において、受信機コンポーネント110は、クライアントデバイス104からコンピュータプログラムを電子的に取り出し、及び/又は別様にこれに電子的にアクセスすることができる。すなわち、クライアントデバイス104は、コンピュータプログラムを受信機コンポーネント110に電子的に送信することができる。それに応じて、様々な事例において、バックエンド量子ランタイムシステム102の他のコンポーネントは、コンピュータプログラムを操作し、及び/又は別様にこれとインタラクトすることができる。様々な場合において、受信機コンポーネント110は、さらに、クライアントデバイス104から、コンピュータプログラムが要求する及び/又はコンピュータプログラムが依拠する1つ又は複数のソフトウェアライブラリ(例えば、量子回路ライブラリ)のインジケーションを電子的に取り出し、及び/又は別様にこれに電子的にアクセスすることができる。
【0059】
様々な実施形態において、バックエンド量子ランタイムシステム102は、ランタイムマネージャコンポーネント112を備えることができる。様々な態様において、ランタイムマネージャコンポーネント112は、コンピュータプログラムに基づいてランタイムコンテナを電子的にスプールし、電子的にインスタンス化し、及び/又は別様に電子的生成することができる。様々な事例において、ランタイムコンテナは、コンピュータプログラムをホストすることができる。バックエンド量子ランタイムシステム102は、クライアントデバイス104からリモートであり得る(例えば、クラウド環境等のバックエンド環境に有り得、一方、クライアントデバイス104は、フロントエンド環境にあり得る)ので、ランタイムマネージャコンポーネント112によってスプールされるランタイムコンテナは、クライアントデバイス104からリモートで及び/又はこれから離れてコンピュータプログラムをホストするとみなすことができる。様々な態様において、ランタイムコンテナは、任意の適したコンテナ化されたコンピューティングパラダイムからの任意の適したソフトウェアコンテナとすることができる。例えば、ランタイムコンテナは、Docker(登録商標)コンテナ、Kubernetes(登録商標)コンテナ、及び/又はcontainerdコンテナとすることができる。様々な事例において、クライアントデバイス104が受信機コンポーネント110に、コンピュータプログラムが依拠する1つ又は複数のソフトウェアライブラリのインジケーションを送信する場合、ランタイムマネージャコンポーネント112は、そのようなソフトウェアライブラリを用いてランタイムコンテナをインスタンス化することができる。例えば、ランタイムマネージャコンポーネント112は、ランタイムコンテナをスプールすることができ、ランタイムコンテナに、ランタイムコンテナにとってアクセス可能である任意の適したデータ構造(図示せず)から、そのようなソフトウェアライブラリをダウンロード及び/又は別様にインストールするようにコマンドすることができる。それに応じて、ランタイムコンテナは、コンピュータプログラムをホストすることができる。
【0060】
様々な実施形態において、バックエンド量子ランタイムシステム102は、量子コンピューティングデバイス114を備えることができる。様々な態様において、量子コンピューティングデバイス114は、任意の適した量子ハードウェアを備えることができる。例えば、量子コンピューティングデバイス114は、任意の適した数の任意の適したタイプの量子ビットデバイス(例えば、超伝導量子ビット)が製造される任意の適した量子基板(例えば、シリコンウェハ)を含むことができる。様々な場合において、量子ビットは、任意の適した方式においてそのような量子基板上にともに配置及び/又は結合することができる(例えば、量子ビットは、矩形アレイにおいて、六角形アレイにおいて、及び/又は他の任意の適した形状において配置することができる)。様々な事例において、そのような量子基板は、マイクロ波共振器、導波路等の任意の適した量子制御ハードウェア、及び/又は、量子ビット上での動作を作動させ、及び/又は量子ビットを測定するために電気及び/又は光刺激を送信することができる任意の適したシグナリングコンポーネント(例えば、送信機及び/又は受信機)も含むことができる。すなわち、そのような量子制御ハードウェアは、量子ビットの状態を制御可能に変更するのに使用することができる。いずれの場合においても、量子コンピューティングデバイス114は、量子計算を促進することができる。すなわち、量子コンピューティングデバイス114は、様々な事例において、任意の適した量子回路を任意の適した量子状態に適用することができる。
【0061】
様々な事例において、ランタイムコンテナ及び量子コンピューティングデバイス114は、低レイテンシ電子通信をランタイムコンテナ及び量子コンピューティングデバイス114によって促進することができるように、ともに密にバンドル化することができる。例えば、幾つかの場合では、ランタイムコンテナは、量子コンピューティングデバイス114と同一の場所に位置することができる。例えば、ランタイムマネージャコンポーネント112は、プロセッサ106及び/又はメモリ108上でランタイムコンテナをスプールすることができ、プロセッサ106及び/又はメモリ108は、プロセッサ106及び/又はメモリ108を量子コンピューティングデバイス114に物理的に配線することができるように、物理的に量子コンピューティングデバイス114の付近に位置することができる。別の例として、幾つかの場合では、ランタイムコンテナ及び量子コンピューティングデバイス114は、専用ネットワークチャネルを介して互いに通信することができる。例えば、図において明示的には示されていないが、ランタイムマネージャコンポーネント112は、量子コンピューティングデバイス114からリモートであるが、それにもかかわらず、固定帯域幅無線接続を介して量子コンピューティングデバイス114に結合されているコンピューティングマシン(図示せず)上でランタイムコンテナをスプールすることができる。
【0062】
様々な態様において、ランタイムコンテナ及び量子コンピューティングデバイス114は、コンピュータプログラムを完全に実行するようにともに機能することができる。より具体的には、様々な事例において、ランタイムコンテナは、コンピュータプログラムを古典的に実行することができる。そのような古典的実行は、コンピュータプログラムに、実行されることになる1つ又は複数の量子計算を指定させることができる。様々な事例において、コンピュータプログラムがそのような1つ又は複数の量子計算のパフォーマンス/実行を指定及び/又は別様に呼び出す場合、ランタイムコンテナは、命令を量子コンピューティングデバイス114に送信することができる。そのような命令は、量子コンピューティングデバイス114に、1つ又は複数の量子計算を電子的に実行させることができる。様々な場合において、量子コンピューティングデバイス114は、量子計算によってもたらされた量子結果をランタイムコンテナに返送することができる。様々な態様において、ランタイムコンテナは、そのような量子結果を活用することによってコンピュータプログラムの古典的実行を継続及び/又は完了することができる。そのような方法においてコンピュータプログラムの古典的実行を継続及び/又は完了することは、1つ又は複数のプログラム結果をもたらすことができる。
【0063】
換言すれば、ランタイムコンテナは、コンピュータプログラム内に含まれる古典的命令を促進するとみなすことができ、量子コンピューティングデバイス114は、コンピュータプログラム内に含まれる量子命令を促進するとみなすことができる。いずれの場合においても、バックエンド量子ランタイムシステム102は、ランタイムコンテナ及び量子コンピューティングデバイス114を介して、クライアントデバイス104からリモートでコンピュータプログラムを完全に実行することができる。
【0064】
様々な実施形態において、バックエンド量子ランタイムシステム102は、記録コンポーネント116を備えることができる。様々な態様において、記録コンポーネント116は、量子コンピューティングデバイス114によって生成された量子結果及び/又はランタイムコンテナによって生成されたプログラム結果を電子的に記録、ログ記録、文書記録、維持、及び/又は別様に記憶することができる。様々な事例において、記録コンポーネント116は、任意の適したデータ構造(例えば、リレーショナルデータ構造、グラフデータ構造、ハイブリッドデータ構造)を含むことができる。その上、様々な場合において、記録コンポーネント116は、任意の適したデータフォーマットにおいて量子結果及び/又はプログラム結果を記録、ログ記録、文書記録、維持、及び/又は別様に記憶することができる。
【0065】
様々な実施形態において、バックエンド量子ランタイムシステム102は、送信機コンポーネント118を備えることができる。様々な態様において、送信機コンポーネント118は、記録コンポーネント116によって記憶される量子結果及び/又はプログラム結果のうちの任意のものをクライアントデバイス104に電子的に送信することができる。
【0066】
図2は、本明細書において説明される1つ又は複数の実施形態に係る、バックエンド量子ランタイムを促進することができるコンピュータプログラムを含む例示の非限定的なシステム200のブロック図を示している。示されているように、システム200は、幾つかの場合では、システム100と同じコンポーネントを備え、コンピュータプログラム202を更に備えることができる。
【0067】
様々な実施形態において、受信機コンポーネント110は、クライアントデバイス104からコンピュータプログラム202を電子的に受信し、取り出し、及び/又はこれにアクセスすることができる。すなわち、クライアントデバイス104は、コンピュータプログラム202を受信機コンポーネント110に電子的に提供することができる。様々な態様において、コンピュータプログラム202は、古典的コンピューティング命令及び量子コンピューティング命令の両方を含む任意の適した実行可能スクリプトとすることができる。例えば、コンピュータプログラム202は、古典的最適化ループを備えることができ、ここで、古典的最適化ループの各反復は、古典的計算を伴うことができ、古典的最適化ループの各反復は、量子計算のパフォーマンス/実行を呼び出し、及び/又は別様にリクエストすることもできる。非限定的な例として、コンピュータプログラム202は、VQE及び/又はQAOAのパフォーマンスを促進する実行可能スクリプトとすることができる。これは、図3に関して更に詳細に説明される。
【0068】
図3は、本明細書において説明される1つ又は複数の実施形態に係る、古典的最適化ループ内で量子計算を含む例示の非限定的なコンピュータプログラムのブロック図を示している。換言すれば、図3は、コンピュータプログラム202の非限定的でかつ例示の実施形態の擬似コードを示している。
【0069】
示されているように、コンピュータプログラム202は、様々な事例において、パラメータの何らかの最適化されたセット(例えば、スカラ、ベクトル、行列、及び/又はテンソルの何らかの最適化されたセット)を反復的に計算するように構成されているコンピューティング命令のセット302を備えることができる。
【0070】
様々な態様において、コンピューティング命令のセット302は、コンピューティング命令304を含むことができる。様々な場合において、コンピューティング命令304は、仮設パラメータの初期化及び/又は受信を呼び出すことができる。当業者であれば認識するように、仮設パラメータは、コンピュータプログラム202が反復的に計算するように設計される最適パラメータ値の初期推測及び/又は経験に基づく推測(educated guess)とみなすことができる。
【0071】
様々な事例において、コンピューティング命令のセット302は、コンピューティング命令306を含むことができる。様々な場合において、コンピューティング命令306は、何らかの収束基準の初期化及び/又は受信を呼び出すことができる。当業者であれば認識するように、収束基準(例えば、コスト関数閾値及び/又は損失関数閾値)は、コンピュータプログラム202の反復の継続及び/又は停止のいずれかを行うために活用することができる。
【0072】
様々な態様において、コンピューティング命令のセット302は、コンピューティング命令308を含むことができる。様々な場合において、コンピューティング命令308は、この非限定的な例では、whileループを開始することができる。それに応じて、whileループ内にネストされるコンピューティング命令(例えば、310~316)は、収束基準が満たされるまで反復することができる。
【0073】
様々な事例において、コンピューティング命令のセット302は、コンピューティング命令310を含むことができる。様々な場合において、コンピューティング命令310は、仮設パラメータに基づいて、量子状態の形成を引き起こすことができる。様々な場合において、コンピューティング命令310は、仮設パラメータを量子状態に変換するために(例えば、仮設パラメータを量子処理可能フォーマットに変換するために)実装することができる任意の適した量子埋め込み技法(例えば、振幅埋め込み)を伴うことができる。
【0074】
様々な態様において、コンピューティング命令のセット302は、コンピューティング命令312を含むことができる。様々な場合において、コンピューティング命令312は、量子回路がコンピューティング命令310において形成された量子状態に適用されることを呼び出し、及び/又は別様にリクエストすることができる。様々な場合において、これは、量子計算が実行されることを呼び出し、及び/又はリクエストすると解釈することができる。様々な態様において、そのような量子計算の結果は、量子結果と称され得る。
【0075】
様々な事例において、コンピューティング命令のセット302は、コンピューティング命令314を含むことができる。様々な場合において、コンピューティング命令314は、量子結果に基づいて、仮設パラメータを更新及び/又は摂動することができる。様々な場合において、コンピューティング命令314は、仮設パラメータを更新及び/又は摂動する任意の適した古典的最適化技法を伴うことができる。
【0076】
様々な態様において、コンピューティング命令のセット302は、コンピューティング命令316を含むことができる。様々な場合において、コンピューティング命令316は、収束基準をチェックすることができる。ここでも、収束基準は、様々な場合において、それに対して更新された仮設パラメータを比較することができる、及び/又はそれに対して更新された仮設パラメータに基づくコスト関数及び/又は損失関数を比較することができる閾値とすることができる。
【0077】
様々な事例において、コンピューティング命令のセット302は、コンピューティング命令318を含むことができる。様々な場合において、コンピューティング命令318は、whileループを終了することができる。
【0078】
様々な態様において、コンピューティング命令のセット302は、コンピューティング命令320を含むことができる。様々な場合において、コンピューティング命令320は、最適化された仮設パラメータ(例えば、最も最近に更新された仮設パラメータ)を出力及び/又は提供することができる。
【0079】
当業者であれば認識するように、コンピュータプログラム202のwhileループ(例えば、コンピューティング命令308~318)は、古典的最適化ループとみなされる。このwhileループは、収束基準が満たされるまで反復することができる。さらに、様々な場合において、コンピューティング命令312は、量子計算のパフォーマンス/実行を呼び出し、及び/又は別様にリクエストするとみなすことができる。コンピューティング命令312はwhileループ内にあるので、コンピュータプログラム202は、この非限定的な例では、古典的最適化ループで量子計算を呼び出すこととみなすことができる。換言すれば、コンピュータプログラム202は、whileループの反復ごとに(例えば、古典的最適化ループの反復ごとに)、量子計算のパフォーマンス/実行を呼び出すことができる。
【0080】
図4は、本明細書において説明される1つ又は複数の実施形態に係る、バックエンド量子ランタイムを促進することができるランタイムコンテナを含む例示の非限定的なシステム400のブロック図を示している。示されているように、システム400は、幾つかの場合では、システム200と同じコンポーネントを備え、ランタイムコンテナ402及び/又は量子計算404を更に備えることができる。
【0081】
様々な実施形態において、ランタイムマネージャコンポーネント112は、ランタイムコンテナ402を電子的にスプールすることができ、ここで、ランタイムコンテナ402は、コンピュータプログラム202を電子的にホストすることができる。バックエンド量子ランタイムシステム102は、クライアントデバイス104からリモートであり得る(例えば、クラウド環境等のバックエンド環境に有り得、一方、クライアントデバイス104は、フロントエンド環境にあり得る)ので、ランタイムコンテナ402も同様に、クライアントデバイス104からリモートであり得る(例えば、同様にバックエンド環境にあり得る)。
【0082】
様々な事例において、上記で言及されたように、ランタイムコンテナ402は、任意の適したコンテナ化されたアプリケーション配信パラダイムに従った任意の適したソフトウェアコンテナとすることができる(例えば、Docker(登録商標)コンテナ、Kubernetes(登録商標)コンテナ、及び/又はcontainerdコンテナとすることができる)。様々な場合において、コンピュータプログラム202は、ランタイムコンテナ402によって実装可能及び/又は実行可能であるソフトウェアイメージとみなすことができる。図において明示的には示されていないが、クライアントデバイス104は、幾つかの事例では、受信機コンポーネント110に、コンピュータプログラム202によって依拠される1つ又は複数のソフトウェアライブラリ及び/又はソフトウェアパッケージのインジケーションを送信することができる。それに応じて、そのような場合において、ランタイムコンテナ402は、ランタイムコンテナ402にとって電子的にアクセス可能である任意の適したデータ構造(図示せず)からそのようなソフトウェアライブラリをダウンロード及び/又は別様にインストールすることができる。
【0083】
様々な態様において、上記で言及されたように、ランタイムコンテナ402及び量子コンピューティングデバイス114は、低レイテンシ電子送信をランタイムコンテナ402及び量子コンピューティングデバイス114の間で送信することができるように、ともに密にバンドル化することができる。一例として、ランタイムコンテナ402は、量子コンピューティングデバイス114と同一の場所に位置することができる。例えば、ランタイムコンテナ402は、コンピューティングマシン上で(例えば、プロセッサ106及び/又はメモリ108上で)スプールすることができ、そのようなコンピューティングマシンは、コンピューティングマシン及び量子コンピューティングデバイス114をともに物理的に配線することができるように、物理的に量子コンピューティングデバイス114に極めて近接して位置することができる。別の例として、ランタイムコンテナ402及び量子コンピューティングデバイス114は、任意の適した専用電子通信チャネルを介して互いに通信することができる。例えば、図において明示的には示されていないが、ランタイムコンテナ402は、量子コンピューティングデバイス114からリモートであるが、それにもかかわらず、固定帯域幅無線ネットワーク接続を介して量子コンピューティングデバイス114に結合されているコンピューティングマシン上でスプールすることができる。
【0084】
様々な態様において、ランタイムコンテナ402及び量子コンピューティングデバイス114は、コンピュータプログラム202を完全に実行するように協働することができる。例えば、ランタイムコンテナ402は、コンピュータプログラム202を古典的に実行することができる。換言すれば、ランタイムコンテナ402は、コンピュータプログラム202内に含まれる任意の古典的命令を実行/ハンドリングすることができる。そのような古典的実行は、コンピュータプログラム202に、実行されることになる1つ又は複数の量子計算404を呼び出し、及び/又は別様に指定させることができる。上記で言及されたように、コンピュータプログラム202は、所与の量子回路が所与の量子状態に適用されるべきであることを指定し、及び/又は別様に示すことによって量子計算を呼び出すことができる。様々な事例において、ランタイムコンテナ402は、量子コンピューティングデバイス114に、1つ又は複数の量子計算404を実行するように電子的に命令、コマンド、及び/又は別様にこれを行わせることができる。それゆえ、量子コンピューティングデバイス114は、コンピュータプログラム202内に含まれる任意の量子命令を実行/ハンドリングすることができる。
【0085】
図5は、本明細書において説明される1つ又は複数の実施形態に係る、バックエンド量子ランタイムを促進することができる、量子結果及び/又はプログラム結果を含む例示の非限定的なシステム500のブロック図を示している。示されているように、システム500は、幾つかの場合では、システム400と同じコンポーネントを備え、量子結果502及び/又はプログラム結果504を更に備えることができる。
【0086】
上記で言及されたように、量子コンピューティングデバイス114は、1つ又は複数の量子計算404を実行することができる。様々な場合において、これは、それぞれ1つ又は複数の量子計算404に対応することができる1つ又は複数の量子結果502をもたらすことができる。様々な事例において、1つ又は複数の量子結果502の各々は、1つ又は複数の量子計算404のうちのそれぞれの1つに基づいて量子コンピューティングデバイス114によって生成される結果として得られる量子状態とすることができる。様々な態様において、1つ又は複数の量子結果502は、記録コンポーネント116によって電子的に記憶及び/又は維持することができる。
【0087】
様々な態様において、ランタイムコンテナ402は、量子コンピューティングデバイス114から(及び/又は記録コンポーネント116から)、1つ又は複数の量子結果502を取り出すことができる。様々な事例において、ランタイムコンテナ402は、1つ又は複数の量子結果502を利用することによってコンピュータプログラム202の古典的実行を継続及び/又は完了することができる。様々な場合において、これは、1つ又は複数のプログラム結果504をもたらすことができる。様々な事例において、1つ又は複数のプログラム結果504の各々は、1つ又は複数の量子結果502のうちのそれぞれの1つに基づいてランタイムコンテナ402によって計算されるスカラ、ベクトル、行列、及び/又はテンソルとすることができる。様々な態様において、1つ又は複数のプログラム結果504は、記録コンポーネント116によって電子的に記憶及び/又は維持することができる。
【0088】
この論述の一部を明確化することを助けるために、図3において示されたコンピュータプログラム202の非限定的な例を再び検討する。様々な場合において、コンピューティング命令304~310は、古典的命令とみなすことができる。それに応じて、ランタイムコンテナ402は、それらを電子的に実行することができる。すなわち、ランタイムコンテナ402は:コンピューティング命令304によって、仮設パラメータを初期化及び/又は別様に取得することができ;コンピューティング命令306によって、収束基準を初期化及び/又は別様に取得することができ;コンピューティング命令308によって、仮設パラメータが収束基準を満たさない限り反復するwhileループを開始することができ;コンピューティング命令310によって、仮設パラメータに基づいて量子状態を計算及び/又は別様に算出することができる。
【0089】
様々な態様において、コンピューティング命令312は、古典的命令ではなく量子命令とみなすことができ、これはなぜならば、それは、コンピューティング命令310において形成される量子状態への量子回路の適用を伴うためである。量子状態への量子回路のそのような適用は、1つ又は複数の量子計算404のうちの1つとみなすことができる。それに応じて、ランタイムコンテナ402は、それ自体でコンピューティング命令312を電子的に実行することができない。しかしながら、ランタイムコンテナ402は、量子コンピューティングデバイス114に、量子回路を量子状態に適用するように電子的に命令することができ、これにより、量子結果(例えば、1つ又は複数の量子結果502のうちの1つ)がもたらされ得る。より具体的には、そのような命令に応答して、量子コンピューティングデバイス114は、その量子ビットを初期化することができ、それによって、量子ビットに、コンピューティング命令310によって指定された量子状態に入らせる。その上、量子コンピューティングデバイス114は、次に、コンピューティング命令312において指定された量子回路に従ってその量子ビットの状態を変換することができる。量子コンピューティングデバイス114の量子ビットの結果として得られる量子状態は、コンピューティング命令312において取得される量子結果とみなすことができる。
【0090】
様々な事例において、コンピューティング命令314~316は、古典的命令とみなすことができる。それに応じて、ランタイムコンテナ402は、それらを電子的に実行することができる。すなわち、ランタイムコンテナ402は:コンピューティング命令314によって、任意の適した古典的最適化及び/又は摂動技法を介して、量子結果に基づいて仮設パラメータを更新することができ;更新された仮設パラメータが収束基準を満たすか否かをチェックすることができる。そうである場合、ランタイムコンテナ402は、コンピューティング命令318によってwhileループを終了することができ、コンピューティング命令320に進むことができる。そうではない場合、ランタイムコンテナ402は、whileループの別の反復を実行するように、コンピューティング命令310に戻るように進むことができる。
【0091】
そのため、上記で説明されたように、ランタイムコンテナ402は、コンピュータプログラム202内に含まれる古典的命令(例えば、304~310及び314~320)を促進するとみなすことができ、量子コンピューティングデバイス114は、コンピュータプログラム202内に含まれる量子命令(例えば、312)を促進するとみなすことができる。いずれの場合においても、ランタイムコンテナ402及び量子コンピューティングデバイス114は、クライアントデバイス104からリモートでコンピュータプログラム202を完全に実行するように(例えば、バックエンド及び/又はクラウド環境においてコンピュータプログラム202を完全に実行するように)、ともに機能することができる。
【0092】
図6は、本明細書において説明される1つ又は複数の実施形態に係る、バックエンド量子ランタイムを促進することができる例示の非限定的なコンピュータ実装方法600のフロー図を示している。様々な事例において、コンピュータ実装方法600は、バックエンド量子ランタイムシステム102によって促進することができる。
【0093】
様々な実施形態において、行為602は、バックエンドサービス(例えば、110)によって、古典的最適化ループ(例えば、308~318)で量子計算(例えば、312)を呼び出すコンピュータプログラム(例えば、202)を受信することを含むことができる。
【0094】
様々な態様において、行為604は、バックエンドサービス(例えば、112)によって、コンピュータプログラムをホストするためにランタイムコンテナ(例えば、402)をスプールすることを含むことができる。
【0095】
様々な事例において、行為606は、ランタイムコンテナによって、i=1を初期化することを含むことができる。当業者であれば、この非限定的な例では、iは、反復を促進することを助けるためのダミーインデックスとすることができることを認識するであろう。
【0096】
様々な場合において、行為608は、ランタイムコンテナによって、コンピュータプログラムの古典的最適化ループの第iの反復を古典的に実行することを含むことができる。様々な事例において、これは、コンピュータプログラムに、実行されることになる第iの量子計算(例えば、404のうちの1つ)を指定させ、及び/又は別様に呼び出させることができる。そのような量子計算は、様々な場合において、指定された量子回路を指定された量子状態に適用する形式を取ることができる。
【0097】
様々な態様において、行為610は、ランタイムコンテナによって、バックエンドサービスの量子コンピュータ(例えば、114)に、第iの量子計算を実行するように命令することを含むことができる。様々な場合において、これは、第iの量子結果(例えば、502の1つ)をもたらすことができる。
【0098】
様々な事例において、行為612は、ランタイムコンテナによって、第iの量子結果を利用することによってコンピューティングプログラムの古典的最適化ループの第iの反復を完了することを含むことができる。これは、様々な場合において、第iのプログラム結果(例えば、504の1つ)をもたらすことができる。
【0099】
様々な場合において、行為614は、ランタイムコンテナによって、収束基準(例えば、316)が第iのプログラム結果によって満たされているか否かを決定することを含むことができる。そうである場合、コンピュータ実装方法600は、行為616に進むことができる。そうではない場合、コンピュータ実装方法600は、行為618に進むことができる。
【0100】
様々な態様において、行為616は、(例えば、コンピュータプログラムによって計算された最終化及び/又は最適化された結果として第iのプログラム結果を出力することによって)コンピュータ実装方法600を終了することを含むことができる。
【0101】
様々な事例において、行為618は、ランタイムコンテナによって、第iのプログラム結果に基づいてコンピュータプログラムのパラメータ(例えば、314)を更新することを含むことができる。様々な場合において、コンピュータ実装方法600は、その後、行為608に戻るように進むことができる。
【0102】
図7は、本明細書において説明される1つ又は複数の実施形態に係る、バックエンド量子ランタイムを促進することができる例示の非限定的なワークフロー700の通信図を示している。換言すれば、図7は、本明細書において説明される様々なコンポーネントがどのように互いにインタラクトすることができるのかの非限定的な例を示している。
【0103】
様々な実施形態において、クライアントデバイス104は、行為702において、バックエンド量子ランタイムシステム102に、コンピュータプログラム202を電子的に送信することができる。
【0104】
様々な態様において、ランタイムマネージャコンポーネント112は、行為704において、コンピュータプログラム202をホストするためにランタイムコンテナ402を電子的にインスタンス化することができる。
【0105】
次に、様々な場合において、ランタイムコンテナ402及び量子コンピューティングデバイス114は、クライアントデバイス104からリモートでコンピュータプログラム202を完全に実行するように協力することができる。そのような協力は、様々な事例において、反復的インタラクションの形式を取ることができる。コンピュータプログラム202は、任意の適した正の整数nについて、n回反復するように構成されていると仮定する。そのような場合において、ランタイムコンテナ402及び量子コンピューティングデバイス114は、n回の反復的インタラクションに関与することができ、その第1回目は、行為706(1)として示され、その第n回目は、行為706(n)として示される。
【0106】
第1の反復的インタラクション中(例えば、コンピュータプログラム202の第1の反復中)、ランタイムコンテナ402は、行為706(1)(a)において、コンピュータプログラム202を古典的に実行することを開始することができる。様々な場合において、これは、コンピュータプログラム202に、1つ又は複数の量子計算404のうちの1つのパフォーマンス/実行を指定し、示し、及び/又は別様に呼び出すことを行わせることができる。ランタイムコンテナ402は、次に、行為706(1)(b)において、量子コンピューティングデバイス114に、そのような量子計算を実行するように電子的に命令することができる。様々な事例において、量子コンピューティングデバイス114は、行為706(1)(c)において、量子計算を促進及び/又は別様に実行することができ、それによって、1つ又は複数の量子結果502のうちの1つがもたらされる。様々な場合において、量子コンピューティングデバイス114は、次に、行為706(1)(d)において、そのような量子結果をランタイムコンテナ402に電子的に返送することができる。様々な態様において、ランタイムコンテナ402は、行為706(1)(e)において、コンピュータプログラム202の第1の反復を完了することができ、それによって、1つ又は複数のプログラム結果504のうちの1つがもたらされる。
【0107】
ランタイムコンテナ402及び/又は量子コンピューティングデバイス114は、次に、行為706(n)によって例示されるように、次の反復に移ることができる。当業者であれば、行為706(n)が行為706(1)に類似であることを認識するであろう。
【0108】
様々な態様において、コンピュータプログラム202のn回の反復全てが完了すると、ランタイムコンテナ402は、行為708において、コンピュータプログラム202によって生成された最終化された結果(及び/又は、幾つかの場合では、中間結果)をクライアントデバイス104に電子的に送信することができる。
【0109】
本明細書において説明されるように、ランタイムコンテナ402は、量子コンピューティングデバイス114と密にバンドル化することができる(例えば、同一の場所に位置することができ、専用通信接続を有することができる)。そのような密なバンドル化は、ランタイムコンテナ402及び量子コンピューティングデバイス114の間のn回の反復的インタラクションの各々に、低レイテンシにさせる(例えば、過度な時間を消費させない)ことができる。対照的に、クライアントデバイス104は、バックエンド量子ランタイムシステム102の任意のコンポーネントと密にバンドル化することができない。そのような密なバンドル化の欠落は、クライアントデバイス104及びバックエンド量子ランタイムシステム102の間の各インタラクションに、ランタイムコンテナ402及び量子コンピューティングデバイス114の間のいずれのインタラクションよりも多くの時間を消費させることができる。既存の技法が実装される場合、図7においてランタイムマネージャコンポーネント112が存在しないことになることに留意されたい。その代わりに、既存の技法が実装される場合、反復的インタラクションのn回全てが、クライアントデバイス104及び量子コンピューティングデバイス114の間で行われることになる。クライアントデバイス104が量子コンピューティングデバイス114と密にバンドル化されないので、そのようなn回の反復的インタラクションの各々は、高レイテンシであり得る。大きいnの場合、これは、既存の技法が本明細書に説明されるように、バックエンド量子ランタイムシステム102の様々な実施形態よりも著しく多くの時間を消費することを意味する。換言すれば、バックエンド量子ランタイムシステム102は、既存のリモート量子コンピューティングサービスに関連付けられたレイテンシを実質的に削減することができ、それゆえ、量子コンピューティングの分野における具体的でかつ有形の技術的改善を構成する。
【0110】
上記の論述の大半は、バックエンド量子ランタイムシステム102の様々な実施形態が、バックエンド(例えば、クラウド)環境においてコンピュータプログラム202を完全に実行するために、どのようにランタイムコンテナ402及び量子コンピューティングデバイス114を活用することができるかを説明する。しかしながら、様々な実施形態において、バックエンド量子ランタイムシステム102は、複数の量子コンピューティングデバイスを備えることができ、及び/又は、複数のクライアントデバイスによって提供される複数のコンピュータプログラムをホストするために複数のランタイムコンテナをスプールすることができる。換言すれば、図は単一のクライアントデバイス104のみを示しているが、これは、簡潔性のための非限定的な例である。様々な場合において、クライアントデバイス104の任意の適した数は、任意の適した数のコンピュータプログラムを、同時に及び/又は交互の方式で、受信機コンポーネント110に電子的に送信することができる。実際には、幾つかの場合では、クライアントデバイスは、1つよりも多くのコンピュータプログラムを受信機コンポーネント110に電子的に送信することができる。同様に、図は単一のランタイムコンテナ402のみを示しているが、これは、簡潔性のための非限定的な例である。様々な態様において、ランタイムマネージャコンポーネント112は、任意の適した数のランタイムコンテナを電子的にスプールすることができる。例えば、ランタイムマネージャコンポーネント112は、受信機コンポーネント110によって受信されたコンピュータプログラムの各々についてランタイムコンテナを電子的にインスタンス化することができる。その上、そのような任意の適した数のランタイムコンテナは、スプールされると、互いに並列に動作することができる。同様に、図は単一の量子コンピューティングデバイス114のみを示しているが、これは、簡潔性のための非限定的な例である。様々な事例において、バックエンド量子ランタイムシステム102は、任意の適した数の量子コンピューティングデバイスを備えることができる。実際には、様々な場合において、ランタイムマネージャコンポーネント112によってスプールされるランタイムコンテナは、全体を通して量子計算を最大化するように、そのような任意の適した数の量子コンピューティングデバイスにわたって負荷分散を集合的に適用することができる。
【0111】
上記の論述の大半は、様々な実施形態において、ランタイムマネージャコンポーネント112が、どのように、ランタイムコンテナ402をスプールすることによってコンピュータプログラム202をホストすることができるかを説明しており、ここで、ランタイムコンテナ402は、量子コンピューティングデバイス114と密にバンドル化することができ、ランタイムコンテナ402は、コンピュータプログラム202の任意の古典的部分を実行することができ、ランタイムコンテナ402は、量子コンピューティングデバイス114に、コンピュータプログラム202の任意の量子部分を実行するようにコマンドすることができる。しかしながら、これは単なる非限定的な例であることが認識されるべきである。様々な他の実施形態において、ランタイムマネージャコンポーネント112は、コンピュータプログラム202をホストするために任意の適したバックエンド古典的コンピューティングリソースをスプール及び/又はインスタンス化することができる。様々な場合において、バックエンド古典的コンピューティングリソースは、量子コンピューティングデバイス114と密にバンドル化することができ、バックエンド古典的コンピューティングリソースは、コンピュータプログラム202の任意の古典的部分を実行することができ、バックエンド古典的コンピューティングリソースは、量子コンピューティングデバイス114に、コンピュータプログラム202の任意の量子部分を実行するようにコマンドすることができる。様々な態様において、バックエンド古典的コンピューティングリソースは、ソフトウェアアプリケーションを実行することが可能である任意の適したソフトウェア設計及び/又はアーキテクチャを呈することができる。例えば、そのようなバックエンド古典的コンピューティングリソースの様々な非限定的な例は、ベアメタルコンピューティングマシン上に展開されるコンテナ(例えば、ランタイムコンテナ402)、仮想マシン、及び/又はソフトウェアを含むことができる。換言すれば、ランタイムマネージャコンポーネント112は、様々な態様において、本明細書において説明されるように、コンピュータプログラム202をホスト及び/又は別様に実行することが可能である任意の適した数のコンピュータソフトウェアをスプール及び/又はインスタンス化することができる。
【0112】
様々な実施形態において、クライアントデバイス104が、ランタイムコンテナ402がコンピュータプログラム202をホストしている間にコンピュータプログラム202と通信し、これとインタラクトし、及び/又は別様にこれをモニタリングすることを可能にすることが望ましくあり得る。同様に、幾つかの場合では、クライアントデバイス104が、ランタイムコンテナ402がコンピュータプログラム202をホストしている間に量子コンピューティングデバイス114と通信し、これとインタラクトし、及び/又は別様にこれをモニタリングすることを可能にすることが望ましくあり得る。それに応じて、様々な態様において、ランタイムマネージャコンポーネント112は、クライアントデバイス104、コンピュータプログラム202、及び/又は量子コンピューティングデバイス114の間の通信/インタラクションを媒介することができる。例えば、様々な場合において、クライアントデバイス104は、リアルタイムにおいて、コンピュータプログラム202に関する及び/又は量子コンピューティングデバイス114に関するコマンド/命令をランタイムマネージャコンポーネント112に送信することができ、ランタイムマネージャコンポーネント112は、そのようなコマンド/命令を実装し、及び/又はこれに従うことができる。そのようなコマンド/命令の非限定的な例は、コンピュータプログラム202の実行を開始すること、コンピュータプログラム202の実行を停止すること、コンピュータプログラム202を編集すること、ランタイムコンテナ402の所望の特性及び/又は所望の設定を指定すること、量子コンピューティングデバイス114の所望の特性及び/又は所望の設定を指定すること、及び/又は記録コンポーネント116からフェッチングされることになる所望の結果を指定することを含むことができる。様々な場合において、そのようなコマンド/命令の他の非限定的な例は、ファイアウォール及び/又はレート制限を含むことができる。複数のクライアントデバイス、複数のコンピュータプログラム、及び/又は複数の量子コンピューティングデバイスが実装される場合において、そのようなコマンド/命令は:クライアントデバイス間の隔離を施行するように、クライアントデバイス及び量子コンピューティングデバイスの間の信頼されたドメインを施行するように、量子コンピューティングデバイスへの及び/又はインスタンス化されたバックエンド古典的コンピューティングリソースへの公正なアクセスを提供するように、及び/又はクライアントワークロードに基づいて異なるクライアントデバイスに異なるサービスレベル(例えば、異なる量子リソース及び/又は古典的リソース)を提供するように、クライアントデバイス、コンピュータプログラム、及び/又は量子コンピューティングデバイスの中の通信設定を変更することを更に含むことができる。
【0113】
図8は、本明細書において説明される1つ又は複数の実施形態に係る、バックエンド量子ランタイムを促進することができる例示の非限定的なコンピュータ実装方法800のフロー図を示している。様々な態様において、コンピュータ実装方法800は、バックエンド量子ランタイムシステム102によって促進することができる。
【0114】
様々な実施形態において、行為802は、プロセッサに動作可能に結合されたバックエンドデバイスによって(例えば、受信機コンポーネント110を介して)、クライアントデバイス(例えば、クライアントデバイス104)によって提供されるコンピュータプログラム(例えば、コンピュータプログラム202)にアクセスすることを含むことができる。様々な場合において、コンピュータプログラムは、量子計算(例えば、1つ又は複数の量子計算404のうちの1つ)を示すように構成することができる。
【0115】
様々な事例において、行為804は、バックエンドデバイスによって(例えば、ランタイムマネージャコンポーネント112を介して)、バックエンド古典的コンピューティングリソース(例えば、ランタイムコンテナ402)をインスタンス化することによってコンピュータプログラムをホストすることを含むことができる。様々な場合において、バックエンド古典的コンピューティングリソースは、コンピュータプログラムの古典的実行及びコンピュータプログラムによって示される量子計算の量子実行の両方を編成することができる。
【0116】
図8において明示的には示されていないが、コンピュータ実装方法800は:バックエンドデバイスによって、バックエンド古典的コンピューティングリソースからの命令に応答して、(例えば、量子コンピューティングデバイス114を介して)少なくとも1つのバックエンド量子コンピューティングデバイス上で量子計算を実行することを更に備えることができる。
【0117】
図8において明示的には示されていないが、バックエンド古典的コンピューティングリソースによる実行中、コンピュータプログラムは、少なくとも1つのバックエンド量子コンピューティングデバイスによって生成される量子結果(例えば、502)を利用することができ、それによって、プログラム結果(例えば、504)がもたらされる。
【0118】
図8において明示的には示されていないが、コンピュータ実装方法800は:バックエンドデバイスによって(例えば、記録コンポーネント116を介して)、量子結果又はプログラム結果を記録することを更に備えることができる。
【0119】
図8において明示的には示されていないが、バックエンド古典的コンピューティングリソース及び少なくとも1つのバックエンド量子コンピューティングデバイスは、同一の場所に位置することができ、及び/又は専用通信チャネルを介して結合することができる。
【0120】
図8において明示的には示されていないが、バックエンド古典的コンピューティングリソースは、ランタイムコンテナとすることができる。
【0121】
図8において明示的には示されていないが、バックエンド古典的コンピューティングリソースは、クライアントデバイス及びコンピュータプログラムの間の通信を媒介することができる。
【0122】
図8において明示的には示されていないが、コンピュータ実装方法800は:バックエンドデバイスによって(例えば、受信機コンポーネント110を介して)、別のクライアントデバイスによって提供される別のコンピュータプログラムにアクセスすること、ここで、当該別のコンピュータプログラムは、別の量子計算を示すように構成されている;及びバックエンドデバイスによって(例えば、ランタイムマネージャコンポーネント112を介して)、別のバックエンド古典的コンピューティングリソースをインスタンス化することによって当該別のコンピュータプログラムをホストすることを更に備えることができ、ここで、当該別のバックエンド古典的コンピューティングリソースは、当該別のコンピュータプログラム古典的実行及び当該別のコンピュータプログラムによって示される当該別の量子計算の量子実行の両方を編成し、当該別のバックエンド古典的コンピューティングリソースは、バックエンド古典的コンピューティングリソースと並列に動作する。
【0123】
複雑な量子アプリケーションは、量子処理リソースを、古典的処理リソースと組み合わせることを要求することができる。実際には、量子コンピューティングの分野では、古典的最適化ループ(例えば、VQE及び/又はQAOA)内の量子計算を呼び出すアルゴリズムにおける台頭が見られている。そのようなアルゴリズムが効率的に実行されるために、量子処理リソース及び古典的処理リソースの間のインタラクションは、相対的に低レイテンシであるべきである。既存のリモート量子コンピューティングサービス(例えば、サービスとして量子コンピューティングを提供するクラウドサーバ)は、2部構成のサービスアーキテクチャに起因して、高められたレイテンシを経験する。そのような既存のシステムでは、ユーザは、量子計算を呼び出すコンピュータプログラムを作成及び実行するために自身の古典的プロセッサ(例えば、Qiskitを実装するラップトップ)を利用する。コンピュータプログラムが量子計算を呼び出すと(例えば、コンピュータプログラムが特定の量子状態に適用されることになる特定の量子回路を指定すると)、ユーザは、リモート量子コンピューティングサービスに、指定された量子計算を実行する命令を送信する。ユーザは、次に、リモート量子コンピューティングサービスから量子結果を受信することを待機しなければならない。多くの反復を伴うコンピュータプログラムの場合、そのような待機は、迅速に蓄積し得、これは望ましくないものであり得る。
【0124】
本発明の様々な実施形態は、この技術的問題に対処することができる。本発明者らは、既存の技法の高レイテンシが、ユーザ側での古典的コンピューティングリソース及びサービス側での量子コンピューティングリソースの間の厳格な2部構成によって引き起こされることを認識した。それに応じて、本発明者らは、古典的コンピューティングリソース及び量子コンピューティングリソースの両方がサービス側で提供される本発明の様々な実施形態を考案した。実際には、様々な実施形態において、リモート量子コンピューティングサービスは、量子計算を実行するリクエストを単に受信せず、その代わりに、量子計算のためのリクエストを生成するように構成されているコンピュータプログラム全体を受信及びホストする。コンピュータプログラムは、様々な実施形態に従って、ホストされ、それゆえサービス側で古典的に実行され得るので、そのような古典的実行は、サービス側の量子コンピューティングリソースにより密に結合及び/又はバンドル化することができる。それゆえ、量子計算のパフォーマンス/実行を呼び出す反復的なコンピュータプログラムは、本発明の様々な実施形態が実装される場合、より迅速に実行することができる。換言すれば、本発明の様々な実施形態は既存のリモート量子コンピューティングサービスに内在的であるボトルネックをなくすので、レイテンシにおける著しい削減を達成することができる。
【0125】
本明細書において説明される様々な実施形態に追加的な文脈を提供するために、図9及び以下の論述は、本明細書において説明される実施形態の様々な実施形態を実装することができる適したコンピューティング環境900の簡潔で一般的な説明を提供することが意図されている。実施形態は、1つ又は複数のコンピュータ上で実行され得るコンピュータ実行可能命令の一般的な文脈において上記で説明されてきたが、当業者であれば、実施形態が、他のプログラムモジュール及び/又はハードウェア及びソフトウェアの組み合わせと組み合わせて実装することもできることを認識するであろう。
【0126】
概して、プログラムモジュールは、特定のタスクを実行するか又は特定の抽象データタイプを実装するルーチン、プログラム、コンポーネント、データ構造等を含む。その上、当業者であれば、本発明の方法は、これらの各々が1つ又は複数の関連付けられたデバイスに動作可能に結合され得るシングルプロセッサ又はマルチプロセッサコンピュータシステム、ミニコンピュータ、メインフレームコンピュータ、モノのインターネット(IoT)デバイス、分散コンピューティングシステム、並びにパーソナルコンピュータ、ハンドヘルドコンピューティングデバイス、マイクロプロセッサベース又はプログラマブルコンシューマエレクトロニクス等を含む他のコンピュータシステム構成を用いて実施され得ることを認識するだろう。
【0127】
本明細書における実施形態の示された実施形態は、特定のタスクが通信ネットワークを通してリンクされたリモート処理デバイスによって実行される分散コンピューティング環境においても実施され得る。分散コンピューティング環境では、プログラムモジュールは、ローカル及びリモートのメモリ記憶デバイスの両方に配置することができる。
【0128】
コンピューティングデバイスは、典型的には、多様な媒体を含み、これは、コンピュータ可読記憶媒体、機械可読記憶媒体、及び/又は通信媒体を含むことができ、その2つの用語は、次のように互いに異なるように本明細書において使用される。コンピュータ可読記憶媒体又は機械可読記憶媒体は、コンピュータによってアクセスされ得、揮発性及び不揮発性の両方の媒体、取り外し可能及び取り外し不能な媒体を含む任意の利用可能な記憶媒体とすることができる。限定ではなく例として、コンピュータ可読記憶媒体又は機械可読記憶媒体は、コンピュータ可読又は機械可読命令、プログラムモジュール、構造化データ又は非構造化データ等の情報の記憶のための任意の方法又は技術に関連して実装することができる。
【0129】
コンピュータ可読記憶媒体は、ランダムアクセスメモリ(RAM)、リードオンリメモリ(ROM)、電気的消去可能プログラマブルリードオンリメモリ(EEPROM)、フラッシュメモリ又は他のメモリ技術、コンパクトディスクリードオンリメモリ(CD-ROM)、デジタル多用途ディスク(DVD)、ブルーレイディスク(BD)又は他の光ディスクストレージ、磁気カセット、磁気テープ、磁気ディスクストレージ又は他の磁気記憶デバイス、ソリッドステートドライブ又は他のソリッドステート記憶デバイス、又は所望の情報を記憶するために使用され得る他の有形及び/又は非一時的媒体を含むことができるが、これらに限定されない。これに関して、ストレージ、メモリ又はコンピュータ可読媒体に適用されるような本明細書における「有形」又は「非一時的」という用語は、修飾子として伝播する一時的信号それ自体のみを排除するものとして理解されるべきであり、単に伝播する一時的信号それ自体ではない全ての標準的なストレージ、メモリ又はコンピュータ可読媒体に対する権利を放棄しない。
【0130】
コンピュータ可読記憶媒体は、媒体によって記憶された情報に関する多様な動作のために、例えば、アクセスリクエスト、クエリ又は他のデータ取り出しプロトコルを介して、1つ又は複数のローカル又はリモートコンピューティングデバイスによってアクセスされ得る。
【0131】
通信媒体は、典型的には、コンピュータ可読命令、データ構造、プログラムモジュール又は他の構造化又は非構造化データを、被変調データ信号、例えば、搬送波又は他の輸送機構等のデータ信号において具現化し、任意の情報送達又は輸送媒体を含む。「被変調データ信号」又は信号という用語は、その特性セットのうちの1つ又は複数を有する信号、又は1つ又は複数の信号において情報を符号化するように変更された信号を指す。限定ではなく例として、通信媒体は、有線ネットワーク又は直接有線接続等の有線媒体、及び音響、RF、赤外線及び他の無線媒体等の無線媒体を含む。
【0132】
再び図9を参照すると、本明細書において説明される態様の様々な実施形態を実装する例示の環境900は、コンピュータ902を備え、当該コンピュータ902は、処理ユニット904、システムメモリ906及びシステムバス908を有する。システムバス908は、限定されないが、システムメモリ906を含むシステムコンポーネントを処理ユニット904に結合する。処理ユニット904は、様々な市販のプロセッサのいずれかとすることができる。デュアルプロセッサ及び他のマルチプロセッサアーキテクチャも、処理ユニット904として利用することができる。
【0133】
システムバス908は、多様な市販のバスアーキテクチャのいずれかを使用する(メモリコントローラを有するか又は有しない)メモリバス、ペリフェラルバス、及びローカルバスに更に相互接続し得る幾つかのタイプのバス構造のうちのいずれかとすることができる。システムメモリ906は、ROM910及びRAM912を含む。基本入力/出力システム(BIOS)は、BIOSが、起動中等にコンピュータ902内の要素の間で情報を転送することを助ける基本ルーチンを含む、ROM、消去可能プログラマブルリードオンリメモリ(EPROM)、EEPROM等の不揮発性メモリに記憶することができる。RAM912はまた、データをキャッシュするためのスタティックRAM等の高速RAMを含むことができる。
【0134】
コンピュータ902は、内部ハードディスクドライブ(HDD)914(例えば、EIDE、SATA)、1つ又は複数の外部記憶デバイス916(例えば、磁気フロッピディスクドライブ(FDD)916、メモリスティック又はフラッシュドライブリーダ、メモリカードリーダ等)及びドライブ920、例えば、ソリッドステートドライブ、光ディスクドライブ等を更に含み、これは、CD-ROMディスク、DVD、BD等のようなディスク922から読み出し又は書き込みを行うことができる。代替的には、ソリッドステートドライブが関与する場合、別個のものでない限り、ディスク922は含まれない。内部HDD914がコンピュータ902内に位置するように示されているが、内部HDD914は、適したシャーシ(図示せず)における外部使用のために構成することもできる。加えて、環境900には示されていないが、ソリッドステートドライブ(SSD)は、HDD914に加えて、又はその代わりに使用することができる。HDD914、外部記憶デバイス916及びドライブ920は、それぞれHDDインターフェース924、外部記憶インターフェース926及びドライブインターフェース928によって、システムバス908に接続することができる。外部ドライブ実装のためのインターフェース924は、ユニバーサルシリアルバス(USB)及び米国電気電子学会(IEEE)1394インターフェース技術のうちの少なくとも1つ又は両方を含むことができる。他の外部ドライブ接続技術は、本明細書において説明される実施形態の企図の中に含まれる。
【0135】
ドライブ及びそれらの関連付けられたコンピュータ可読記憶媒体は、データ、データ構造、コンピュータ実行可能命令等の不揮発性ストレージを提供する。コンピュータ902のために、ドライブ及び記憶媒体は、適したデジタルフォーマットにおける任意のデータの記憶に適応する。上記のコンピュータ可読記憶媒体の説明は、それぞれのタイプの記憶デバイスを参照するが、現在既存のものでも又は将来開発されるものでもコンピュータによって可読である他のタイプの記憶媒体も例示の動作環境において使用し得ること、及びさらに任意のそのような記憶媒体が本明細書において説明される方法を実行するコンピュータ実行可能命令を含み得ることが当業者によって認識されるべきである。
【0136】
オペレーティングシステム930、1つ又は複数のアプリケーションプログラム932、他のプログラムモジュール934及びプログラムデータ936を含む幾つかのプログラムモジュールを、ドライブ及びRAM912に記憶することができる。オペレーティングシステム、アプリケーション、モジュール、及び/又はデータの全て又は一部はまた、RAM912にキャッシュされ得る。本明細書において説明されるシステム及び方法は、様々な市販のオペレーティングシステム又はオペレーティングシステムの組み合わせを利用して実装することができる。
【0137】
コンピュータ902は、任意選択で、エミュレーション技術を含むことができる。例えば、ハイパーバイザ(図示せず)又は他の仲介するものが、オペレーティングシステム930のためのハードウェア環境をエミュレートすることができ、エミュレートされたハードウェアは、図9において示されたハードウェアとは任意選択で異なり得る。そのような一実施形態では、オペレーティングシステム930は、コンピュータ902においてホストされた複数の仮想マシン(VM)のうちの1つのVMを含むことができる。さらに、オペレーティングシステム930は、アプリケーション932のための、Java(登録商標)ランタイム環境又は.NETフレームワーク等のランタイム環境を提供することができる。ランタイム環境は、アプリケーション932が、ランタイム環境を含む任意のオペレーティングシステム上で実行されることを可能にする一貫性のある実行環境である。同様に、オペレーティングシステム930は、コンテナをサポートすることができ、アプリケーション932は、例えば、コード、ランタイム、システムツール、システムライブラリ及びアプリケーションのための設定を含むソフトウェアの軽量でスタンドアロンの実行可能パッケージであるコンテナの形態とすることができる。
【0138】
さらに、コンピュータ902は、信頼された処理モジュール(TPM)等のセキュリティモジュールを用いて有効化することができる。例えばTPMを用いると、ブートコンポーネントは、次のブートコンポーネントをロードする前に、時間的に次に来るブートコンポーネントをハッシュし、保護された値への結果の一致のために待機する。このプロセスは、コンピュータ902のコード実行スタックにおける任意の層において行うことができ、例えば、アプリケーション実行レベル又はオペレーティングシステム(「OS」)カーネルレベルにおいて適用され、それによって、コード実行の任意のレベルにおけるセキュリティを可能にする。
【0139】
ユーザは、1つ又は複数の有線/無線入力デバイス、例えば、キーボード938、タッチスクリーン940、及びマウス942等のポインティングデバイスを通してコンピュータ902にコマンド及び情報を入力することができる。他の入力デバイス(図示せず)は、マイクロフォン、赤外線(IR)リモートコントロール、無線周波数(RF)リモートコントロール、又は他のリモートコントロール、ジョイスティック、仮想現実コントローラ及び/又は仮想現実ヘッドセット、ゲームパッド、スタイラスペン、画像入力デバイス、例えば、カメラ、ジェスチャセンサ入力デバイス、ビジョンムーブメントセンサ入力デバイス、表情又は顔検出デバイス、生体認証入力デバイス、例えば、指紋又は虹彩スキャナ等を含むことができる。これらの及び他の入力デバイスは、多くの場合、システムバス908に結合することができる入力デバイスインターフェース944を通して処理ユニット904に接続されるが、パラレルポート、IEEE1394シリアルポート、ゲームポート、USBポート、IRインターフェース、BLUETOOTH(登録商標)インターフェース等のような他のインターフェースによって接続することができる。
【0140】
モニタ946又は他のタイプのディスプレイデバイスも、ビデオアダプタ948等のインターフェースを介してシステムバス908に接続することができる。モニタ946に加えて、コンピュータは、典型的には、スピーカ、プリンタ等のような他のペリフェラル出力デバイス(図示せず)を含む。
【0141】
コンピュータ902は、リモートコンピュータ950等の1つ又は複数のリモートコンピュータに対する有線及び/又は無線通信を介した論理接続を使用して、ネットワーク化された環境において動作することができる。リモートコンピュータ950は、ワークステーション、サーバコンピュータ、ルータ、パーソナルコンピュータ、ポータブルコンピュータ、マイクロプロセッサベースエンタテインメント機器、ピアデバイス又は他の一般的なネットワークノードとすることができ、典型的には、簡潔性のためにメモリ/記憶デバイス952のみが示されているが、コンピュータ902に関して説明された多くの又は全ての要素を含む。
示された論理接続は、ローカルエリアネットワーク(LAN)954及び/又はより大きいネットワーク、例えば、ワイドエリアネットワーク(WAN)956への有線/無線接続性を含む。そのようなLAN及びWANネットワーキング環境は、オフィス及び企業でよく見られ、イントラネット等の企業規模のコンピュータネットワークを容易にし、これらの全ては、グローバル通信ネットワーク、例えば、インターネットに接続し得る。
【0142】
LANネットワーキング環境において使用される場合、コンピュータ902は、有線及び/又は無線通信ネットワークインターフェース又はアダプタ958を通してローカルネットワーク954に接続することができる。アダプタ958は、無線モードにおいてアダプタ958と通信するためにそこに配置された無線アクセスポイント(AP)も含むことができるLAN954への有線又は無線通信を容易にすることができる。
【0143】
WANネットワーキング環境において使用される場合、コンピュータ902は、モデム960を含み得るか、又はインターネットによって等のWAN956にわたる通信を確立するための他の手段を介してWAN956上での通信サーバに接続され得る。内部又は外部であり得、かつ有線又は無線デバイスであり得るモデム960は、入力デバイスインターフェース944を介してシステムバス908に接続することができる。ネットワーク化された環境では、コンピュータ902に対して示されたプログラムモジュール又はその一部は、リモートメモリ/記憶デバイス952に記憶することができる。示されたネットワーク接続は例であり、コンピュータの間の通信リンクを確立する他の手段が使用され得ることが理解されよう。
【0144】
LAN又はWANネットワーキング環境のいずれかにおいて使用される場合、コンピュータ902は、上記で説明されたような外部記憶デバイス916に加えて、又はその代わりに、限定されないが、情報の記憶又は処理の1つ又は複数の態様を提供するネットワーク仮想マシン等のむクラウド記憶システム又は他のネットワークベース記憶システムにアクセスし得る。概して、コンピュータ902及びクラウド記憶システムの間の接続は、例えばそれぞれアダプタ958又はモデム960によって、LAN954又はWAN956にわたって確立することができる。コンピュータ902を関連付けられたクラウド記憶システムに接続すると、外部記憶インターフェース926は、アダプタ958及び/又はモデム960の補助を用いて、他のタイプの外部ストレージを管理するように、クラウド記憶システムによって提供されたストレージを管理することができる。例えば、外部記憶インターフェース926は、あたかもそれらのソースがコンピュータ902に物理的に接続しているかのように、クラウド記憶ソースへのアクセスを提供するように構成することができる。
【0145】
コンピュータ902は、無線通信において動作可能に配置された任意の無線デバイス又はエンティティ、例えば、プリンタ、スキャナ、デスクトップ及び/又はポータブルコンピュータ、携帯情報端末、通信衛星、無線で検出可能なタグに関連付けられた任意の機器又はロケーション(例えば、キオスク、ニューススタンド、店舗の棚等)、及び電話と通信するように動作可能であり得る。これは、ワイヤレスフィデリティ(Wi-Fi(登録商標))及びBLUETOOTH(登録商標)無線技術を含むことができる。それゆえ、通信は、既存のネットワークと同様に事前定義された構造、又は単に少なくとも2つのデバイス間のアドホック通信とすることができる。
【0146】
ここで図10を参照すると、例示的なクラウドコンピューティング環境1000が示されている。示されているように、クラウドコンピューティング環境1000は、例えば、携帯情報端末(PDA(登録商標))又は携帯電話1004、デスクトップコンピュータ1006、ラップトップコンピュータ1008、及び/又は自動車コンピュータシステム1010等の、クラウド消費者によって使用されるローカルコンピューティングデバイスが通信し得る、1つ又は複数のクラウドコンピューティングノード1002を備える。ノード1002は、互いに通信してよい。それらは、本明細書の上記で説明されたようなプライベート、コミュニティ、パブリック、又はハイブリッドクラウド、又はこれらの組み合わせ等の1つ又は複数のネットワーク内で物理的に又は仮想的にグループ化されてよい(図示せず)。これにより、クラウドコンピューティング環境1000は、インフラストラクチャ、プラットフォーム及び/又はソフトウェアを、クラウド消費者がそのためにローカルコンピューティングデバイス上にリソースを維持する必要がないサービスとして提供することが可能になる。図10において示されているコンピューティングデバイス1004~1010のタイプは、単に例示を意図し、コンピューティングノード1002及びクラウドコンピューティング環境1000は、任意のタイプのネットワーク及び/又はネットワークアドレス指定可能接続を介して(例えば、ウェブブラウザを使用して)、任意のタイプのコンピュータ化デバイスと通信することができることが理解される。
【0147】
ここで図11を参照すると、クラウドコンピューティング環境1000(図10)によって提供される機能抽象化層のセットが示されている。本明細書において説明される他の実施形態において利用される同様の要素の繰り返しの説明は、簡潔性のために省略される。図11において示されているコンポーネント、層、及び機能は、単に例示を意図するものであり、本発明の実施形態がそれらに限定されないことが事前に理解されるべきである。示されているように、以下の層及び対応する機能が提供される。
【0148】
ハードウェア及びソフトウェア層1102は、ハードウェアコンポーネント及びソフトウェアコンポーネントを備える。ハードウェアコンポーネントの例としては:メインフレーム1104;RISC(縮小命令セットコンピュータ)アーキテクチャベースサーバ1106;サーバ1108;ブレードサーバ1110;記憶デバイス1112;及びネットワーク及びネットワーキングコンポーネント1114が挙げられる。幾つかの実施形態では、ソフトウェアコンポーネントは、ネットワークアプリケーションサーバソフトウェア1116及びデータベースソフトウェア1118を含む。
【0149】
仮想化層1120は、仮想エンティティの次の例:仮想サーバ1122;仮想ストレージ1124;仮想プライベートネットワークを含む仮想ネットワーク1126;仮想アプリケーション及びオペレーティングシステム1128;及び仮想クライアント1130が提供され得る抽象化層を提供する。
【0150】
1つの例では、管理層1132は、以下で説明される機能を提供してよい。リソースプロビジョニング1134は、クラウドコンピューティング環境内でタスクを実行するために利用されるコンピューティングリソース及び他のリソースの動的な調達を提供する。計測及び価格設定1136は、リソースがクラウドコンピューティング環境内で利用されるときのコスト追跡、及び、これらのリソースの消費に対する課金又は請求を提供する。1つの例では、これらのリソースは、アプリケーションソフトウェアライセンスを含んでよい。セキュリティは、クラウド消費者及びタスクのアイデンティティ検証、並びに、データ及び他のリソースの保護を提供する。ユーザポータル1138は、消費者及びシステムアドミニストレータに対してクラウドコンピューティング環境へのアクセスを提供する。サービス水準管理1140は、要求されるサービス水準が満たされるように、クラウドコンピューティングリソース割り当て及び管理を提供する。サービス水準合意(SLA)計画及び履行1142は、将来の要件がSLAに従って予期されるクラウドコンピューティングリソースの事前の取り決め及び調達を提供する。
【0151】
ワークロード層1144は、クラウドコンピューティング環境が利用され得る機能の例を提供する。この層から提供され得るワークロード及び機能の例としては:マッピング及びナビゲーション1146;ソフトウェア開発及びライフサイクル管理1148;仮想クラスルーム教育配信1150;データ解析処理1152;トランザクション処理1154;及び差分プライベート連合学習処理1156が挙げられる。本発明の様々な実施形態は、本明細書において説明される様々な実施形態に従って1つ又は複数の差分プライベート連合学習プロセスを実行するために図10及び図11を参照して説明されるクラウドコンピューティング環境を利用することができる。
【0152】
本発明は、統合のあらゆる可能な技術詳細レベルにおけるシステム、方法、装置及び/又はコンピュータプログラム製品であってよい。コンピュータプログラム製品は、プロセッサに本発明の態様を実行させるためのコンピュータ可読プログラム命令を有するコンピュータ可読記憶媒体(又は複数の媒体)を含むことができる。コンピュータ可読記憶媒体は、命令実行デバイスによって使用されるための命令を保持及び記憶することができる有形デバイスとすることができる。コンピュータ可読記憶媒体は、例えば、電子記憶デバイス、磁気記憶デバイス、光学記憶デバイス、電磁記憶デバイス、半導体記憶デバイス、又は前述したものの任意の適した組み合わせとすることができるが、これらに限定されない。コンピュータ可読記憶媒体のより具体的な例の非網羅的なリストは、次のもの:ポータブルコンピュータディスケット、ハードディスク、ランダムアクセスメモリ(RAM)、リードオンリメモリ(ROM)、消去可能プログラマブルリードオンリメモリ(EPROM又はフラッシュメモリ)、スタティックランダムアクセスメモリ(SRAM)、ポータブルコンパクトディスクリードオンリメモリ(CD-ROM)、デジタル多用途ディスク(DVD)、メモリスティック、フロッピディスク、機械的にエンコードされたデバイス、例えば、パンチカード又は命令を記録した溝内の隆起構造、及び前述したものの任意の適した組み合わせも含むことができる。コンピュータ可読記憶媒体は、本明細書において使用される場合、電波若しくは他の自由に伝播する電磁波、導波路又は他の伝送媒体を通して伝播する電磁波(例えば、光ファイバケーブルを通過する光パルス)、又はワイヤを通して伝送される電気信号等の一時的信号それ自体とは解釈されるべきではない。
【0153】
本明細書において説明されるコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体から、それぞれのコンピューティング/処理デバイスに、又は、ネットワーク、例えば、インターネット、ローカルエリアネットワーク、ワイドエリアネットワーク及び/又は無線ネットワークを介して、外部コンピュータ又は外部記憶デバイスに、ダウンロードすることができる。ネットワークは、銅伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイコンピュータ及び/又はエッジサーバを含むことができる。各コンピューティング/処理デバイス内のネットワークアダプタカード又はネットワークインターフェースは、ネットワークからコンピュータ可読プログラム命令を受信し、当該コンピュータ可読プログラム命令を、それぞれのコンピューティング/処理デバイス内のコンピュータ可読記憶媒体に記憶するために転送する。本発明の動作を実行するコンピュータ可読プログラム命令は、アセンブラ命令、命令セットアーキテクチャ(ISA)命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、集積回路のための構成データ、又は1つ又は複数のプログラミング言語の任意の組み合わせで記述されたソースコード又はオブジェクトコードのいずれかであってよく、1つ又は複数のプログラミング言語は、Smalltalk(登録商標)、C++等のようなオブジェクト指向プログラミング言語、及び「C」プログラミング言語又は同様のプログラミング言語等の手続き型プログラミング言語を含む。コンピュータ可読プログラム命令は、ユーザのコンピュータ上で完全に実行されてもよいし、スタンドアロンソフトウェアパッケージとしてユーザのコンピュータ上で部分的に実行されてもよいし、部分的にユーザのコンピュータ上で、かつ、部分的にリモートコンピュータ上で実行されてもよいし、又はリモートコンピュータ又はサーバ上で完全に実行されてもよい。後者のシナリオでは、リモートコンピュータは、ローカルエリアネットワーク(LAN)又はワイドエリアネットワーク(WAN)を含む任意のタイプのネットワークを介してユーザのコンピュータに接続することもできるし、又はその接続は、(例えば、インターネットサービスプロバイダを使用してインターネットを介して)外部コンピュータに対して行うこともできる。幾つかの実施形態では、例えば、プログラマブルロジック回路、フィールドプログラマブルゲートアレイ(FPGA)、又はプログラマブルロジックアレイ(PLA)を含む電子回路は、本発明の態様を実行するために、コンピュータ可読プログラム命令の状態情報を利用することによってコンピュータ可読プログラム命令を実行して、電子回路をパーソナライズすることができる。
【0154】
本発明の態様は、本明細書において、本発明の実施形態に係る方法、装置(システム)、及びコンピュータプログラム製品のフローチャート図及び/又はブロック図を参照して説明されている。フローチャート図及び/又はブロック図の各ブロック、及びフローチャート図及び/又はブロック図におけるブロックの組み合わせは、コンピュータ可読プログラム命令によって実装することができることが理解されよう。これらのコンピュータ可読プログラム命令を汎用コンピュータ、専用コンピュータ、又は他のプログラマブルデータ処理装置のプロセッサに提供して機械を生成することができ、それにより、コンピュータ又は他のプログラマブルデータ処理装置のプロセッサを介して実行される命令が、フローチャート及び/又はブロック図の単数又は複数のブロックで指定された機能/行為を実装する手段を作成するようになる。また、これらのコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体に記憶することができ、当該命令は、コンピュータ、プログラマブルデータ処理装置、及び/又は他のデバイスに対し、特定の方法で機能するよう命令することができ、それにより、命令を記憶したコンピュータ可読記憶媒体は、フローチャート及び/又はブロック図の単数又は複数のブロックで指定された機能/行為の態様を実装する命令を含む製品を含むようになる。また、コンピュータ可読プログラム命令を、コンピュータ、他のプログラマブルデータ処理装置、又は他のデバイスにロードして、一連の動作行為をコンピュータ、他のプログラマブル装置又は他のデバイス上で実行させ、コンピュータ実装プロセスを生成することができ、それにより、コンピュータ、他のプログラマブル装置、又は他のデバイス上で実行される命令は、フローチャート及び/又はブロック図の単数又は複数のブロックで指定された機能/行為を実装するようになる。
【0155】
図におけるフローチャート及びブロック図は、本発明の様々な実施形態に係るシステム、方法、及びコンピュータプログラム製品の可能な実装のアーキテクチャ、機能、及び動作を示す。これに関して、フローチャート又はブロック図における各ブロックは、指定される論理機能を実装する1つ又は複数の実行可能命令を含む命令のモジュール、セグメント、又は部分を表し得る。幾つかの代替的な実装では、ブロックに記載される機能が、図に記載される順序とは異なる順序で行われ得る。例えば、連続して示されている2つのブロックは、実際には、実質的に同時に実行することもできるし、又はブロックは、関与する機能に依存して逆の順序で実行される場合もあり得る。ブロック図及び/又はフローチャート図の各ブロック、及びブロック図及び/又はフローチャート図におけるブロックの組み合わせは、指定された機能又は行為を実行するか、又は専用ハードウェア及びコンピュータ命令の組み合わせを実行する専用ハードウェアベースシステムによって実装することができることにも留意されたい。
【0156】
主題が1つのコンピュータ及び/又は複数のコンピュータ上で実行されるコンピュータプログラム製品のコンピュータ実行可能命令の一般的な文脈において上記で説明されてきたが、当業者であれば、本開示が他のプログラムモジュールとの組み合わせであり得るか又は当該組み合わせで実装され得ることも認識するであろう。
概して、プログラムモジュールは、特定のタスクを実行し、及び/又は特定の抽象データタイプを実装するルーチン、プログラム、コンポーネント、データ構造等を含む。その上、当業者であれば、本発明のコンピュータ実装方法は、シングルプロセッサ又はマルチプロセッサコンピュータシステム、ミニコンピューティングデバイス、メインフレームコンピュータ、及びコンピュータ、ハンドヘルドコンピューティングデバイス(例えばPDA(登録商標)、電話)、マイクロプロセッサベース又はプログラマブルコンシューマ又は産業用電子機器等を含む他のコンピュータシステム構成で実施され得ることを認識するであろう。示されている態様は、タスクが通信ネットワークを通してリンクされたリモート処理デバイスによって実行される分散コンピューティング環境においても実施され得る。しかしながら、本開示の全てではなく幾つかの態様は、スタンドアロンのコンピュータで実施され得る。分散コンピューティング環境において、プログラムモジュールは、ローカル及びリモート両方のメモリ記憶デバイスに位置し得る。
【0157】
本願において使用される場合、「コンポーネント」、「システム」、「プラットフォーム」、「インターフェース」等の用語は、コンピュータ関連エンティティ、又は1つ又は複数の特定の機能を有する動作機械に関連するエンティティを指すことができ、及び/又は含むことができる。本明細書において開示されるエンティティは、ハードウェア、ハードウェア及びソフトウェアの組み合わせ、ソフトウェア、又は実行中のソフトウェアのいずれかであり得る。例えば、コンポーネントは、プロセッサ上で実行されるプロセス、プロセッサ、オブジェクト、実行可能ファイル、実行スレッド、プログラム、及び/又はコンピュータであり得るが、これらに限定されない。例示として、サーバ上で実行されているアプリケーション及びサーバの両方をコンポーネントとすることができる。1つ又は複数のコンポーネントは、プロセス及び/又は実行スレッド内に存在することができ、コンポーネントは、1つのコンピュータ上にローカライズし、及び/又は2つ又はそれよりも多くのコンピュータ間に分散することができる。別の例では、それぞれのコンポーネントは、その上に記憶された様々なデータ構造を有する様々なコンピュータ可読媒体から実行することができる。コンポーネントは、1つ又は複数のデータパケット(例えば、ローカルシステム、分散システム、及び/又はインターネット等のネットワークを介して他のシステムと信号を介して、別のコンポーネントとインタラクトする1つのコンポーネントからのデータ)を有する信号等に従って、ローカル及び/又はリモートプロセスを介して通信することができる。別の例として、コンポーネントは、電気又は電子回路によって動作する機械部品によって提供される特定の機能を有する装置とすることができ、プロセッサによって実行されるソフトウェア又はファームウェアアプリケーションによって動作する。そのような場合、プロセッサは、装置の内部又は外部とすることができ、ソフトウェア又はファームウェアアプリケーションの少なくとも一部を実行することができる。更に別の例として、コンポーネントは、機械部品なしで電子コンポーネントを介して特定の機能を提供する装置とすることができ、電子コンポーネントは、電子コンポーネントの機能を少なくとも部分的に与えるソフトウェア又はファームウェアを実行するためのプロセッサ又は他の手段を含むことができる。一態様では、コンポーネントは、例えばクラウドコンピューティングシステム内の仮想マシンを介して電子コンポーネントをエミュレートし得る。
【0158】
加えて、「又は」という用語は、排他的な「又は」ではなく、包括的な「又は」を意味することを意図している。すなわち、特に明記しない限り、又は文脈から明らかでない限り、「Xは、A又はBを利用する」は、自然な包括的順列のうちの任意のものを意味することを意図している。すなわち、XがAを利用する場合、XがBを利用する場合、又はXがA及びBの両方を利用する場合、前述のいずれの事例でも、「Xは、A又はBを利用する」が満たされる。その上、本明細書及び添付の図面において使用される冠詞「a」及び「an」は、特に明記しない限り、又は文脈から単数形を指すことが明らかでない限り、一般に「1つ又は複数」を意味すると解釈されるべきである。本明細書において使用される場合、「例」及び/又は「例示的」という用語は、例、事例、又は例示として機能することを意味するために利用される。疑義を回避するために、本明細書において開示される本主題は、そのような例によって限定されない。加えて、本明細書において「例」及び/又は「例示的」として説明される任意の態様又は設計は、必ずしも他の態様又は設計よりも好ましい又は有利であると解釈されるべきではなく、当業者に知られている同等の例示的な構造及び技法を排除することを意味するものでもない。
【0159】
本明細書において利用される場合、「プロセッサ」という用語は、限定されないが、シングルコアプロセッサ;ソフトウェアマルチスレッド実行能力を有するシングルプロセッサ;マルチコアプロセッサ;ソフトウェアマルチスレッド実行能力を有するマルチコアプロセッサ;ハードウェアマルチスレッド技術を有するマルチコアプロセッサ;並列プラットフォーム;及び分散共有メモリを有する並列プラットフォームを含む実質的に任意のコンピューティング処理ユニット又はデバイスを指すことができる。加えて、プロセッサは、集積回路、特定用途向け集積回路(ASIC)、デジタル信号プロセッサ(DSP)、フィールドプログラマブルゲートアレイ(FPGA)、プログラマブルロジックコントローラ(PLC)、複合プログラマブルロジックデバイス(CPLD)、ディスクリートゲート又はトランジスタロジック、ディスクリートハードウェアコンポーネント、又は本明細書において説明される機能を実行するように設計されたこれらの任意の組み合わせを指すことができる。さらに、プロセッサは、空間使用量の最適化又はユーザ機器の性能の向上のために、限定されないが、分子及び量子ドットベーストランジスタ、スイッチ及びゲート等のナノスケールアーキテクチャを活用することができる。プロセッサは、コンピューティング処理ユニットの組み合わせとして実装することもできる。本開示では、「記憶」、「ストレージ」、「データストア」、「データストレージ」、「データベース」、及びコンポーネントの動作及び機能に関連する実質的に任意の他の情報記憶コンポーネント等の用語は、「メモリコンポーネント」、「メモリ」において具現化されたエンティティ、又はメモリを有するコンポーネントを指すために利用される。本明細書において説明されるメモリ及び/又はメモリコンポーネントは、揮発性メモリ又は不揮発性メモリのいずれかであり得るか、又は揮発性メモリ及び不揮発性メモリの両方を含み得ることを認識すべきである。限定ではなく例示として、不揮発性メモリは、リードオンリメモリ(ROM)、プログラマブルROM(PROM)、電気的プログラマブルROM(EPROM)、電気的消去可能ROM(EEPROM)、フラッシュメモリ、又は不揮発性ランダムアクセスメモリ(RAM)(例えば、強誘電体RAM(FeRAM))を含むことができる。揮発性メモリは、例えば、外部キャッシュメモリとして機能することができるRAMを含むことができる。限定ではなく例示として、RAMは、同期RAM(SRAM)、ダイナミックRAM(DRAM)、同期DRAM(SDRAM)、ダブルデータレートSDRAM(DDR SDRAM)、拡張SDRAM(ESDRAM)、Synchlink DRAM(SLDRAM)、ダイレクトRambusRAM(DRRAM)、ダイレクトRambusダイナミックRAM(DRDRAM)、及びRambusダイナミックRAM(RDRAM)等の多くの形式において利用可能である。加えて、本明細書において開示されるシステム又はコンピュータ実装方法のメモリコンポーネントは、これらの及び他の任意の適したタイプのメモリを含むことに限定されず、これらを含むことを意図している。
【0160】
上記で説明されてきたものは、システム及びコンピュータ実装方法の単なる例を含む。当然ながら、本開示を説明する目的で、コンポーネント又はコンピュータ実装方法のあらゆる考えられる組み合わせを説明することは可能ではなく、当業者であれば、本開示の多くの更なる組み合わせ及び順列が可能であることを認識し得る。さらに、詳細な説明、特許請求の範囲、付録及び図面において、「含む(includes)」、「有する(has)」、「所有する(possesse)」等の用語が使用される範囲で、そのような用語は、「備える(comprising)」が特許請求の範囲の移行語として利用されるときに解釈されるのと同様に、「備える(comprising)」という用語と同様の方法で包括的であることを意図している。
【0161】
様々な実施形態の説明は、例示のために提示されてきたが、網羅的であることも、又は開示された実施形態に限定されることも意図するものではない。説明された実施形態の範囲及び趣旨から逸脱することなく、多くの修正及び変形が、当業者には明らかであろう。本明細書において使用される専門用語は、実施形態の原理、実用的な適用、又は市場で見られる技術に対する技術的改善を最も良好に説明するように、又は、本明細書において開示された実施形態を他の当業者が理解することを可能にするように選択された。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
【手続補正書】
【提出日】2023-11-17
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
コンピュータ可読メモリに記憶されたコンピュータ実行可能コンポーネントを実行するプロセッサを備え、前記コンピュータ実行可能コンポーネントは:
クライアントデバイスによって提供されるコンピュータプログラムにアクセスするバックエンド受信機コンポーネント、ここで、前記コンピュータプログラムは、量子計算を示すように構成されている;及び
バックエンド古典的コンピューティングリソースをインスタンス化することによって前記コンピュータプログラムをホストするバックエンドランタイムマネージャコンポーネント、ここで、前記バックエンド古典的コンピューティングリソースは、前記コンピュータプログラムの古典的実行及び前記コンピュータプログラムによって示される前記量子計算の量子実行の両方を編成する
を有する、システム。
【請求項2】
前記バックエンド古典的コンピューティングリソースからの命令に応答して、前記コンピュータプログラムによって示される前記量子計算を実行する少なくとも1つのバックエンド量子コンピューティングデバイスを更に備える、請求項1に記載のシステム。
【請求項3】
前記バックエンド古典的コンピューティングリソースによる実行中、前記コンピュータプログラムは、前記少なくとも1つのバックエンド量子コンピューティングデバイスによって生成された量子結果を利用し、それによって、プログラム結果がもたらされる、請求項2に記載のシステム。
【請求項4】
前記コンピュータ実行可能コンポーネントは:前記量子結果又は前記プログラム結果を記録するバックエンド記録コンポーネントを更に有する、請求項3に記載のシステム。
【請求項5】
前記バックエンド古典的コンピューティングリソース及び前記少なくとも1つのバックエンド量子コンピューティングデバイスは、同一の場所に位置し、又は、前記バックエンド古典的コンピューティングリソース及び前記少なくとも1つのバックエンド量子コンピューティングデバイスは、専用通信チャネルを介して結合される、請求項2に記載のシステム。
【請求項6】
前記バックエンド古典的コンピューティングリソースは、ランタイムコンテナである、請求項1に記載のシステム。
【請求項7】
前記バックエンドランタイムマネージャコンポーネントは、前記クライアントデバイス及び前記コンピュータプログラムの間の通信を媒介する、請求項1に記載のシステム。
【請求項8】
前記バックエンド受信機コンポーネントは、別のクライアントデバイスによって提供される別のコンピュータプログラムにアクセスし、前記別のコンピュータプログラムは、別の量子計算を示すように構成されており、前記バックエンドランタイムマネージャコンポーネントは、別のバックエンド古典的コンピューティングリソースをインスタンス化することによって前記別のコンピュータプログラムをホストし、前記別のバックエンド古典的コンピューティングリソースは、前記別のコンピュータプログラムの古典的実行及び前記別のコンピュータプログラムによって示される前記別の量子計算の量子実行の両方を編成し、前記別のバックエンド古典的コンピューティングリソースは、前記バックエンド古典的コンピューティングリソースと並列に動作する、請求項1に記載のシステム。
【請求項9】
プロセッサに動作可能に結合されたバックエンドデバイスによって、クライアントデバイスによって提供されるコンピュータプログラムにアクセスする段階、ここで、前記コンピュータプログラムは、量子計算を示すように構成されている;及び
前記バックエンドデバイスによって、バックエンド古典的コンピューティングリソースをインスタンス化することによって前記コンピュータプログラムをホストする段階、ここで、前記バックエンド古典的コンピューティングリソースは、前記コンピュータプログラムの古典的実行及び前記コンピュータプログラムによって示される前記量子計算の量子実行の両方を編成する
を備える、コンピュータ実装方法。
【請求項10】
前記バックエンドデバイスによって、前記バックエンド古典的コンピューティングリソースからの命令に応答して、少なくとも1つのバックエンド量子コンピューティングデバイス上で前記量子計算を実行する段階を更に備える、請求項9に記載のコンピュータ実装方法。
【請求項11】
前記バックエンド古典的コンピューティングリソースによる実行中、前記コンピュータプログラムは、前記少なくとも1つのバックエンド量子コンピューティングデバイスによって生成された量子結果を利用し、それによって、プログラム結果がもたらされる、請求項10に記載のコンピュータ実装方法。
【請求項12】
前記バックエンドデバイスによって、前記量子結果又は前記プログラム結果を記録する段階を更に備える、請求項11に記載のコンピュータ実装方法。
【請求項13】
前記バックエンド古典的コンピューティングリソース及び前記少なくとも1つのバックエンド量子コンピューティングデバイスは、同一の場所に位置し、又は、前記バックエンド古典的コンピューティングリソース及び前記少なくとも1つのバックエンド量子コンピューティングデバイスは、専用通信チャネルを介して結合される、請求項10に記載のコンピュータ実装方法。
【請求項14】
前記バックエンド古典的コンピューティングリソースは、ランタイムコンテナである、請求項9に記載のコンピュータ実装方法。
【請求項15】
ランタイムマネージャコンポーネントは、前記クライアントデバイス及び前記コンピュータプログラムの間の通信を媒介する、請求項9に記載のコンピュータ実装方法。
【請求項16】
前記バックエンドデバイスによって、別のクライアントデバイスによって提供される別のコンピュータプログラムにアクセスする段階、ここで、前記別のコンピュータプログラムは、別の量子計算を示すように構成されている;及び
前記バックエンドデバイスによって、別のバックエンド古典的コンピューティングリソースをインスタンス化することによって前記別のコンピュータプログラムをホストする段階、ここで、前記別のバックエンド古典的コンピューティングリソースは、前記別のコンピュータプログラムの古典的実行及び前記別のコンピュータプログラムによって示される前記別の量子計算の量子実行の両方を編成し、前記別のバックエンド古典的コンピューティングリソースは、前記バックエンド古典的コンピューティングリソースと並列に動作する
を更に備える、請求項9に記載のコンピュータ実装方法。
【請求項17】
バックエンド量子ランタイムを促進するコンピュータプログラムであって、前記コンピュータプログラムは、プログラム命令が具現化されたコンピュータ可読メモリを備え、前記プログラム命令は、バックエンドプロセッサに:
前記バックエンドプロセッサによって、クライアントデバイスによって提供されるコンピュータプログラムにアクセスする手順、ここで、前記コンピュータプログラムは、量子計算を示すように構成されている;及び
前記バックエンドプロセッサによって、バックエンド古典的コンピューティングリソースをインスタンス化することによって前記コンピュータプログラムをホストする手順、ここで、前記バックエンド古典的コンピューティングリソースは、前記コンピュータプログラムの古典的実行及び前記コンピュータプログラムによって示される前記量子計算の量子実行の両方を編成する
を行わせるために前記バックエンドプロセッサによって実行可能である、コンピュータプログラム。
【請求項18】
前記プログラム命令は、前記バックエンドプロセッサに:前記バックエンドプロセッサによって、前記バックエンド古典的コンピューティングリソースからの命令に応答して、少なくとも1つのバックエンド量子コンピューティングデバイス上で前記量子計算を実行する手順を行わせるために更に実行可能である、請求項17に記載のコンピュータプログラム。
【請求項19】
前記バックエンド古典的コンピューティングリソースによる実行中、前記コンピュータプログラムは、前記少なくとも1つのバックエンド量子コンピューティングデバイスによって生成された量子結果を利用し、それによって、プログラム結果がもたらされる、請求項18に記載のコンピュータプログラム。
【請求項20】
前記プログラム命令は、前記バックエンドプロセッサに:前記バックエンドプロセッサによって、前記量子結果又は前記プログラム結果を記録する手順を行わせるために更に実行可能である、請求項19に記載のコンピュータプログラム。
【手続補正2】
【補正対象書類名】明細書
【補正対象項目名】0161
【補正方法】変更
【補正の内容】
【0161】
様々な実施形態の説明は、例示のために提示されてきたが、網羅的であることも、又は開示された実施形態に限定されることも意図するものではない。説明された実施形態の範囲及び趣旨から逸脱することなく、多くの修正及び変形が、当業者には明らかであろう。本明細書において使用される専門用語は、実施形態の原理、実用的な適用、又は市場で見られる技術に対する技術的改善を最も良好に説明するように、又は、本明細書において開示された実施形態を他の当業者が理解することを可能にするように選択された。
(他の考えられる項目)
(項目1)
コンピュータ可読メモリに記憶されたコンピュータ実行可能コンポーネントを実行するプロセッサを備え、前記コンピュータ実行可能コンポーネントは:
クライアントデバイスによって提供されるコンピュータプログラムにアクセスするバックエンド受信機コンポーネント、ここで、前記コンピュータプログラムは、量子計算を示すように構成されている;及び
バックエンド古典的コンピューティングリソースをインスタンス化することによって前記コンピュータプログラムをホストするバックエンドランタイムマネージャコンポーネント、ここで、前記バックエンド古典的コンピューティングリソースは、前記コンピュータプログラムの古典的実行及び前記コンピュータプログラムによって示される前記量子計算の量子実行の両方を編成する
を有する、システム。
(項目2)
前記バックエンド古典的コンピューティングリソースからの命令に応答して、前記コンピュータプログラムによって示される前記量子計算を実行する少なくとも1つのバックエンド量子コンピューティングデバイスを更に備える、項目1に記載のシステム。
(項目3)
前記バックエンド古典的コンピューティングリソースによる実行中、前記コンピュータプログラムは、前記少なくとも1つのバックエンド量子コンピューティングデバイスによって生成された量子結果を利用し、それによって、プログラム結果がもたらされる、項目2に記載のシステム。
(項目4)
前記コンピュータ実行可能コンポーネントは:前記量子結果又は前記プログラム結果を記録するバックエンド記録コンポーネントを更に有する、項目3に記載のシステム。
(項目5)
前記バックエンド古典的コンピューティングリソース及び前記少なくとも1つのバックエンド量子コンピューティングデバイスは、同一の場所に位置し、又は、前記バックエンド古典的コンピューティングリソース及び前記少なくとも1つのバックエンド量子コンピューティングデバイスは、専用通信チャネルを介して結合される、項目2から4のいずれか1項に記載のシステム。
(項目6)
前記バックエンド古典的コンピューティングリソースは、ランタイムコンテナである、項目1から5のいずれか1項に記載のシステム。
(項目7)
前記バックエンドランタイムマネージャコンポーネントは、前記クライアントデバイス及び前記コンピュータプログラムの間の通信を媒介する、項目1から6のいずれか1項に記載のシステム。
(項目8)
前記バックエンド受信機コンポーネントは、別のクライアントデバイスによって提供される別のコンピュータプログラムにアクセスし、前記別のコンピュータプログラムは、別の量子計算を示すように構成されており、前記バックエンドランタイムマネージャコンポーネントは、別のバックエンド古典的コンピューティングリソースをインスタンス化することによって前記別のコンピュータプログラムをホストし、前記別のバックエンド古典的コンピューティングリソースは、前記別のコンピュータプログラムの古典的実行及び前記別のコンピュータプログラムによって示される前記別の量子計算の量子実行の両方を編成し、前記別のバックエンド古典的コンピューティングリソースは、前記バックエンド古典的コンピューティングリソースと並列に動作する、項目1から7のいずれか1項に記載のシステム。
(項目9)
プロセッサに動作可能に結合されたバックエンドデバイスによって、クライアントデバイスによって提供されるコンピュータプログラムにアクセスする段階、ここで、前記コンピュータプログラムは、量子計算を示すように構成されている;及び
前記バックエンドデバイスによって、バックエンド古典的コンピューティングリソースをインスタンス化することによって前記コンピュータプログラムをホストする段階、ここで、前記バックエンド古典的コンピューティングリソースは、前記コンピュータプログラムの古典的実行及び前記コンピュータプログラムによって示される前記量子計算の量子実行の両方を編成する
を備える、コンピュータ実装方法。
(項目10)
前記バックエンドデバイスによって、前記バックエンド古典的コンピューティングリソースからの命令に応答して、少なくとも1つのバックエンド量子コンピューティングデバイス上で前記量子計算を実行する段階を更に備える、項目9に記載のコンピュータ実装方法。
(項目11)
前記バックエンド古典的コンピューティングリソースによる実行中、前記コンピュータプログラムは、前記少なくとも1つのバックエンド量子コンピューティングデバイスによって生成された量子結果を利用し、それによって、プログラム結果がもたらされる、項目10に記載のコンピュータ実装方法。
(項目12)
前記バックエンドデバイスによって、前記量子結果又は前記プログラム結果を記録する段階を更に備える、項目11に記載のコンピュータ実装方法。
(項目13)
前記バックエンド古典的コンピューティングリソース及び前記少なくとも1つのバックエンド量子コンピューティングデバイスは、同一の場所に位置し、又は、前記バックエンド古典的コンピューティングリソース及び前記少なくとも1つのバックエンド量子コンピューティングデバイスは、専用通信チャネルを介して結合される、項目10から12のいずれか1項に記載のコンピュータ実装方法。
(項目14)
前記バックエンド古典的コンピューティングリソースは、ランタイムコンテナである、項目9~13のいずれか1項に記載のコンピュータ実装方法。
(項目15)
ランタイムマネージャコンポーネントは、前記クライアントデバイス及び前記コンピュータプログラムの間の通信を媒介する、項目9~14のいずれか1項に記載のコンピュータ実装方法。
(項目16)
前記バックエンドデバイスによって、別のクライアントデバイスによって提供される別のコンピュータプログラムにアクセスする段階、ここで、前記別のコンピュータプログラムは、別の量子計算を示すように構成されている;及び
前記バックエンドデバイスによって、別のバックエンド古典的コンピューティングリソースをインスタンス化することによって前記別のコンピュータプログラムをホストする段階、ここで、前記別のバックエンド古典的コンピューティングリソースは、前記別のコンピュータプログラムの古典的実行及び前記別のコンピュータプログラムによって示される前記別の量子計算の量子実行の両方を編成し、前記別のバックエンド古典的コンピューティングリソースは、前記バックエンド古典的コンピューティングリソースと並列に動作する
を更に備える、項目9~15のいずれか1項に記載のコンピュータ実装方法。
(項目17)
バックエンド量子ランタイムを促進するコンピュータプログラム製品であって、前記コンピュータプログラム製品は、プログラム命令が具現化されたコンピュータ可読メモリを備え、前記プログラム命令は、バックエンドプロセッサに:
前記バックエンドプロセッサによって、クライアントデバイスによって提供されるコンピュータプログラムにアクセスする手順、ここで、前記コンピュータプログラムは、量子計算を示すように構成されている;及び
前記バックエンドプロセッサによって、バックエンド古典的コンピューティングリソースをインスタンス化することによって前記コンピュータプログラムをホストする手順、ここで、前記バックエンド古典的コンピューティングリソースは、前記コンピュータプログラムの古典的実行及び前記コンピュータプログラムによって示される前記量子計算の量子実行の両方を編成する
を行わせるために前記バックエンドプロセッサによって実行可能である、コンピュータプログラム製品。
(項目18)
前記プログラム命令は、前記バックエンドプロセッサに:前記バックエンドプロセッサによって、前記バックエンド古典的コンピューティングリソースからの命令に応答して、少なくとも1つのバックエンド量子コンピューティングデバイス上で前記量子計算を実行する手順を行わせるために更に実行可能である、項目17に記載のコンピュータプログラム製品。
(項目19)
前記バックエンド古典的コンピューティングリソースによる実行中、前記コンピュータプログラムは、前記少なくとも1つのバックエンド量子コンピューティングデバイスによって生成された量子結果を利用し、それによって、プログラム結果がもたらされる、項目18に記載のコンピュータプログラム製品。
(項目20)
前記プログラム命令は、前記バックエンドプロセッサに:前記バックエンドプロセッサによって、前記量子結果又は前記プログラム結果を記録する手順を行わせるために更に実行可能である、項目19に記載のコンピュータプログラム製品。
【国際調査報告】