(57)【要約】本明細書では、量子ハイブリッド計算を実装するための技術を記載する。実施形態は、ハイブリッドプログラムを受信するステップと、ハイブリッドプログラムに対応するそれぞれの機能をＣＰＵ処理またはＱＰＵ処理のいずれかに割り当てるステップと、それぞれの機能に対応する処理をスケジューリングするステップと、ハイブリッドプログラムの実行を開始するステップと、古典・量子ハイブリッドプログラムの実行結果を照合するステップと、を含む。【選択図】図１
2021530783.tif 000002
【特許請求の範囲】
【請求項１】
ハイブリッドプログラムに対応するそれぞれの機能を古典情報処理または量子情報処理のいずれかに割り当てるステップと、
前記それぞれの機能に対応する処理をスケジューリングするステップと、
前記ハイブリッドプログラムの実行を開始するステップと、
機能の部分的な結果を古典プロセッサと量子プロセッサとの間で転送するステップと、
前記ハイブリッドプログラムの前記実行の結果を照合するステップと、
を含む、（ＯＳ観点からの）方法。
【請求項２】
前記割り当てるステップが、古典情報処理または量子情報処理のいずれかに本質的に関連する、前記それぞれの機能のための１つ以上の特徴に基づく、請求項１に記載の方法。
【請求項３】
前記古典情報処理が、任意の形態のデジタル処理を含む、請求項１に記載の方法。
【請求項４】
前記割り当てるステップが、ヒューリスティックと、前記古典プロセッサおよび前記量子プロセッサの特徴的な性能プロファイルに基づく、請求項１に記載の方法。
【請求項５】
前記スケジューリングするステップが、古典情報処理と量子情報処理の両方のための前記それぞれの機能の優先順位付けを含む、請求項１に記載の方法。
【請求項６】
前記スケジューリングするステップが、最適化に基づく、請求項４に記載の方法。
【請求項７】
前記スケジューリングするステップが、機能間のデータ依存性に基づく、請求項５に記載の方法。
【請求項８】
前記開始するステップが、前記優先順位付けの結果に基づく、請求項５に記載の方法。
【請求項９】
ハイブリッドプログラムを受信する受信機と、
それぞれの機能を、前記それぞれの機能に対する１つ以上の基準に基づいて、古典情報処理または量子情報処理のいずれかに割り当てるアービタと、
前記アービタによって割り当てられた古典プロセッサまたは量子プロセッサのいずれかで前記それぞれの機能の処理をスケジューリングするスケジューラと、
前記古典プロセッサと前記量子プロセッサの間でスケジューリングされた前記処理の部分的な結果を転送し、
前記古典プロセッサと前記量子プロセッサでの前記処理の結果を照合する
マネージャと、
を備える、（ＯＳ観点からの）装置。
【請求項１０】
ＱＰＵ上での前記処理を監視するためのスーパーバイザをさらに備える、請求項９に記載の装置。
【請求項１１】
前記古典情報処理が、ＣＰＵ処理、ＧＰＵ処理、ＴＰＵ処理のいずれか１つを含む、請求項９に記載の装置。
【請求項１２】
前記アービタが、ヒューリスティックと、前記古典プロセッサおよび前記量子プロセッサの特徴的な性能プロファイルを含む基準とに基づいて、それぞれの機能を割り当てる、請求項９に記載の装置。
【請求項１３】
前記アービタが、前記それぞれの機能のうちのいずれか１つの既知の処理要件を含む基準に基づいて機能を割り当てる、請求項９に記載の装置。
【請求項１４】
コンピュータ可読媒体であって、実行時に、デジタルコンピューティングプロセッサに、
第一の言語で記述された１つ以上の実行可能なコンポーネントと、第二の言語で記述された１つ以上の実行可能なコンポーネントとを有するハイブリッドプログラムを受信する機能と、
第一のコンピューティング環境で実行するために第一の言語で記述された前記１つ以上の実行可能なコンポーネントを割り当てる機能と、
第二のコンピューティング環境で実行するために第二の言語で記述された前記１つ以上の実行可能なコンポーネントを割り当てる機能と、
前記第二のコンピューティング環境での実行に対して前記第一のコンピューティング環境での実行をスケジューリングする機能と、
スケジューリングされた前記実行の結果を照合する機能と、
を実行させる実行可能な命令を記憶するコンピュータ可読媒体。
【請求項１５】
前記第一の言語が、デジタルコンピューティング言語である、請求項１４に記載のコンピュータ可読媒体。
【請求項１６】
前記第一のコンピューティング環境が、１つ以上のデジタルプロセッサを含む、請求項１５に記載のコンピュータ可読媒体。
【請求項１７】
前記第一の言語で記述された前記１つ以上の実行可能なコンポーネントの前記割り当てが、前記第一の言語で記述された前記１つ以上の実行可能なコンポーネントの実行を、前記デジタルプロセッサのうちのそれぞれの１つに割り当てることを含む、請求項１６に記載のコンピュータ可読媒体。
【請求項１８】
前記第一の言語で記述された前記１つ以上の実行可能なコンポーネントで割り当てられたものが、前記デジタルプロセッサのうちの複数で並列に実行される、請求項１７に記載のコンピュータ可読媒体。
【請求項１９】
前記第二の言語が、量子コンピューティング言語である、請求項１４に記載のコンピュータ可読媒体。
【請求項２０】
前記第二のコンピューティング環境が、１つ以上の量子コンピューティングプロセッサを含む、請求項１９に記載のコンピュータ可読媒体。
【請求項２１】
前記第二の言語で記述された前記１つ以上の実行可能なコンポーネントの前記割り当てが、前記第二の言語で記述された前記１つ以上の実行可能なコンポーネントの実行を、前記量子プロセッサのうちのそれぞれの１つに割り当てることを含む、請求項２０に記載のコンピュータ可読媒体。
【請求項２２】
前記第二の言語で記述された前記１つ以上の実行可能なコンポーネントで割り当てられたものが、前記量子プロセッサのうちの複数で並列に実行される、請求項２１に記載のコンピュータ可読媒体。
【請求項２３】
所定のマイルストーンが、時間ベースである、請求項１４に記載のコンピュータ可読媒体。
【請求項２４】
所定のマイルストーンが、前記第一のコンピューティング環境または前記第二のコンピューティング環境のいずれかにおけるリソース使用量に基づく、請求項１４に記載のコンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本明細書に記載される実施形態は、一般に、古典プロセスによって構築された量子回路の効率的な実行を実装することに関連している。
【背景技術】
【０００２】
量子コンピュータとは、重畳やもつれなどの量子力学的現象を利用してデータを処理する計算システムである。データが２つの明確な状態（「０」または「１」）のいずれかで符号化されるデジタルコンピュータとは異なり、量子コンピュータでは、データは量子ビット（以下、「キュービット」）に符号化する必要がある。単一のキュービットは、「１」、「０」、または２つのキュービット状態の任意の量子重畳を表すことができる。一般的に、Ｎ個のキュービットを有する量子コンピュータは、同時に最大２Ｎ個の異なる状態の任意の重畳状態に存在することができ、すなわち、キュービットのペアは、４つの状態の任意の量子重畳になり得るし、３つのキュービットは８つの状態の任意の重畳になり得る。
【０００３】
大規模量子コンピュータは、デジタルコンピュータ（代替的に、本明細書では「古典コンピュータ」と呼ぶ）よりも、特定の問題をより迅速に解決することができる。量子コンピュータの動作では、キュービットを制御された初期状態に設定することにより、計算を初期化することができる。これらのキュービットを操作することにより、量子アルゴリズムと呼ばれる、解決すべき問題を表す量子論理ゲートの予め定められたシーケンスが実現される。Ｓｈｏｒのアルゴリズム、Ｓｉｍｏｎのアルゴリズムなどの量子アルゴリズムは、どのような確率論的な古典アルゴリズムよりも高速に実行される。量子アルゴリズムは、ある既知の確率でのみ正しい解を提供するため、非決定論的であることが多い。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
特定の問題を解く上で量子コンピュータに内在する利点を踏まえ、量子コンピュータの強みを生かすためのプログラミングが課題となっている。
【課題を解決するための手段】
【０００５】
一つの例示的な実施形態では、量子ハイブリッド計算を実装する方法は、ハイブリッドプログラムを受信するステップと、ハイブリッドプログラムに対応するそれぞれの機能を古典情報処理または量子情報処理のいずれかに割り当てるステップと、それぞれの機能に対応する処理をスケジューリングするステップと、ハイブリッドプログラムの実行を開始するステップと、機能の部分的な結果を古典プロセッサと量子プロセッサとの間で転送するステップと、ハイブリッドプログラムの実行結果を照合するステップと、を含む。
【０００６】
別の例示的な実施形態では、量子ハイブリッド計算を実装するための装置は、ハイブリッドプログラムを受信する受信機と、それぞれの機能を、それぞれの機能に対する１つ以上の基準に基づいて、古典情報処理または量子情報処理のいずれかに割り当てるアービタと、古典プロセッサおよび量子プロセッサの両方でそれぞれの機能の処理をスケジューリングするスケジューラと、機能の部分的な結果を古典プロセッサと量子プロセッサの間で転送し、処理の結果を照合するマネージャとを含む。
【０００７】
さらに、別の実施形態では、コンピュータ可読媒体は、実行時に、デジタルコンピューティングプロセッサに、第一の言語で記述された１つ以上の実行可能なコンポーネントと、第二の言語で記述された１つ以上の実行可能なコンポーネントとを有するハイブリッドプログラムを受信させる命令を記憶し、第一のコンピューティング環境で実行するために第一の言語で記述された実行可能なコンポーネントを割り当て、第二のコンピューティング環境で実行するために第二の言語で記述された実行可能コンポーネントを割り当て、第二のコンピューティング環境での実行に対して第一のコンピューティング環境での実行をスケジューリングし、スケジュールされた実行の結果を照合し、実行の直近の反復の照合結果に基づいてスケジューリングされた実行を反復的に繰り返し、所定のマイルストーンの発生時に実行の反復的反復を終了する。
【０００８】
前述の概要は、例示的なものに過ぎず、いかなる意味でも限定することを意図していない。上述の例示的な側面、実施形態、および特徴に加えて、さらなる側面、実施形態、および特徴は、図面および以下の詳細な説明を参照することによって明らかになるであろう。
【０００９】
以下の詳細な説明では、様々な変更および修正が、以下の詳細な説明から当業者に明らかになるので、実施形態は、例示としてのみ説明される。異なる図での同じ参照番号の使用は、類似または同一の項目を示す。
【図面の簡単な説明】
【００１０】
【図１】量子ハイブリッド計算が実装され得る例示的なシステム構成を示し、本明細書に記載された少なくともいくつかの実施形態に従って配置されている。
【図２】量子ハイブリッド計算が実装され得るプロセッサシステムの例示的な構成を示し、本明細書に記載された少なくともいくつかの実施形態に従って配置されている。
【図３】量子ハイブリッド計算の少なくとも一部を容易にするために、プロセッサの例示的なブロック図構成を示し、本明細書に記載された少なくとも一部の実施形態に従って配置されている。
【図４】古典／ハイブリッド計算の少なくとも一部が実装される例示的な処理フローを示し、本明細書に記載された少なくともいくつかの実施形態に従って配置されている。
【図５】例示的なコンピューティングの実施形態を示し、量子ハイブリッド計算のプロセスおよびサブプロセスのいずれも、コンピュータ可読媒体に記憶されたコンピュータ可読命令として実装され得る。
【発明を実施するための形態】
【００１１】
以下の詳細な説明では、添付の図面を参照するが、これは本明細書の一部を構成するものである。図面では、文脈がそうでないことを規定しない限り、類似の記号は、典型的には類似のコンポーネントを識別する。さらに、別段の断りがない限り、各連続的な図面の説明は、以前の図面のうちの１つ以上の図面からの特徴を参照して、現在の例示的な実施形態をより明確な文脈に置き、より実質的な説明をすることがある。それでも、詳細な説明、図面、および特許請求の範囲に記載された例示的な実施形態は、限定的であることを意味するものではない。本明細書に提示された主題の精神または範囲から逸脱することなく、他の実施形態が利用されてもよく、他の変更が行われてもよい。本開示の側面は、本明細書に一般的に記載され、図面に例示されているように、様々な異なる構成で配置、置換、結合、分離、および設計されてもよく、それらのすべてが本明細書に明示的に企図されていることが容易に理解されるであろう。
【００１２】
本明細書では、システム、装置、アプリケーション、プログラム、および方法のうちの１つ以上に具現化されるアプローチを記載する。このアプローチによって、古典コンピューティングと量子コンピューティングの両方を含む量子ハイブリッド計算は、例えば、異種のコンピューティング環境にある同一場所に配置されたコンピューティングデバイス間でコンピューティングを配分することによって、安全かつ効率的に実装される。
【００１３】
本明細書では、以下の用語は、その受け入れられた意味に加えて、以下のように使用することもある。
【００１４】
「古典コンピューティング」、「古典プログラム」、「デジタルコンピューティング」、「デジタルプログラム」またはそのバリエーションは、２進数に変換されたデータのコンピューティング／処理を指す場合がある。古典コンピューティングプロセッサは、中央処理ユニット（ＣＰＵ）、グラフィカル処理ユニット（ＧＰＵ）、テンソル処理ユニット（ＴＰＵ）、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイなど、およびそれらの非限定的な組合せを含み得るが、これらに限定されるものではない。その非限定的な例には、マルチコアの古典コンピュータ、並列計算を実行するためのＧＰＵを有する古典コンピュータなどで、並列化されて実行され得る古典最適化機能が含まれ得る。
【００１５】
「量子コンピューティング」またはそのバリエーションとは、キュービットに符号化されたデータのコンピューティング／処理を指すこともある。量子コンピューティングは、原子を利用して高レベルのゲーティング機能を実行し、古典コンピューティングよりも１０Ｋのオーダーで速い結果を生み出す。
【００１６】
「環境」とは、プログラムを実行する際に、ライブラリ、他のプログラム、他のハードウェアなどのユーティリティを利用することができるコンポーネントが存在するコンピューティング環境を指すこともある。したがって、本明細書では、古典コンピューティング環境、量子コンピューティング環境などを指すこともある。
【００１７】
「ハイブリッドプログラム」とは、古典コンピューティング環境でプログラムされた反復プロセスである量子プログラムを指すこともあり、その中の少なくとも一部の機能は、量子コンピューティング環境、例えば量子サンドボックスでの実行を意図している。ハイブリッドプログラムに対応する実行され機能の結果は、古典コンピューティング環境において測定されてもよいし、照合されてもよく、その場合、量子プログラムまたは反復処理は、その後、更新または置換される。そのような処理は、処理が時間または処理に基づくマイルストーンに到達するまで、数十万回のオーダーで反復的に繰り返され得る。
【００１８】
「回路」とは、そのような機能の処理が直線的であるため、ハイブリッドプログラムに含まれる量子機能を指すことがある。
【００１９】
「サンドボックス」とは、特定の機能が禁止されている制限された環境を指すことがある。現在の文脈では、サンドボックスは、実行中の機能が古典計算であろうと、量子計算であろうと、特に、実行中の機能のいずれかが第三者から受信され、その信頼レベルが完全に検証されていない場合に、ある実行中の機能を別の機能から分離するために使用されてもよい。
【００２０】
本明細書に記載された例示的な実施形態に従って、量子コンピューティングは、反復処理を実行することを含み、この実行によって、量子コンピューティング環境で実行するために、量子回路を古典コンピューティング環境に書き込むことができる。使用され得るそのような古典コンピューティング環境の非限定的な例としては、デスクトップコンピュータ、ラップトップコンピュータ、モバイルデバイスなどが挙げられる。量子回路は、ネットワーク、例えば、インターネットを介して、量子コンピューティングデバイスに提出されてもよく、量子コンピューティングデバイスで、例えば、メインフレームコンピューティングデバイスのためのバッチ処理と同様の方法で、量子回路が他の量子回路とキューに入れられてもよい。キューに入れられた量子回路は、順番に実行されてもよい。
【００２１】
量子回路の計算の反復または累積結果は、量子回路が書き込まれた古典コンピューティング環境、または量子回路の実行が管理されている別の古典コンピューティング環境のいずれかで受信され、照合されてもよい。いずれの古典コンピューティング環境であっても、量子回路は、最新の反復の結果に基づいて、またはそれまでの累積的なコンピューティングの結果に基づいて、更新または書き換えられてもよい。
【００２２】
古典コンピューティング環境で記述された量子回路を、例えば、クラウドベースの量子コンピューティングデバイスで処理するために、インターネット経由で提出する場合、ネットワークのレイテンシや帯域幅の消費により、回路の送信とその結果の両方が遅くなることがある。その結果、このようなコンピューティングシナリオでは、リソースコストが大きくなることが予想される。このアプローチは、例えば、量子化学などの最適化問題で、問題となる。量子化学では、量子コンピュータを介して量子状態を設定し、その結果を古典コンピュータで最適化する２つの部分からなるアルゴリズムが必要である。特に、量子最適化では、数万または数十万のオーダーの反復が必要だからである。つまり、量子コンピューティングに固有の大量のデータをネットワークベースで交換することは、実務家にとっては法外であり、遅いと見なされ得る。
【００２３】
図１は、本明細書に記載された少なくともいくつかの実施形態に従って配置された、量子ハイブリッド計算が実装され得る例示的なシステム構成１００を示す。描かれているように、構成１００は、ネットワーク１０４、クラウドベースのインフラストラクチャ１０５、サーバ１０６Ａおよび１０６Ｂ、古典処理ユニット１１５Ａ〜１１５Ｍ、量子処理ユニット１２０Ａ〜１２０Ｎ、およびコネクタ１２６を少なくとも含む。
【００２４】
１つ以上のユーザが実行のためにプログラム１０７および／またはプログラム１０９を提出することができるネットワーク１０４とは、ユーザまたはユーザエンティティからクラウドベースのインフラストラクチャ１０５へのプログラムの送信を少なくともサポートするように構成されたネットワークを指すことがある。いくつかの例によれば、ネットワーク１０４は、複数のネットワーク端末間の通信を提供するためにインターネットを含んでもよい。したがって、ネットワーク１０４は、ユーザ端末、例えば、古典コンピューティングデバイスとクラウドベースのインフラストラクチャ１０５との間のリアルタイム通信データストリームをサポートしてもよい。
【００２５】
クラウドベースのインフラストラクチャ１０５とは、サーバ１０６Ａおよび１０６Ｂを含む複数のサーバを有するサービスプロバイダのデータセンタを指すこともあり、古典コンピューティングデバイスＣＰＵ１１５Ａ〜１１５Ｍおよび量子コンピューティングデバイス１２０Ａ〜１２０Ｎを含むコンピューティングデバイスを指すこともある。コンピューティングデバイスは、単一または複数のマシンによって実装されてもよいことに留意すべきである。さらに、クラウドベースのインフラストラクチャ１０５は、単一の組織のために運用されてもよい。このようなインフラストラクチャを運用、管理、および／またはホストするそのような組織の非限定的な例としては、Ａｍａｚｏｎ（登録商標）、Ｍｉｃｒｏｓｏｆｔ（登録商標）、Ｇｏｏｇｌｅ（登録商標）、ＩＢＭ（登録商標）などが挙げられるが、これらに限定されるものではない。
【００２６】
サーバ１０６Ａおよび１０６Ｂとは、クラウドベースのインフラストラクチャ１０５上にホストされた数百から数千のオーダーのサーバ上の複数のサーバのうちの２つを指すこともある。これらのサーバは、少なくともネットワーク１０４を介してまたはユーザエンティティからプログラム１０７および１０９を受信するように構成されている。サーバ１０６Ａおよび１０６Ｂは、プログラム１０７および１０９の実行の部分的または完全な結果１０８および１１０をそれぞれ受信および／または記憶し、そのような結果を、ネットワーク１０４を介してユーザまたはユーザエンティティに返すようにさらに構成されていてもよい。サーバ１０６Ａおよび１０６Ｂのいずれも、ハイブリッドプログラム、古典プログラム、または量子プログラムのみを受信することに限定されない。したがって、本明細書に別段の記載がない限り、サーバ１０６Ａ、１０６Ｂのいずれかで受信されるか、またはサーバ１０６Ａ、１０６Ｂから送信される可能性のあるプログラムの種類の間に区別はないはずである。さらに、文脈が別段必要としない限り、以下では、サーバ１０６への参照を意味することもあるが、これは、本明細書に記載された量子ハイブリッド計算の実施形態の精神または範囲から逸脱することなく、サーバ１０６Ａおよび１０６Ｂのいずれかを参照することを意味し得る。また、サーバ１０６Ａおよび１０６Ｂは、単一または複数のマシンによって実装されてもよく、プログラム１０７および１０９は、単一または複数の接続またはチャネルを介してサーバ１０６Ａおよび１０６Ｂに提出されてもよいことにも留意すべきである。すなわち、少なくとも１つの例示的な実施形態によれば、サーバ１０６Ａおよび１０６Ｂは、単一のサーバとして実装されてもよく、いずれかのサーバに帰属するものとして本明細書に記載されている少なくともすべての機能を実行してもよい。
【００２７】
プログラム１０７とは、ユーザまたはユーザエンティティから、ネットワーク１０４を介して、受信された、および／またはサーバ１０６によって記憶された１つ以上のプログラムを指すこともある。プログラム１０７は、第一のコンピューティング環境での実行を意図した第一の言語で記述された１つ以上の実行可能なコンポーネントまたは機能と、第二のコンピューティング環境での実行を意図した第二の言語で記述された１つ以上の実行可能なコンポーネントまたは機能とを含んでもよい。第一の言語は、古典コンピューティングプログラミング言語であってもよく、第二の言語は、量子コンピューティング言語、例えば、Ｐｙｔｈｏｎ（登録商標）であってもよい。
【００２８】
より具体的には、プログラム１０７は、ネットワーク１０４を介してユーザまたはユーザエンティティから受信された、および／またはサーバ１０６によって記憶された、１つ以上のプログラムを指してもよい。プログラム１０７は、１つ以上の古典コンピューティングプログラムおよび／または１つ以上のハイブリッドプログラム１１２を含んでもよい。古典コンピューティングプログラムは、古典プログラミング言語で記述されてもよく、本明細書では説明しない。
【００２９】
ハイブリッドプログラム１１２は、典型的には古典環境で記述またはプログラムされ、１つ以上の古典コンポーネントまたは機能と、１つ以上の量子回路１２５とを含んでもよい。古典コンポーネントまたは機能は、それぞれのコンピューティング環境、例えば、非限定的に、機能、言語、ライブラリなどのいずれかに本質的に関連する特徴に基づいて、量子回路と区別されてもよい。例えば、プログラム１０７は、Ｐｙｔｈｏｎソフトウェア開発キット（ＳＤＫ）を使用して記述またはプログラムされてもよく、１つ以上の量子科学的計算を実行する命令を含んでもよい。したがって、サーバ１０６Ａは、受信したプログラム１０７が古典コンピューティングコンポーネントまたは機能を含み、および／または古典コンピューティング言語で記述され、量子コンピューティング機能を含み、および／または量子コンピューティング言語で記述されている場合、受信したプログラム１０７がハイブリッドプログラムであることを識別してもよい。本明細書で参照されるＳＤＫは、特定の量子言語に限定されない。
【００３０】
結果１０８とは、ＣＰＵ１１５Ａ〜１１５Ｍのうちの１つ以上のＣＰＵ上で実行された１つ以上の古典コンピューティングプログラムの実行からの反復的または累積的な結果を指すこともある。さらに、または代替として、結果１０８は、ＣＰＵ１１５Ａ〜１１５Ｍのうちの１つ以上のＣＰＵとＱＰＵ１２０Ａ〜１２０Ｎのうちの１つ以上のＱＰＵとのハイブリッドプログラム１１２の実行による結果１１３を含んでもよい。さらに、結果１１３は、ハイブリッドプログラム１１２の実行による反復的または累積的な結果を含んでもよい。結果１０８は、サーバ１０６に記憶されてもよく、および／またはネットワーク１０４を介してユーザまたはユーザエンティティに返されてもよい。
【００３１】
プログラム１０９とは、ネットワーク１０４を介してユーザまたはユーザエンティティから受信された、および／またはサーバ１０６によって記憶された、１つ以上のプログラムを指すこともある。プログラム１０９は、量子コンピューティング環境での実行を意図した古典環境で記述された、またはプログラムされた少なくとも１つ以上のＱＰＵ回路１１７を含んでもよい。このように、プログラム１０９の中に含まれるＱＰＵ回路１１７は、完全に量子コンピューティング言語で記述またはプログラムされていてもよいし、量子回路のみを含んでいてもよい。
【００３２】
結果１１０とは、ＱＰＵ１２０Ａ〜１２０Ｎのうちの１つ以上のＱＰＵ上で実行されるプログラム１０９に含まれるＱＰＵ回路１１７の実行による反復的または累積的な結果を指すこともある。結果１１０は、サーバ１０６に記憶されてもよく、および／またはネットワーク１０４を介してユーザまたはユーザエンティティに返されてもよい。
【００３３】
古典コンピューティングデバイスＣＰＵ１１５Ａ〜１１５Ｍとは、ハイブリッドプログラム１１２が少なくとも管理され、その結果の少なくとも一部が測定または照合される古典コンピュータ、処理装置、および／または個々のプロセッサさえも含む古典コンピューティング環境の１つ以上の実施形態を指すことができる。
【００３４】
ＣＰＵ１１５Ａ〜１１５Ｍは、ハイブリッドプログラム１１２をハイブリッドジョブキューに受信することであって、ハイブリッドジョブキューは、ＣＰＵ１１５の１つ以上の実施形態に含まれるか、またはそうでなければ関連付けられたメモリまたはストレージコンポーネントまたはデバイスであることと、ハイブリッドプログラムを管理することであって、１つ以上の古典コンポーネントまたは機能の実行をＣＰＵ１１５Ａ〜１１５Ｍの任意の１つ以上に割り当てることを含むことと、１つ以上の量子回路１２５の実行をＱＰＵ１２０Ａ〜１２０Ｎの任意の１つ以上に割り当てることと、割り当てられた処理装置上の古典コンポーネントまたは機能および回路１２５の処理をスケジューリングすることと、古典コンポーネントまたは機能および回路１２５の実行を開始することと、それぞれの古典コンポーネントまたは機能の結果１１３と量子回路１２５の結果１２７を含むハイブリッドプログラム１１２の反復的および／または累積的な結果を照合することと、を行い得る。
【００３５】
ＣＰＵ１１５Ａ〜１１５Ｍは、処理および／または時間のマイルストーンに達するまで、ハイブリッドプログラム１１２の処理を数十万回のオーダーで反復的に管理してもよい。そのようなマイルストーンの一般的な例は、所定の反復回数、反復コンピューティングのための時間制限、連続する反復の結果の間の所定の閾値の差などに関係してもよい。
【００３６】
さらに、ＣＰＵ１１５Ｍは、量子ハイブリッド計算の任意の実施形態におけるＣＰＵの数に制限はないことを示すが、文脈が他に必要としない限り、以下では、本明細書に記載された量子ハイブリッド計算の実施形態の精神または範囲から逸脱することなく、ＣＰＵ１１５とすることができる。さらに、本明細書ではＣＰＵに言及しているが、量子ハイブリッド計算の文脈では、古典コンピューティングプロセッサの実施形態は、中央処理ユニット（ＣＰＵ）、グラフィカル処理ユニット（ＧＰＵ）、テンソル処理ユニット（ＴＰＵ）などを含むか、または代替として含むことができるが、これらに限定されない。
【００３７】
量子コンピューティングデバイス１２０Ａ〜１２０Ｎとは、ＱＰＵ回路１１７および量子回路１２５が実行されてもよい量子コンピュータ、処理装置、および／または個々のプロセッサさえも含む量子コンピューティング環境の複数の実施形態を指すこともある。先に述べたように、ＣＰＵ１１５Ａ〜１１５Ｍは、ハイブリッドプログラム１１２の処理を管理してもよい。これに関して、各量子コンピューティングデバイス１２０Ａ〜１２０Ｎは、それぞれの量子デバイス上の処理を調整するための古典コンピューティングインターフェースを有する。
【００３８】
さらに、ＱＰＵ１２０Ｎは、量子ハイブリッド計算の任意の実施形態におけるＱＰＵの数に制限はないことを示すが、文脈上、別段の要求がない限り、以下では、本明細書に記載された量子ハイブリッド計算の実施形態の精神または範囲から逸脱することなく、ＱＰＵ１２０とすることができる。
【００３９】
コネクタ１２６は、ＣＰＵ１１５およびＱＰＵ１２０の様々な組合せを接続してもよい。コネクタ１２６は、ハードウェア接続として、または少なくとも１００ＧＢのオーダーの高速イーサネット（登録商標）接続によって具現化されてもよい。かかわらず、コネクタ１２６の実施形態は、ＣＰＵ１１５とＱＰＵ１２０のいずれかの間のレイテンシおよび／またはラグを最小化することである。したがって、量子ハイブリッド計算の少なくともいくつかの実施形態に従って、ＣＰＵ１１５およびＱＰＵ１２０は、物理的に同一場所に配置されてもよく、すなわち、クラウドベースのインフラストラクチャ１０５に対応するデータセンタ内で、または単一の構造ユニット、例えば、ハウジング、基板、装置内で、コネクタ１２６によって物理的に接続されてもよい。
【００４０】
コネクタ１２６は、しかしながら、単純なコネクタとはみなされないかもしれないし、単純な設計上の選択とはみなされないかもしれない。ＣＰＵ１１５とＱＰＵ１２０上の処理を切り替える際には、キュービットシステムにおいてコヒーレンスが維持される期間が短いため、遅延を最小化することが最優先となる。したがって、ハイブリッドプログラム１１２の多くは、可能な限りＱＰＵ１２０に密着して実行される。また、ハイブリッドプログラム１１２を実行する過程でＣＰＵ１１５およびＱＰＵ１２０によって生成される可能性の高い大量の古典データのために、プロセッサの物理的およびシステム的な分離が増大するにつれて、その間の情報をシャトリングするためのコストが増大する。
【００４１】
しかしながら、代替的な実施形態では、かなりの量のデータ転送および反復データ転送の結果として生じるレイテンシおよび／またはラグを最小化するための技術の開発に従って、ＣＰＵ１１５およびＱＰＵ１２０がコネクタ１２６によって実質的に接続されていることを想定してもよい。
【００４２】
クラウドベースのインフラストラクチャ１０５に、ホストされている、またはそうでなければ、関連付けられているサーバ１０６、ＣＰＵ１１５、およびＱＰＵ１１５の数は、本明細書に記載されている量子ハイブリッド計算の精神または範囲から逸脱することなく、ある実施形態から別の実施形態へと変化してもよい。したがって、ＣＰＵ１１５ＭおよびＱＰＵ１２０Ｎは、量子ハイブリッド計算のいずれの実施形態においても、数が同じであってもよいし、同じでなくてもよい。
【００４３】
図２は、本明細書に記載された少なくともいくつかの実施形態に従って配置された、量子ハイブリッド計算が実装され得るプロセッサのシステム２００の例示的な構成を示す。描かれているように、システム２００は、少なくともＣＰＵ１１５、ＱＰＵ１２０、コネクタ１２６、結果キュー２２９、ハイブリッドジョブキュー２３０、および量子回路キュー２３５を含む。
【００４４】
ＣＰＵ１１５とは、図１に関して本明細書に記載されているように、古典コンピュータ、処理装置、および／または個々のプロセッサさえも含む古典コンピューティング環境の１つ以上の実施形態を指すこともある。描かれているように、ＣＰＵ１１５は、少なくとも、オペレーティングシステム（ＯＳ）２０５、ユーザプログラム２１０、ＱＰＵ  ＡＰＩ２１５、および実行サンドボックス２２０を含む。
【００４５】
ＯＳ２０５は、古典コンピューティングソフトウェアおよびハードウェアコンポーネントを制御するように設計され、プログラムされ、または別の方法で構成された古典コンピューティングオペレーティングシステムを指すこともある。したがって、量子ハイブリッド処理の少なくともいくつかの実施形態に従って、ＯＳ２０５は、ハイブリッドプログラム１１２を受信し、１つ以上の古典コンポーネントまたは機能の実行を任意の１つ以上のＣＰＵ１１５に割り当て、古典コンポーネントまたは機能と、回路１２５との処理をスケジューリングし、および／または優先順位を付け、量子回路１２５の１つ以上を、ＱＰＵ１２０上での最終的な実行のために、ハイブリッドジョブキュー１３０〜１３０Ｎの任意の１つ以上に割り当て、ハイブリッドプログラム１１２の実行を開始し、ハイブリッドプログラム１１２の反復および／または累積結果を照合するように設計され、プログラムされ、または別の方法で構成されてもよい。
【００４６】
ハイブリッドジョブキュー２３０Ａ〜２３０Ｎは、ＣＰＵ１１５の１つ以上の実施形態に含まれるか、そうでなければ関連するメモリまたはストレージコンポーネントまたはデバイスを指すこともある。量子回路は線形であるため、ハイブリッドプログラム１１２に含まれる量子回路は、バッチ処理と同様に、キューに入れられてもよい。したがって、ハイブリッドジョブキュー２３０Ａ〜２３０Ｎは、ＱＰＵ１２０の１つ以上の割り当てられた実施形態においてスケジューリングされたまたは優先的に実行するための量子回路１２５を記憶するように設計され、プログラムされ、または別の方法で構成されてもよい。
【００４７】
ユーザプログラム２１０とは、ハイブリッドプログラム１１２に対応する古典コンポーネントまたは機能を実行するように設計され、プログラムされ、または別の方法で構成されたプログラムを指すこともある。そのような実行の結果は、反復的または累積的に、結果キュー２２９Ａ〜２２９Ｎのうちの１つ以上に送信または提出されてもよい。
【００４８】
実行サンドボックス２２０は、ＱＰＵ  ＡＰＩ（アプリケーションプログラミングインターフェース）２１５を利用して、ＯＳ２０５によって制定されたスケジューリングおよび優先順位付けに従って、量子回路１２５をＱＰＵ１２０の割り当てられた１つに送信または提出してもよい。このように、実行サンドボックス２２０は、回路１２５が送信または提出され、結果１２７が受信されるにつれて、ＱＰＵ１２０との相互作用において隔離されてもよい。回路１２５の実行からの結果１２７は、反復的または累積的に、結果キュー２２９Ａ〜２２９Ｎに送信または提出されてもよい。
【００４９】
実行サンドボックス２２０は、また、ＱＰＵ１２０における実行の反復結果に基づいて回路１２５を更新または置換するように、次いで、更新されたまたは新しい回路をＱＰＵ１２０に送信または提出して反復処理を継続するように設計され、プログラムされ、または別の方法で構成されていてもよい。
【００５０】
さらに、実行サンドボックス２１５の別個のインスタンスが各回路１２５のために利用され、これにより、複数の回路の並列実行が容易になる。
【００５１】
ハイブリッドプログラム１１２のそのようなコンピューティングは、処理および／または時間のマイルストーンに到達するまで、数十万回のオーダーで反復計算を続けてもよい。そのようなマイルストーンの非限定的な例は、所定の反復回数、反復コンピューティングのための時間制限、連続する反復の結果の間の所定の閾値の差などに関係してもよい。
【００５２】
結果キュー２２９Ａ〜２２９Ｎは、ＣＰＵ１１５の１つ以上の実施形態に含まれるか、そうでなければ関連するメモリまたはストレージコンポーネントまたはデバイスであってもよい。結果キュー２２９Ａ〜２２９Ｎは、対応する古典コンポーネントまたは機能と量子回路の実行を含むハイブリッドプログラム１１２の実行結果の反復的および累積的な結果を記憶するように設計され、プログラムされ、または別の方法で構成されてもよい。
【００５３】
量子回路は、分離して実行されてもよい。したがって、ＱＰＵ１２０の実施形態がＱＰＵ回路１１７を受信するが、受信した回路を実行できない場合、ＱＰＵ回路１１７は、回路キュー２３５Ａ〜２３５Ｎのうちの１つ以上に割り当てられてもよい。
【００５４】
回路キュー２３５Ａ〜２３５Ｎとは、ＱＰＵ１２０の１つ以上の実施形態に含まれるか、またはそうでなければ関連するメモリまたはストレージコンポーネントまたはデバイスを指すこともある。回路キュー２３５Ａ〜２３５Ｎは、ＱＰＵ１２０の一実施形態においてスケジューリングされたまたは優先的に実行するためのＱＰＵ回路１１７を記憶するように設計され、プログラムされ、または別の方法で構成されてもよい。ＱＰＵ１２０は、ハイブリッドプログラム１１２に関連付けられた回路１２５のための量子処理を実行するためにＱＰＵ１２０が必要とされるときに、回路キュー２３５Ａ〜２３５Ｎから遮断されること、すなわち、ＱＰＵ回路１１７のいずれかを実行することができないことがある。したがって、回路キュー２３５Ａ〜２３５Ｎのいずれかに記憶されたＱＰＵ回路１１７は、ハイブリッドプログラム１１２に対応する回路１２５のいずれにも割り当てられていないＱＰＵ１２０の実施形態に割り当てられてもよい。
【００５５】
図３は、量子ハイブリッド計算の少なくとも一部を容易にするためのプロセッサ３００の例示的なブロック図構成を示しており、本明細書に記載された少なくともいくつかの実施形態に従って配置されている。描かれているように、プロセッサ３００は、システム１００および２００に関して本明細書に記載されているＣＰＵ１１５の任意の１つに対応することができ、さらに、プロセッサ３００は、少なくとも、受信機３０５、アービタ３１０、スケジューラ３１５、およびマネージャ３２０を含む。
【００５６】
受信機３０５は、ネットワーク、例えば、インターネットを介して、ユーザまたはユーザエンティティから少なくともハイブリッドプログラムを受信するように設計され、プログラムされ、または別の方法で構成されたコンポーネントまたはモジュールを指すこともある。ハイブリッドプログラムとは、古典コンピューティング環境でプログラムされ、その少なくとも一部の機能が量子コンピューティング環境での実行を意図している量子プログラムまたは反復プロセスを指すこともある。
【００５７】
アービタ３１０は、受信したハイブリッドプログラムに対応する１つ以上の古典コンポーネントまたは機能の実行を１つ以上の古典処理装置に割り当て、１つ以上の量子回路の実行を任意の１つ以上の量子的な処理装置に割り当てるように設計され、プログラムされ、または別の方法で構成されたコンポーネントまたはモジュールを指すこともある。アービタ３１０は、古典処理または量子処理のいずれかに本質的に関連する機能の１つまたは複数の特徴に基づいて、上記で参照したような機能を割り当ててもよい。そのような特徴は、当技術分野で知られていてもよく、したがって、本明細書には記載されていない。さらに、機能が、古典コンピューティング環境または量子コンピューティング環境のいずれかにおいて、複数のプロセッサによって実行されることが可能である場合、アービタ３１０は、ヒューリスティックおよびプロセッサの特徴的な性能プロファイルに基づいて、機能をそれぞれのプロセッサに割り当ててもよい。
【００５８】
スケジューラ３１５とは、古典コンポーネントまたは機能のための処理とアービタ３１０によって割り当てられた回路処理とをスケジューリングするように設計され、プログラムされ、または別の方法で構成されたコンポーネントまたはモジュールを指すこともある。スケジューリングの一部として、スケジューラ３１５は、古典コンピューティング環境と量子コンピューティング環境の両方において、それぞれの機能の実行に優先順位を付けてもよい。スケジューラ３１５は、最適化を目的として、また、機能間の依存性、すなわち並列化に基づいて、スケジューリングに優先順位を付けてもよい。
【００５９】
マネージャ３２０は、受信したハイブリッドプログラムの実行を管理するように設計され、プログラムされ、または別の方法で構成されているコンポーネントまたはモジュールを指すこともある。例えば、マネージャ３２０は、古典コンポーネントまたは機能と、ハイブリッドプログラムに対応する量子回路との実行を開始することと、古典コンピューティング環境量子コンピューティング環境とのプロセッサ間での、機能の実行結果を部分的に転送することであって、その転送は、実行に適したいずれかの方向である、ことと、処理および／または時間のマイルストーンに到達するまで、数十万回のオーダーの反復のためのハイブリッドプログラムの反復および／または累積結果を照合することとを行ってもよい。このようなマイルストーンの非限定的な例としては、所定の反復回数、反復コンピューティングのための時間制限、連続する反復の結果の間の所定の閾値の差などに関係してもよい。
【００６０】
ハイブリッドプログラム１１２の実行を管理する一環として、マネージャ３２０は、ハイブリッドプログラム１１２のソースコード内の命令に従って、ＣＰＵ１１５からＱＰＵ１２０に、またはその逆に処理を切り替える命令を、実行するように、例えば、ＱＰＵ１２０の特定の１つに回路１２０を実行する命令を実行するように設計され、プログラムされ、または別の方法で構成されてもよい。プロセッサを変更する命令は、いずれかのコンピューティング環境内で、それぞれの環境がハイブリッドアプリケーション１２０に公開する任意のソフトウェアライブラリまたはＳＤＫによって使用されてもよく、または、命令は、より適切なプロセッサが使用されるべきであると判断されたときに、それぞれのコンピューティング環境によってプログラム的に挿入されてもよく、例えば、ドメイン固有言語のコンパイラによって挿入された別のデバイスに切り替えるコマンドなどが挙げられる。
【００６１】
図４は、ハイブリッド計算の少なくとも一部が実装される例示的な処理フロー４００を示し、本明細書に記載された少なくとも一部の実施形態に従っている。描かれているように、処理フロー４００は、クラウドベースのインフラストラクチャ１０５上にホストされたシステム１００および２００に含まれるプロセッサ３００の様々なコンポーネントによって実行されるサブプロセスを含む。しかしながら、処理フロー４００は、本明細書で説明したサブプロセスのうちの２つ以上のサブプロセスを並べ替えること、サブプロセスのうちの少なくとも１つを除去すること、さらなるサブプロセスを追加すること、コンポーネントを置換すること、または以下の説明で他のコンポーネントに応じてサブプロセスの役割を担う様々なコンポーネントを有することによって、明白な修正がなされてもよいので、このようなコンポーネントに限定されるものではない。処理フロー４００は、ブロック４０５、４０４、４１０、４１５、４２０、４２５、４３０、４３５、４４０、４４５、および／または４５０のうちの１つ以上のブロックによって図示されるような様々な操作、機能、または動作を含んでもよい。これらの様々な操作、機能、または動作は、例えば、機能を実行させるプロセッサによって実行可能なソフトウェア、プログラムコード、またはプログラム命令に対応してもよい。処理は、ブロック４０５で開始されてもよい。
【００６２】
ブロック４０５（プログラムを受信する）において、サーバ１０６は、ネットワーク１０４を介して、ユーザまたはユーザエンティティからハイブリッドプログラムを受信してもよい。処理は、決定ブロック４１０に進んでもよい。
【００６３】
決定ブロック４１０（ハイブリッドプログラムか？）において、サーバ１０６は、受信したプログラムがハイブリッドプログラムであるかどうかを決定してもよい。この決定は、様々な基準に基づいて行われてもよく、例えば、受信したプログラムは、古典コンピューティングコンポーネントまたは機能を含み、および／または古典コンピューティング言語で記述されており、さらに、量子コンピューティング機能を含み、および／または量子コンピューティング言語で記述されている。サーバ１０６は、古典コンピューティングコンポーネントまたは機能を、機能、言語、ライブラリなどのような、これらに限定されないが、それぞれのコンピューティング環境のいずれかに本質的に関連する特徴に基づいて、量子回路から区別してもよい。例えば、プログラム１０７は、Ｐｙｔｈｏｎソフトウェア開発キット（ＳＤＫ）を使用して記述またはプログラムされてもよく、１つ以上の量子科学計算を実行する命令を含んでもよい。したがって、サーバ１０６は、本明細書に記載される例に従って、受信したプログラム１０７がハイブリッドプログラムであると決定してもよい。
【００６４】
受信したプログラム１０７がハイブリッドプログラムではなく（ＮＯ）、むしろ古典コンピューティングプログラムである場合、すなわち、受信したプログラム１０７が古典コンピューティングコンポーネントのみを含むことをサーバ１０６が検出した場合、処理はブロック４４０に進んでもよい。受信したプログラムがハイブリッドプログラムである場合（ＹＥＳ）、処理はブロック４１５に進んでもよい。
【００６５】
ブロック４４０（ジョブを実行する）において、古典コンピューティングプログラムは、ＣＰＵ１１５の１つ以上の実施形態において実行されてもよく、ブロック４３０において結果が照合されてもよい。
【００６６】
受信したプログラムがハイブリッドプログラムではなく（ＮＯ）、むしろ量子コンピューティングプログラムである場合、すなわち、受信したプログラム１０９が量子回路のみを含むことをサーバ１０６が検出した場合、処理はブロック４４５に進んでもよい。
【００６７】
ブロック４４５（回路にＱＰＵを送る）において、量子回路は、処理のためにＱＰＵ１２０の１つに直接送信されてもよいし、処理を待つために回路キュー２３５Ａ〜２３５Ｎの１つに送信されてもよく、ブロック４５０において実施が行われる。そのような処理の結果は、ブロック４３０で照合されてもよい。
【００６８】
ブロック４１５（適切なプロセッサへの割り当て）において、アービタ３１０は、１つ以上の古典コンポーネントまたは機能の実行をＣＰＵ１１５の任意の１つ以上に割り当て、ハイブリッド回路に関連付けられた１つ以上の量子回路の実行をＱＰＵ１２０の任意の１つ以上に割り当ててもよい。処理は、ブロック４２０に進んでもよい。
【００６９】
ブロック４２０（処理をスケジューリングする）において、スケジューラ３１５は、ブロック４１５で割り当てられた処理装置上で、古典コンポーネントまたは機能と、ハイブリッド回路に関連付けられた量子回路のための処理をスケジューリングしてもよい。スケジューリングは、ハイブリッドプログラムに書き込まれてもよい任意の基準に基づいて、処理の優先順位付けであってもよく、処理を最適化し、実行されるプロセスおよび／または回路間の並列化、リソース割り当てなどを容易にする。処理は、ブロック４２５に進んでもよい。
【００７０】
ブロック４２５（処理を開始する）において、マネージャ３２０は、ブロック４１０でのスケジューリングまたは優先順位付けに基づいて、古典コンポーネントまたは機能と、ハイブリッドプログラムに関連付けられた回路の実行を開始してもよい。そのような実行は、量子回路を処理のためにＱＰＵ１２０のうちの１つに送ること、または処理を待つために回路キュー２３５Ａ〜２３５Ｎのうちの１つに送ることを含んでもよい。処理フロー４００は、ブロック４３０に進んでもよい。
【００７１】
ブロック４３０（結果を照合する）において、マネージャ３２０は、ハイブリッドプログラム１１２の反復および／または累積結果を照合してもよく、これは、それぞれの古典コンポーネントまたは機能の結果と、ハイブリッドプログラムに対応する量子回路の結果とを含む。すなわち、反復処理の少なくとも１つの既知の例に従って、開始されたハイブリッドプログラムは、対応する結果を生成して、量子回路を生成する古典コードを実行することを含む。そのような処理の複数の反復は、完了するまで実行される。処理は、ブロック４３５に進んでもよい。
【００７２】
ブロック４３５（管理する）において、マネージャ３２０は、処理および／または時間のマイルストーンに到達するまで、ハイブリッドプログラムの処理を数十万回のオーダーで反復的に管理することをさらに行ってもよい。そのようなマイルストーンの例は、所定の反復回数、反復コンピューティングのための時間制限、連続する反復の結果の間の所定の閾値の差などに関係してもよい。したがって、管理は、さらに、以前の反復の反復結果または累積結果のいずれかに基づいて、ハイブリッドプログラムに対応する実行された量子回路を更新または置換することを含んでもよい。処理は、適切なマイルストーンに到達したか否かに基づいて進行してもよいし、終了してもよい。
【００７３】
図５は、例示的なコンピューティングの実施形態を示し、量子ハイブリッド計算のプロセスおよびサブプロセスのいずれかが、コンピュータ可読媒体に記憶されたコンピュータ可読命令として実装されてもよい。コンピュータ可読命令は、例えば、本明細書で参照されるように、ネットワーク要素および／またはそれに対応する任意の他のデバイスを有するデバイスのプロセッサによって実行されてもよく、特に、量子ハイブリッド計算のためのシステム１００および２００に対応する上述のアプリケーションおよび／またはプログラムに適用されてもよい。
【００７４】
非常に基本的な構成において、コンピューティングデバイス５００は、典型的には、１つ以上のプロセッサ５０２、システムメモリ５０４、１つ以上の入力コンポーネント５０６、１つ以上の出力コンポーネント５０８、ディスプレイコンポーネント５１０、コンピュータ可読媒体５１２、およびトランシーバ５１４を少なくとも含んでもよい。
【００７５】
プロセッサ５０２とは、例えば、マイクロプロセッサ、マイクロコントローラ、デジタル信号プロセッサ、またはそれらの任意の組合せを指すこともある。
【００７６】
メモリ５０４とは、例えば、揮発性メモリ、不揮発性メモリ、またはそれらの任意の組み合わせを指すこともある。メモリ５０４は、その中に、オペレーティングシステム２０５、アプリケーション、および／またはプログラムデータを記憶してもよい。すなわち、メモリ５０４は、上述した機能または操作のいずれかを実装するための実行可能な命令を記憶し得るので、メモリ５０４は、コンピュータ可読媒体とみなされることもある。
【００７７】
入力コンポーネント５０６とは、内蔵または通信可能に結合されたキーボード、タッチスクリーン、または通信デバイスを指すこともある。あるいは、入力コンポーネント５０６は、メモリ５０４に記憶されていてもよい音声認識プログラムと協働して、コンピューティングデバイス５００のユーザからの音声コマンドを受信するように構成されたマイクロフォンを含んでもよい。さらに、入力コンポーネント５０６は、コンピューティングデバイス５００に内蔵されていない場合、無線周波数またはブルートゥース（登録商標）を含むがこれに限定されない近距離通信プロトコルを介して通信的に結合されてもよい。
【００７８】
出力コンポーネント５０８とは、コマンドおよびデータを外部デバイスに出力するように構成された、コンピューティングデバイス５００に内蔵された、または取り外し可能なコンポーネントまたはモジュールを指すこともある。
【００７９】
ディスプレイコンポーネント５１０とは、例えば、タッチ入力機能を有し得るソリッドステートディスプレイを指すこともある。すなわち、ディスプレイコンポーネント５１０は、入力コンポーネント５０６の機能と共有または置換され得る機能を含んでもよい。
【００８０】
コンピュータ可読媒体５１２とは、上述した機能または操作のいずれかを具現化する１つ以上のプログラムを記憶するように構成された分離可能な機械可読媒体を指してもよい。すなわち、コンピュータ可読媒体５１２は、コンピューティングデバイス５００のドライブコンポーネントに受信されてもよいし、そうでなければ接続されてもよく、上述した機能または操作のいずれかを実装するための実行可能な命令を記憶してもよい。これらの命令は、メモリ５０４によって記憶された命令とは補完的であってもよいし、そうでなければ独立していてもよい。
【００８１】
トランシーバ５１４とは、有線ネットワークまたは直接有線接続として構成された、コンピューティングデバイス５００のためのネットワーク通信リンクを指すこともある。代替として、トランシーバ５１４は、無線接続、例えば、無線周波数（ＲＦ）、赤外線、ブルートゥース、および他の無線プロトコルとして構成されてもよい。
【００８２】
前述から、本開示の様々な実施形態が、例示の目的で本明細書に記載されており、本開示の範囲および精神から逸脱することなく、様々な修正がなされ得ることが理解されるであろう。したがって、本明細書に開示された様々な実施形態は、限定することを意図しておらず、真の範囲および精神は、以下の請求項によって示される。
【図１】
2021530783.tif 000003
【図２】
2021530783.tif 000004
【図３】
2021530783.tif 000005
【図４】
2021530783.tif 000006
【図５】
2021530783.tif 000007
【国際調査報告】
2021530783.tif 000008