(57)【特許請求の範囲】
【請求項１】
量子プロセッサ（ｑプロセッサ）を備える量子クラウド計算ノード（ＱＣＣＮ）と、２値の計算のために構成された従来のプロセッサを備える従来の計算ノード（ＣＣＮ）とを備える量子クラウド環境（ＱＣＥ）に適用される方法であって、
前記ｑプロセッサの構成と、前記ＱＣＥにサブミットされたジョブの一部分（ｑ部分）における第１の命令において要求される演算の間の適合性を確かめること、
前記確かめることに応答して、前記第１の命令に対応する量子命令（ｑ命令）を構築すること、
量子出力信号（ｑ信号）を生成すべく前記ＱＣＣＮの前記ｑプロセッサを使用して前記ｑ命令を実行すること、
前記ｑ信号を、対応する量子計算結果（ｑ結果）に変換すること、および
前記ジョブをサブミットしたサブミットするシステムに最終結果を戻すことであって、前記最終結果が、前記ｑ結果を備える、前記戻すこと
を含む、方法。
【請求項２】
訂正されたｑ信号を生成すべく、前記ｑプロセッサに関連付けられたハードウェアを使用して前記ｑ信号における誤差を訂正することをさらに含む、請求項１に記載の方法。
【請求項３】
前記ｑ信号を復調すること、
前記ｑ信号をデジタル化すること、および
前記デジタル化されたｑ信号から初期量子計算結果（初期ｑ結果）を抽出することをさらに含む、請求項１または２に記載の方法。
【請求項４】
前記初期ｑ結果を後処理することであって、後処理することが、前記ｑ結果を獲得すべく、前記初期ｑ結果に統計モデルを適用することを備え、かつ前記ｑ結果が、前記ｑプロセッサによって計算された正しい結果であることの閾値より高い確率を有する、前記後処理することをさらに備える、請求項３に記載の方法。
【請求項５】
前記ｑ命令が、量子命令言語を使用して符号化される、請求項１ないし４のいずれかに記載の方法。
【請求項６】
前記量子命令言語が、量子アセンブリ言語（ＱＡＳＭ）を備える、請求項５に記載の方法。
【請求項７】
前記ｑ部分における第２の命令が、前記ＱＣＣＮにおけるｑプロセッサの量子計算構成と適合しないと判定することに応答して、前記第２の命令に対応する従来の命令を構築すること、および
前記ＱＣＥにおける前記ＣＣＮ上で前記従来の命令を実行すること
をさらに含む、請求項１ないし６のいずれかに記載の方法。
【請求項８】
前記ＣＣＮ上で前記従来の命令を実行することから従来の結果を獲得すること、および
前記最終結果を生成すべく前記従来の結果を前記ｑ結果と組み合わせること
をさらに含む、請求項７に記載の方法。
【請求項９】
前記ジョブにおける第２の部分における命令に対応して、従来の命令を構築すること、および
前記ＱＣＥにおける前記ＣＣＮ上で実行されるように前記従来の命令をスケジュールすること
をさらに含む、請求項１ないし８のいずれかに記載の方法。
【請求項１０】
前記ＱＣＣＮが、前記ＱＣＥにおいて動作するセットのＱＣＣＮのうちの１つであり、かつ前記ＣＣＮが、前記ＱＣＥにおいて動作するセットのＣＣＮのうちの１つである、請求項１ないし９のいずれかに記載の方法。
【請求項１１】
前記ｑプロセッサの前記構成が、前記ｑプロセッサにおいて利用可能ないくつかの量子ビットを備え、かつ前記確かめることが、前記演算が前記いくつかの量子ビットを使用して実行可能であると判定することを備える、請求項１ないし１０のいずれかに記載の方法。
【請求項１２】
前記ｑプロセッサの前記構成が、前記ｑプロセッサによって実行されるように構成されたタイプの演算を備え、かつ前記確かめることが、前記第１の命令において要求される前記演算が、前記ｑプロセッサにおいて構成された第２の演算を使用して実行可能であると判定することであって、前記第２の演算が、量子ビットのセットを使用する、前記判定することを備える、請求項１ないし１１のいずれかに記載の方法。
【請求項１３】
前記ｑプロセッサの前記構成が、前記ｑプロセッサによって生成される前記ｑ信号の誤差率を備え、前記確かめることが、前記ｑ部分の許容誤差が前記誤差率と少なくとも等しいと判定することを備える、請求項１ないし１２のいずれかに記載の方法。
【請求項１４】
前記ジョブにおいて、前記ｑ部分に関連付けられた指標を使用して前記ｑ部分を識別することであって、前記指標が、量子計算に対する前記ｑ部分の適合性を参照する、前記識別することをさらに含む、請求項１ないし１３のいずれかに記載の方法。
【請求項１５】
前記ジョブにおいて、前記第１の命令において要求される前記演算を使用する前記ｑ部分を識別することであって、前記演算が、前記ｑプロセッサを使用して前記ＱＣＣＮにおいて構成される、前記識別することをさらに含む、請求項１ないし１４のいずれかに記載の方法。
【請求項１６】
量子プロセッサ（ｑプロセッサ）を備える量子クラウド計算ノード（ＱＣＣＮ）と、
２値の計算のために構成された従来のプロセッサを備える従来の計算ノード（ＣＣＮ）とを備える量子クラウド環境（ＱＣＥ）であって、
前記従来のプロセッサを使用して実行されたとき、
前記ＱＣＣＮの前記ｑプロセッサの構成と、前記ＱＣＥにサブミットされたジョブの一部分（ｑ部分）における第１の命令において要求される演算の間の適合性を確かめること、
前記確かめることに応答して、前記第１の命令に対応する量子命令（ｑ命令）を構築すること、
量子出力信号（ｑ信号）を生成すべく前記ＱＣＣＮの前記ｑプロセッサを使用して前記ｑ命令を実行すること、
前記ｑ信号を、対応する量子計算結果（ｑ結果）に変換すること、および
前記ジョブをサブミットしたサブミットするシステムに最終結果を戻すことであって、前記最終結果が、前記ｑ結果を備える、前記戻すことを備える機能をもたらすコンピュータ使用可能プログラム・コードと
を備える、量子クラウド環境。
【請求項１７】
前記機能が、訂正されたｑ信号を生成すべく、前記ｑプロセッサに関連付けられたハードウェアを使用して前記ｑ信号における誤差を訂正することをさらに備える、請求項１６に記載の量子クラウド環境。
【請求項１８】
前記機能が、
前記ｑ信号を復調すること、
前記ｑ信号をデジタル化すること、および
前記デジタル化されたｑ信号から初期量子計算結果（初期ｑ結果）を抽出することをさらに備える、請求項１６または１７に記載の量子クラウド環境。
【請求項１９】
前記機能が、
前記初期ｑ結果を後処理することであって、後処理することが、前記ｑ結果を獲得すべく、前記初期ｑ結果に統計モデルを適用することを備え、かつ前記ｑ結果が、前記ｑプロセッサによって計算された正しい結果であることの閾値より高い確率を有する、前記後処理することをさらに備える、請求項１８に記載の量子クラウド環境。
【請求項２０】
前記ｑ命令が、量子命令言語を使用して符号化される、請求項１６ないし１９のいずれかに記載の量子クラウド環境。
【請求項２１】
前記量子命令言語が、量子アセンブリ言語（ＱＡＳＭ）を備える、請求項２０に記載のＱＣＥ。
【請求項２２】
コンピュータ可読媒体上に記憶され、かつデジタル・コンピュータの内部メモリにロード可能であるコンピュータ・プログラムであって、前記プログラムがコンピュータ上で実行されたとき、請求項１ないし１５のいずれかに記載の方法を実行するためのソフトウェア・コード部分を備える、コンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に、量子計算システムを使用するための方法、システム、およびコンピュータ・プログラム製品に関する。より詳細には、本発明は、量子計算対応のクラウド環境におけるジョブ処理のための方法、システム、およびコンピュータ・プログラム製品に関する。
【背景技術】
【０００２】
以降、語または句における「Ｑ」という接頭辞は、使用される場合に特に明記されない限り、量子計算の脈絡におけるその語または句の参照を示す。
【０００３】
自然は、分子を含め、物理世界が最も基本的なレベルでどのように働くかを探求する物理の部門である、量子力学の法則に従う。このレベルで、粒子は、同時に複数の状態をとり、かつ非常に遠く離れた他の粒子と相互作用する、奇妙な様態で振る舞う。量子計算は、これらの量子現象を利用して情報を処理する。
【０００４】
今日、我々が使用するコンピュータは、旧来のコンピュータ（本明細書において「従来の」コンピュータ、または従来のノードもしくは「ＣＮ」とも呼ばれる）として知られる。従来のコンピュータは、フォン・ノイマン型アーキテクチャとして知られるものにおいて、半導体技術を使用して製造されたプロセッサ、半導体メモリ、および磁気ストレージ・デバイスもしくはソリッドステート・ストレージ・デバイスを使用する。特に、従来のコンピュータにおけるプロセッサは、２値のプロセッサ、すなわち、１と０で表される２値のデータ上で動作する。
【０００５】
量子プロセッサ（ｑプロセッサ）は、計算タスクを実行するのにもつれた量子ビット・デバイス（本明細書において、「量子ビット」、複数の「量子ビット」と簡潔に呼ばれる）の奇妙な性質を使用する。量子力学が働く特定の領域において、物質の粒子は、「オン」状態、「オフ」状態、および同時に「オン」と「オフ」の両方の状態などの、複数の状態で存在することができる。
【０００６】
半導体プロセッサを使用する２値の計算が、オン状態とオフ状態（バイナリ・コードにおける１と０と均等である）だけを使用することに限定されるのに対して、量子プロセッサは、データ計算において使用可能な信号を出力すべく物質のこれらの量子状態を利用する。
【０００７】
従来のコンピュータは、情報をビットに符号化する。各ビットは、１または０の値をとることができる。これらの１および０は、コンピュータ機能を最終的に駆動するオン／オフ・スイッチとして作用する。他方、量子コンピュータは、量子物理学の２つの主要な原理、すなわち、重ね合わせおよびもつれにより働く、量子ビットに基づく。重ね合わせは、各量子ビットが、同時に１と０の両方を表すことができることを意味する。もつれは、重ね合わせにおける量子ビットが、非古典的様態で互いに相関付けられることが可能であること、すなわち、１つのもの（それが１であれ、０であれ）の状態が別のものの状態に依存することが可能であること、および２つの量子ビットが個別に扱われる場合と比べて、２つの量子ビットがもつれている場合に、その２つの量子ビットについてより多くの情報が確かめられることが可能であることを意味する。これら２つの原理を使用して、量子ビットは、情報のより高性能のプロセッサとして働いて、量子コンピュータが、従来のコンピュータを使用しては扱いにくい困難な問題を解決することを可能にする様態で、量子コンピュータが機能することを可能にする。ＩＢＭコーポレーションは、量子プロセッサを構築すること、および量子プロセッサの運用可能性を実証することに成功した（ＩＢＭ（Ｒ）は、米国および他国におけるインターナショナル・ビジネス・マシン・コーポレーションの登録商標である）。
【０００８】
例示的な実施形態は、量子コンピュータまたは量子計算ノード（それぞれ、「ＱＣ」または「ＱＣＮ」）を使用することが、ＣＮを使用することとは大きく異なる課題であることを認識する。現在、クラウド計算環境は、完全にＣＮから構成され、それらのクラウド環境を運用するための方法は、よく知られている。しかし、例示的な実施形態は、少なくとも１つのＱＣＮを含むクラウド環境を運用することが、純粋にＣＮタイプのマシンのクラウドを運用するアーキテクチャまたは方法を使用しては解決されない、完全に異なる問題であることを認識する。
【０００９】
ＱＣＮは、データ計算目的で使用可能であることが証明されている。ＱＣＮを含むクラウド環境は、ＱＣＮに、またはハイブリッド・クラウドにおいてＱＣＮとＣＮの組合せにジョブを指示するＱ特有の機構なしには運用可能でない。したがって、例示的な実施形態は、ｑ計算のために入ってくるデータ処理ジョブの一部分を適合させ、ＱＣＮとＣＮの間のジョブ分割を管理し、ＱＣＮからのｑ信号を適切に適合させてｑ結果にし、ジョブに応答して許容できる結果をもたらすべく、ｑ結果を、ＣＮから獲得された結果と組み合わせることができるシステムが必要とされることを認識する。
【発明の概要】
【発明が解決しようとする課題】
【００１０】
したがって、前述した問題に対処する必要性が当技術分野に存在する。
【課題を解決するための手段】
【００１１】
第１の態様から見て、本発明は、量子クラウド環境（ＱＣＥ）における量子クラウド計算ノード（ＱＣＣＮ）の量子プロセッサ（ｑプロセッサ）の構成と、ＱＣＥにサブミットされたジョブの一部分（ｑ部分）における第１の命令において要求される演算の間の適合性を確かめることであって、ＱＣＥが、ＱＣＣＮと、従来の計算ノード（ＣＣＮ）とを備え、ＣＣＮが、２値の計算のために構成された従来のプロセッサを備える、確かめること、確かめることに応答して、第１の命令に対応する量子命令（ｑ命令）を構築すること、量子出力信号（ｑ信号）を生成すべくＱＣＣＮのｑプロセッサを使用してｑ命令を実行すること、ｑ信号を、対応する量子計算結果（ｑ結果）に変換すること、およびジョブをサブミットしたサブミットするシステムに最終結果を戻すことであって、最終結果が、ｑ結果を備える、戻すことを含む量子クラウド環境（ＱＣＥ）のための方法を提供する。
【００１２】
さらなる態様から見て、本発明は、量子プロセッサ（ｑプロセッサ）を備える量子クラウド計算ノード（ＱＣＣＮ）と、２値の計算のために構成された従来のプロセッサを備える従来の計算ノード（ＣＣＮ）と、従来のプロセッサを使用して実行されたとき、ＱＣＣＮのｑプロセッサの構成と、ＱＣＥにサブミットされたジョブの一部分（ｑ部分）における第１の命令において要求される演算の間の適合性を確かめることであって、ＱＣＥが、ＱＣＣＮと、従来の計算ノード（ＣＣＮ）とを備える、確かめること、確かめることに応答して、第１の命令に対応する量子命令（ｑ命令）を構築すること、量子出力信号（ｑ信号）を生成すべくＱＣＣＮのｑプロセッサを使用してｑ命令を実行すること、ｑ信号を、対応する量子計算結果（ｑ結果）に変換すること、およびジョブをサブミットしたサブミットするシステムに最終結果を戻すことであって、最終結果が、ｑ結果を備える、戻すことを備える機能をもたらすコンピュータ使用可能プログラム・コードとを備える量子クラウド環境（ＱＣＥ）を提供する。
【００１３】
さらなる態様から見て、本発明は、量子クラウド環境（ＱＣＥ）のためのコンピュータ・プログラム製品を提供し、コンピュータ・プログラム製品が、処理回路によって読取り可能であり、かつ本発明のステップを実行するための方法を実行するための処理回路によって実行されるように命令を記憶するコンピュータ可読記憶媒体を備える。
【００１４】
さらなる態様から見て、本発明は、コンピュータ可読媒体上に記憶され、かつデジタル・コンピュータの内部メモリにロード可能であるコンピュータ・プログラムを提供し、プログラムが、プログラムがコンピュータ上で実行されたとき、本発明のステップを実行するためのソフトウェア・コード部分を備える。
【００１５】
例示的な実施形態は、方法、システム、およびコンピュータ・プログラム製品を提供する。実施形態が、量子クラウド環境（ＱＣＥ）における量子クラウド計算ノード（ＱＣＣＮ）の量子プロセッサ（ｑプロセッサ）の構成と、ＱＣＥにサブミットされたジョブの一部分（ｑ部分）における第１の命令において要求される演算の間の適合性を確かめることであって、ＱＣＥが、ＱＣＣＮと、従来の計算ノード（ＣＣＮ）とを備え、ＣＣＮが、２値の計算のために構成された従来のプロセッサを備える、確かめることを行う方法を含む。実施形態は、確かめることに応答して、第１の命令に対応する量子命令（ｑ命令）を構築する。実施形態は、量子出力信号（ｑ信号）を生成すべくＱＣＣＮのｑプロセッサを使用してｑ命令を実行する。実施形態は、ｑ信号を、対応する量子計算結果（ｑ結果）に変換する。実施形態は、ジョブをサブミットしたサブミットするシステムに最終結果を戻すことであって、最終結果が、ｑ結果を備える、戻すことを行う。それゆえ、実施形態が、混合した計算要件のジョブがサブミットされる可能性がある場合、量子計算のためのジョブ適合性を判定すること、および構成された量子プロセッサの１つまたは複数の特性と合致する部分だけに関して量子計算を実行することによって、ＱＣＥにおける量子計算リソースの使用を適切に管理する。
【００１６】
別の実施形態が、訂正されたｑ信号を生成すべく、ｑプロセッサに関連付けられたハードウェアを使用してｑ信号における誤差をさらに訂正する。それゆえ、実施形態が、構成された量子プロセッサによって実行される量子計算の信頼性および安定性を向上させるようにＱＣＥにおける量子計算リソースを運用する。
【００１７】
別の実施形態が、ｑ信号をさらに復調する。実施形態は、ｑ信号をデジタル化する。実施形態は、デジタル化されたｑ信号から初期量子計算結果（初期ｑ結果）を抽出する。それゆえ、実施形態が、量子計算を実行して、ｑ結果を獲得すべくＱＣＥにおける量子計算リソースを信頼できるように運用するための方法を提供する。
【００１８】
別の実施形態が、初期ｑ結果をさらに後処理することであって、後処理することが、新たなｑ結果を獲得すべく、初期ｑ結果に統計モデルを適用することを備え、かつ新たなｑ結果が、ｑプロセッサによって計算された正しい結果であることの閾値より高い確率を有する、後処理することを行う。それゆえ、実施形態が、構成されたｑプロセッサによって実行される量子計算の信頼性および安定性を向上させるようにＱＣＥにおける量子計算リソースを運用する。
【００１９】
別の実施形態において、ｑ命令は、量子命令言語を使用して符号化される。それゆえ、実施形態が、命令がｑプロセッサを使用して実行されることを可能にする特定の様態をもたらす。
【００２０】
別の実施形態において、量子命令言語は、量子アセンブリ言語（ＱＡＳＭ）を備える。それゆえ、実施形態が、命令がｑプロセッサを使用して実行されることを可能にする特定の様態をもたらす。
【００２１】
別の実施形態が、ｑ部分における第２の命令が、ＱＣＣＮにおけるｑプロセッサの量子計算構成と適合しないと判定することに応答して、第２の命令に対応する従来の命令をさらに構築する。実施形態は、ＱＣＥにおけるＣＣＮ上でその従来の命令を実行する。それゆえ、実施形態が、ＱＣＥにおける量子計算リソースと従来の計算リソースの間でジョブを適切に分割する。
【００２２】
別の実施形態が、ＣＣＮ上で従来の命令を実行することから従来の結果をさらに獲得する。実施形態は、最終結果を生成すべく従来の結果をｑ結果と組み合わせる。このため、実施形態が、ＱＣＥにおける量子計算リソースと従来の計算リソースの間でジョブを適切に分割し、分割された実行をジョブ・サブミット側にトランスペアレントにするジョブに関する出力を生成する。
【００２３】
別の実施形態が、ジョブにおける第２の部分における命令に対応して、従来の命令をさらに構築する。実施形態は、ＱＣＥにおけるＣＣＮ上で実行されるように従来の命令をスケジュールする。それゆえ、実施形態が、ＱＣＥにおける量子計算リソースと従来の計算リソースの間でジョブを適切に分割する。
【００２４】
別の実施形態において、ＱＣＣＮは、ＱＣＥにおいて動作するセットのＱＣＣＮのうちの１つであり、かつＣＣＮは、ＱＣＥにおいて動作するセットのＣＣＮのうちの１つである。それゆえ、実施形態が、ＱＣＥを構成する１つの様態をもたらす。
【００２５】
別の実施形態において、ｑプロセッサの構成は、ｑプロセッサにおいて利用可能ないくつかの量子ビットを備え、かつ確かめることは、演算がそのいくつかの量子ビットを使用して実行可能であると判定することを備える。それゆえ、実施形態が、ＱＣＥにおける量子計算リソースを構成し、かつ使用する１つの様態をもたらす。別の実施形態において、ｑプロセッサの構成は、ｑプロセッサによって実行されるように構成されたタイプの演算を備え、かつ確かめることは、第１の命令において要求される演算が、ｑプロセッサにおいて構成された第２の演算を使用して実行可能であると判定することであって、第２の演算が、量子ビットのセットを使用する、判定することを備える。それゆえ、実施形態が、ＱＣＥにおける量子計算リソースを構成し、かつ使用する別の様態をもたらす。
【００２６】
別の実施形態において、ｑプロセッサの構成は、ｑプロセッサによって生成されるｑ信号の誤差率を備え、確かめることは、ｑ部分の許容誤差が誤差率と少なくとも等しいと判定することを備える。それゆえ、実施形態が、ＱＣＥにおける量子計算リソースを構成し、かつ使用する別の様態をもたらす。
【００２７】
別の実施形態が、ジョブにおいて、ｑ部分に関連付けられた指標を使用してｑ部分をさらに識別し、指標が、量子計算に対するｑ部分の適合性を参照する。それゆえ、実施形態が、ジョブが、ＱＣＥにおける量子計算リソースを使用することから利益を得ることができるかどうかを判定するための１つの方法を提供する。
【００２８】
別の実施形態が、ジョブにおいて、第１の命令において要求される演算を使用するｑ部分をさらに識別し、演算が、ｑプロセッサを使用してＱＣＣＮにおいて構成される。それゆえ、実施形態が、ジョブが、ＱＣＥにおける量子計算リソースを使用することから利益を得ることができるかどうかを判定するための１つの方法を提供する。
【００２９】
実施形態が、コンピュータ使用可能プログラム製品を含む。コンピュータ使用可能プログラム製品は、１つまたは複数のコンピュータ可読ストレージ・デバイスと、その１つまたは複数のストレージ・デバイスのうちの少なくとも１つの上に記憶されるプログラム命令とを含む。
【００３０】
実施形態が、コンピュータ・システムを含む。コンピュータ・システムは、１つまたは複数のプロセッサ、１つまたは複数のコンピュータ可読メモリ、および１つまたは複数のコンピュータ可読ストレージ・デバイスと、その１つまたは複数のメモリのうちの少なくとも１つを介してその１つまたは複数のプロセッサのうちの少なくとも１つによって実行されるようにその１つまたは複数のストレージ・デバイスのうちの少なくとも１つの上に記憶されるプログラム命令とを含む。
【００３１】
本発明の特徴的であると考えられるいくつかの新規の特徴が、添付の特許請求の範囲に記載される。しかし、本発明自体、ならびに好ましい使用様態、本発明のさらなる目的および利点は、添付の図面と併せて読まれるとき、例示的な実施形態の後段の詳細な説明を参照することによって理解されることが最良である。
【図面の簡単な説明】
【００３２】
【図１】従来技術による、本発明の好ましい実施形態が実施されることが可能なデータ処理システムのネットワークを示すブロック図である。
【図２】従来技術による、本発明の好ましい実施形態が実施されることが可能なデータ処理システムを示すブロック図である。
【図３】本発明の好ましい実施形態による、量子計算対応のクラウド環境におけるジョブ処理のための例示的な構成を示すブロック図である。
【図４】本発明の好ましい実施形態による、量子計算対応のクラウド環境におけるジョブ処理のためのアプリケーションを示すブロック図である。
【図５】本発明の好ましい実施形態による、量子計算対応のクラウド環境におけるジョブ処理のためのプロセスの一部分を示すフローチャートである。
【図６】本発明の好ましい実施形態による、量子計算対応のクラウド環境におけるジョブ処理のためのプロセスの別の部分を示すフローチャートである。
【発明を実施するための形態】
【００３３】
例示的な実施形態は、現在、利用可能なツールもソリューションも、これらの必要性／問題に対処せず、これらの必要性／問題に対する十分なソリューションを提供することもしないことを認識する。本発明を説明するのに使用される例示的な実施形態は、量子計算対応のクラウド環境におけるジョブ処理によって前述の問題、およびその他の関連する問題に一般的に対処し、解決する。
【００３４】
実施形態が、いくつかのｑ計算ハードウェア構成要素とソフトウェア・アプリケーションの組合せとして実施されることが可能である。実施形態のソフトウェア・アプリケーション部分、または実施形態の１つまたは複数の構成要素の実施態様が、ソフトウェア・アプリケーションが、（ｉ）ＣＮ自体、（ｉｉ）短距離無線、または配線もしくは有線ローカル・エリア・ネットワーク（ＬＡＮ）を介してＣＮと通信するデータ処理システム、および（ｉｉｉ）ワイド・エリア・ネットワーク（ＷＡＮ）を介してＣＮと通信するデータ処理システムの何らかの組合せで実行されて、既存のＣＮの変形形態として構成されることが可能である。
【００３５】
ジョブ送信元は、データ計算を要求するデータ処理ジョブを送信する任意のタイプまたは構成の任意のデータ処理システムである。特に、ジョブ送信元は、クラウド環境にジョブを送信する。例示的な実施形態によれば、クラウド環境は、少なくとも１つのＱＣＮと、実施形態が実行されることが可能な少なくとも１つのＣＮとを含む。そのようなクラウド計算環境は、以降、量子クラウド環境（ＱＣＥ）と呼ばれる。ＱＣＥにおいて動作するＱＣＮは、量子クラウド計算ノード（ＱＣＣＮ）と呼ばれる。
【００３６】
ＱＣＥは、従来の２値の計算を使用して、ジョブを処理するクラスタ、またはそのようなクラスタの部分などの適切な構成で１つまたは複数のＣＮを含んでよい。そのようなＣＮは、本明細書において、従来のクラウド計算ノード（ＣＣＮ）と呼ばれる。
【００３７】
ＱＣＥにおける実施形態が、ジョブを受信する。実施形態は、量子処理を要求している、または量子処理に適した、あるいはその両方である部分がジョブに存在するかどうかを判定する。１つの非限定的な実施例として、ジョブは、量子アセンブリ言語（ＱＡＳＭ）などを含むが、それには限定されない、量子処理言語を使用してジョブ命令の一部分を符号化してよい。実施形態は、そのような一部分を、量子処理を要求しているものとして認識する。
【００３８】
別の非限定的な実施例として、実施形態は、例えば、アセンブリ言語、Ｃ＋＋、またはＪａｖａ（Ｒ）（Ｊａｖａ（Ｒ）は、米国および他国におけるオラクル・コーポレーションの商標である）などの命令セット・アーキテクチャ（ＩＳＡ）に準拠する言語における命令を含むが、それには限定されない従来の処理言語を使用して符号化されている部分におけるジョブ命令のセットを解析してよい。一事例において、実施形態は、そのような部分において要求される演算が、ＱＣＥにおけるＱＣＣＮに実施された特定のｑプロセッサにおいて実施される、またはそのような特定のｑプロセッサを使用して計算可能であると判定してよい。したがって、実施形態は、ジョブにおけるその部分が、所与のＱＣＥにおける量子処理を使用する処理に特に適していると結論付ける。したがって、実施形態は、量子処理のその部分を識別する。
【００３９】
一部の事例において、ジョブ部分は、ＱＡＳＭコードを含めることなどによって、量子処理を要求することが可能であるが、実施形態が、要求される演算、またはコードにおける計算のために必要とされる量子ビット、ジョブ／部分／命令／コードによって許容される誤差率が、実施されるＱＣＣＮにおける量子ビット構成と不適合であると判定する可能性がある。例えば、量子処理命令が、６つの量子ビットを要求する可能性があるが、ＱＣＥにおけるＱＣＣＮが、４つだけの量子ビットを使用して実施される。別の例として、量子処理命令が、ＱＣＥにおけるその特定のＱＣＣＮ構成を使用しては非効率である、または不可能である演算を使用することが可能である。別の例として、量子処理命令を含むジョブが、ＱＣＥにおける特定のＱＣＣＮ構成の出力における誤差より低い、計算に関する許容誤差を有することが可能であり、その許容差によるより低い誤差値を実現すべくＱＣＣＮを使用することが、ＱＣＣＮの非効率な使用である。それゆえ、これら、および他の多くの状況における実施形態が、要求される量子処理にかかわらず、ジョブ、またはジョブの一部分がＣＣＮを使用して計算されるべきことを判定することが可能である。
【００４０】
この様態で動作して、実施形態が、サブミットされたジョブの一部分を、その部分がｑ処理に適する場合に、識別する。ジョブは、実施形態が、ＱＣＣＮを使用するｑ処理に適したものとして識別する、１つまたは複数の部分を含んでよい。さらに、実施形態は、ＣＣＮを使用する従来の計算に適したものとしてジョブの部分をまったく識別しなくても、１つ以上の部分を識別してもよい。
【００４１】
サブミットされたジョブの一部分がｑ処理に適したものとして識別されると、実施形態が、その部分をコンパイルする。実施形態によって実行されるこのコンパイルは、旧来のコード・コンパイルといくつかの点で異なる。例えば、ジョブの一部分に対して実施形態によって実行されるコンパイルは、そのコンパイルが、その部分において企図される計算を実行するのに必要とされることになるいくつかの量子ビットを少なくとも決定し、かつ設定するという点で量子計算特有である。一実施形態において、コンパイルは、計算に必要とされる量子ビットの数を、ＱＣＥにおけるＱＣＣＮにおいて利用可能な量子ビットの最大数にさらに最適化する、または最適化しようとさらに試みる。そのような最適化が成功した場合、実施形態は、本明細書において説明される部分をｑ処理のためにさらにコンパイルすること、またはさらにスケジュールすることにとりかかる。そのような最適化が不成功であった場合、すなわち、量子ビットの数が、ＱＣＣＮにおいて利用可能な量子ビットの最大数にまで減らされることが可能でない場合、実施形態は、本明細書において説明される部分を従来の処理のためにコンパイルする、またはスケジュールする。
【００４２】
別の例として、ジョブの一部分に対して実施形態によって実行されるコンパイルは、そのコンパイルが、その部分において企図される計算を実行するのに必要とされることになる数学操作のタイプを少なくとも決定し、かつ設定するという点で量子計算特有である。一実施形態において、コンパイルは、計算に必要とされる演算を、ＱＣＥにおけるＱＣＣＮにおいて構成される他の１つまたは複数の演算を使用して実行可能であるようにさらに最適化する、または最適化しようとさらに試みる。そのような最適化が成功した場合、実施形態は、本明細書において説明される部分をｑ処理のためにさらにコンパイルすること、またはさらにスケジュールすることにとりかかる。そのような最適化が不成功であった場合、すなわち、その部分において必要とされる演算が、ＱＣＣＮにおける利用可能な演算の組合せを使用して実行されることが可能でない場合、実施形態は、本明細書において説明される部分を従来の処理のためにコンパイルする、またはスケジュールする。
【００４３】
別の例として、ジョブの一部分に対して実施形態によって実行されるコンパイルは、そのコンパイルが、その部分において企図される計算によって必要とされることになる許容誤差を少なくとも決定し、かつ設定するという点で量子計算特有である。一実施形態において、コンパイルは、計算のために必要とされる許容誤差を、ＱＣＥにおけるＱＣＣＮの出力に存在することが知られる最小の誤差以上となるようにさらに最適化する、または最適化しようとさらに試みる。そのような最適化が成功した場合、実施形態は、本明細書において説明される部分をｑ処理のためにさらにコンパイルすること、またはさらにスケジュールすることにとりかかる。そのような最適化が不成功であった場合、すなわち、許容差が、ＱＣＣＮの最小誤差にまで大きくされることが可能でない場合、実施形態は、本明細書において説明される部分を従来の処理のためにコンパイルする、またはスケジュールする。
【００４４】
量子コンパイル機能のこれらの実施例は、例示的な実施形態を限定することは意図していない。他の多くの量子コンパイル機能が、当業者によって本開示から構想可能であり、それらは、例示的な実施形態の範囲内に入ることが企図される。例えば、ジョブの一部分に対して実施形態によって実行されるコンパイルは、他の多くの様態においても量子計算特有であることが可能である。１つのそのような実施例において、コンパイルは、その部分を計算するためのＱＣＣＮの利用が減らされ、ＱＣＣＮにおいて実施される数学操作が利用され、別々の量子命令が、コンパイルされた部分において、元のジョブ部分におけるそれらの命令の最初の場所からより近くなるように一緒に並べられ、または別々の量子命令が、コンパイルされた部分において互いに結び付けられる、あるいはその組合せが行われるような様態で、その部分からもたらされるｑ処理命令を組み合わせるように、そのようなｑ処理命令を並べるように、そのようなｑ処理命令を減らすように、またはｑ処理命令をそれ以外で編成するように少なくとも試みる。
【００４５】
別の例として、ジョブが、ＱＡＳＭなどの量子命令言語を使用する部分を指定してよい。しかし、実施形態が、その部分によって要求されるｑ処理の量子パラメータが、ＱＣＥにおいて利用可能であるＱＣＣＮと適合しないことを見出すことが可能である。そのような事例において、その実施形態の量子計算特有の演算は、その部分を、従来の処理のために量子命令言語から従来の命令言語に変換する。
【００４６】
実施形態が、コンパイルされた部分からのｑ命令をｑリソースに割り当てる。ｑプロセッサが、ｑリソースの実施例である。一般に、ｑリソースは、前段で説明されるとおり、量子力学の１つまたは複数の原理で働く量子ビットまたは量子計算リソースの任意の現れである。
【００４７】
例えば、複数のＱＣＣＮがＱＣＥにおいて動作しており、１つのＱＣＣＮが、４つの量子ビットで構成されており、かつ別のＱＣＣＮが、８つの量子ビットで構成されているものと想定されたい。４つだけの量子ビットを利用するｑ命令は、８量子ビットのＱＣＣＮより４量子ビットＱＣＣＮの方をよりうまく利用する。
【００４８】
同様に、そのようなことが、実際の実施態様に関して必ずしも該当するわけではないものの、１つのＱＣＣＮが、加法演算を実行するように構成され、かつ別のＱＣＣＮが、乗法演算を実行するように構成されるものと想定されたい。２つの大きい数を掛け合わせるｑ命令は、同一の結果に達するべく加法構成を繰り返し使用するよりも、乗法演算のための構成をよりうまく利用する。
【００４９】
ＱＣＣＮの演算は、一般に、これら、およびその他の数学操作を実施する論理ゲートとして構成される。ｑ命令処理を最適化する様態は、計算において使用されるゲートの数を最適化することによる。
【００５０】
これらの非限定的な実施例は、異なるｑ命令を異なるＱＣＣＮに割り当てることが、現実の、相当な結果をもたらす可能性があることを実証する。その結果は、単に計算費用の違いであることが可能であり、または最終結果における誤差であることが可能である。例えば、乗法演算が１回、実行され、かつ量子出力信号が１回、測定された場合、その出力における誤差は、別の量子出力における累積的な反復された加法演算からの累積的な誤差と比べて、より小さい可能性が大きい。
【００５１】
これら、およびその他の理由で、実施形態が、サブミットされたジョブのコンパイルされた部分からの１つまたは複数のｑ命令のセットを、ＱＣＥにおいて動作する特定のＱＣＣＮに割り当てる。ｑ命令のセットを特定のＱＣＣＮに割り当てる実施形態の一環として、実施形態は、ＱＣＣＮが、ＱＣＣＮ上で実行を待っているｑ命令の関連付けられたキューを有するかどうかを判定する。
【００５２】
選択されたＱＣＣＮに関してそのようなキューまたは他のスケジュール機構が存在する場合、実施形態は、ｑ命令のセットを、そのキューに、または構成されたスケジュール機構に入れる。そのキューまたはそのスケジュール機構の動作に依存して、ｑ命令のセットは、適切な時点でＱＣＣＮによって実行のために選択される。そのようなキューまたは他のスケジュール機構が、選択されたＱＣＣＮに関して存在しない場合、実施形態は、ｑ命令のセットをＱＣＣＮ上で即時に実行してよい。
【００５３】
サブミットされたジョブの一部分は、従来の命令を使用して実施形態によってコンパイルされていることが可能であることを思い起こされたい。そのような従来の命令は、知られている従来のクラウド計算方法により適切なＣＣＮ上で実行されるように同様にスケジュールされる。
【００５４】
ＱＣＣＮ上のｑ命令の実行は、ＱＣＣＮからの信号出力をもたらす。ＣＣＮ上の従来の命令の実行は、従来の結果をもたらす。
【００５５】
実施形態が、サブミットされたジョブが誤差処理のために既に実装されているかどうかを判定する。誤差訂正は、或るタイプの誤差処理である。ジョブは、計算の結果における予期される誤差を訂正する、またはそれ以外で対処するコードを含めることによって誤差処理のために実装されることが可能である。実施形態は、ジョブにおけるそのような実装を識別し、ＱＣＣＮ出力に関する誤差処理操作を構成する。１つのタイプの誤差処理は、ｑプロセッサの出力信号を収集して、処理するハードウェア機構において構成される。ＱＣＣＮにおけるそのようなハードウェア機構は、ハードウェア・チェーンと呼ばれる。
【００５６】
出力信号は、ｑプロセッサの量子ビットの特定の実施態様において使用される粒子の検出された量子状態である。出力信号のいくつかの非限定的な例は、光子の偏光または数、あるいはその両方、光子の到着時刻、ビームにおける光子のコヒーレント状態、電子のスピン、電子電荷もしくは電子の数、原子核のスピン、格子における原子スピン、超伝導電荷量子ビットにおけるジョセフソン接合の電荷、超伝導磁束量子ビットにおけるジョセフソン接合の電流、超伝導相量子ビットにおけるジョセフソン接合のエネルギー、単位電荷だけ帯電した量子ドット・ペアにおける電子局在、量子ドットのドット・スピン、およびその他多数を含む。
【００５７】
ハードウェア・チェーン・ベースの誤差処理は、ｑプロセッサの出力信号を測定する。いくらかの信号誤差検出および訂正は、別の手段によって出力信号を検証すること、１つの出力信号を別の出力信号と相関付けること、または量子ビットの繰り返し演算において出力信号を再現することを適用することなどによって、ハードウェア・チェーンにおいて実行されることが可能である。ジョブが適切に実装される一部の事例において、ハードウェア・チェーンにおける誤差処理は、特定の実施態様において該当する可能性があるとおりに、最小限に抑えられること、低減されること、変更されること、または省かれることが可能である。
【００５８】
実施形態が、測定された出力信号またはハードウェア・チェーン訂正された出力信号が、適切な、知られている信号変調／復調技術を使用して復調されることをもたらす。実施形態は、デジタル化された復調された信号から２値のデータが抽出されることが可能であるように、復調された信号をデジタル化する。
【００５９】
実施形態が、２値表現されたｑ結果を計算すべくそのデジタル化された信号を使用する。１つまたは複数のｑ結果が、ジョブのｑ処理された部分に関して獲得されることが可能である。
【００６０】
オプションとして、一実施形態は、ｑ結果に１つまたは複数の後処理操作をさらに適用する。後処理の一例が、ｑ結果に対するソフトウェア・ベースの誤差処理である。この段階で誤差処理を適用することは、ジョブのコード内の誤差処理実装にも依存する。誤差処理、例えば、誤差検出または誤差訂正、あるいはその両方の例示的な様態は、ｑ結果に統計アルゴリズムまたは統計モデルを適用することを含む。例えば、ｑ命令の同一のセットまたは類似したセットに関して複数のｑ結果値が獲得された場合、統計モデルが、ｑ結果の特定の値が、ｑ結果の別の値と比べて、より尤度が高いか、より尤度が低いか、または等しい尤度であるかを確かめることが可能である。実施形態の誤差処理操作の例として、この事例における例示的なモデルは、ｑ結果の複数の値から最も尤度の高い値を選択する。
【００６１】
ジョブの別の部分の従来の計算から従来の結果も獲得される場合、別のタイプの後処理が必要とされる可能性がある。例えば、実施形態が、従来の結果をｑ結果と組み合わせる。組合せ操作は、例示的な実施形態の任意の所与の実施における計算の性質、結果のタイプ、およびジョブの期待に依存して任意の適切な様態で実施されることが可能である。
【００６２】
組合せ操作は、最終結果をもたらす。実施形態が、サブミット側からジョブを受信したことに応答してジョブ・サブミット側に最終結果を引き渡す。
【００６３】
本明細書において説明される量子計算対応のクラウド環境におけるジョブ処理の様態は、現在、利用可能な方法においては利用可能でない。本明細書において説明される実施形態の方法は、ＱＣＣＮとの関係でＣＮ上で実行されるように実施されるとき、ＱＣＥにおいて純粋な量子処理作業負荷、または混合された量子処理と従来の処理の作業負荷を管理する際のＱＣＥの機能の大幅な進展を備える。
【００６４】
例示的な実施形態は、単に実施例として、いくつかのタイプのジョブ、命令、ｑ命令、コンパイル操作、割当て論理、ｑプロセッサ、ＱＣＮ、出力信号、誤差処理、後処理、変形もしくは変換、アルゴリズム、実施形態の配置、さらなるデータ、デバイス、データ処理システム、環境、構成要素、およびアプリケーションに関して説明される。これら、およびその他の類似した人工物のいずれの特定の現れも、本発明を限定することは意図していない。これら、およびその他の類似した人工物の任意の適切な現れが、例示的な実施形態の範囲内で選択されることが可能である。
【００６５】
さらに、例示的な実施形態は、任意のタイプのデータ、データ・ソース、またはデータ・ネットワークを介したデータ・ソースへのアクセスに関連して実施されてよい。任意のタイプのデータ・ストレージ・デバイスが、本発明の範囲内で、データ処理システムにおいてローカルで、またはデータ・ネットワークを介して、本発明の実施形態にデータを提供してよい。実施形態がモバイル・デバイスを使用して説明される場合、モバイル・デバイスとともに使用するのに適した任意のタイプのデータ・ストレージ・デバイスが、例示的な実施形態の範囲内で、モバイル・デバイスにおいてローカルで、またはデータ・ネットワークを介して、そのような実施形態にデータを提供してよい。
【００６６】
例示的な実施形態は、単に実施例として、特定のコード、設計、アーキテクチャ、プロトコル、レイアウト、図式、およびツールを使用して説明され、例示的な実施形態に限定されない。さらに、例示的な実施形態は、説明の明瞭さのために単に実施例として、特定のソフトウェア、ツール、およびデータ処理環境を使用するいくつかの実例において説明される。例示的な実施形態は、他の同等の、または類似した目的の構造、システム、アプリケーション、またはアーキテクチャと併せて使用されてよい。例えば、他の同等のモバイル・デバイス、構造、システム、アプリケーション、またはそれらのためのアーキテクチャが、本発明の範囲内で本発明のそのような実施形態と併せて使用されてよい。例示的な実施形態は、ハードウェアにおいて、ソフトウェアにおいて、またはハードウェアとソフトウェアの組合せにおいて実施されてよい。
【００６７】
本開示における実施例は、説明の明瞭さのためにのみ使用され、例示的な実施形態に限定されない。さらなるデータ、動作、アクション、タスク、活動、および操作が、本開示から構想可能であり、これらは、例示的な実施形態の範囲内で企図される。
【００６８】
本明細書においてリストアップされる利点は、例に過ぎず、例示的な実施形態に限定されることは意図されない。さらなる利点、または異なる利点が、特定の例示的な実施形態によって実現されることが可能である。さらに、特定の例示的な実施形態が、前段でリストアップされる利点のうちのいくつかまたはすべてを含むこと、あるいはいずれも含まないことが可能である。
【００６９】
図を参照すると、特に図１および図２を参照すると、これらの図は、例示的な実施形態が実施されることが可能なデータ処理環境の例示的な図である。図１および図２は、例であるに過ぎず、様々な実施形態が実施されることが可能な環境に関して何ら限定を主張することも、暗示することも意図していない。特定の実施態様は、後段の説明に基づいて、説明される環境に多くの変形を行うことが可能である。
【００７０】
図１は、例示的な実施形態が実施されることが可能なデータ処理システムのネットワークのブロック図を示す。データ処理環境１００は、例示的な実施形態が実施されることが可能なコンピュータのネットワークである。データ処理環境１００は、ネットワーク１０２を含む。ネットワーク１０２は、データ処理環境１００内で一緒に接続された様々なデバイスおよびコンピュータの間で通信リンクを提供するのに使用される媒体である。ネットワーク１０２は、有線通信リンク、無線通信リンク、または光ファイバ・ケーブルなどの接続を含んでよい。
【００７１】
クライアントまたはサーバは、ネットワーク１０２に接続された、いくつかのデータ処理システムの例示的な役割に過ぎず、これらのデータ処理システムの他の構成も、他の役割も排除することは意図していない。サーバ１０４およびサーバ１０６は、ストレージ・ユニット１０８と一緒にネットワーク１０２に結合される。ソフトウェア・アプリケーションは、データ処理環境１００における任意のコンピュータ上で実行されてよい。また、クライアント１１０、１１２、および１１４もネットワーク１０２に結合される。サーバ１０４もしくは１０６、またはクライアント１１０、１１２、もしくは１１４などのデータ処理システムは、データを包含してよく、かつシステム上で実行されるソフトウェア・アプリケーションまたはソフトウェア・ツールを有してよい。
【００７２】
単に例として、そのようなアーキテクチャに限定されることをまったく暗示することなく、図１は、実施形態の例示的な実施態様において使用可能であるいくつかの構成要素を示す。例えば、サーバ１０４および１０６、ならびにクライアント１１０、１１２、１１４が、単に例として、クライアント−サーバ・アーキテクチャに限定されることを暗示することなしにサーバおよびクライアントとして示される。別の例として、或る実施形態が、示されるいくつかのデータ処理システムおよびデータ・ネットワークにわたって分散されることが可能である一方で、別の実施形態が、例示的な実施形態の範囲内で単一のデータ処理システム上に実施されることが可能である。また、データ処理システム１０４、１０６、１１０、１１２、および１１４は、実施形態を実施するのに適したクラスタ、パーティション、および他の構成における例示的なノードも表す。
【００７３】
デバイス１３２は、本明細書において説明されるデバイスの例である。例えば、デバイス１３２は、スマートフォン、タブレット・コンピュータ、ラップトップ・コンピュータ、固定形態もしくはポータブル形態のクライアント１１０、ウェアラブル・コンピューティング・デバイス、または他の任意の適切なデバイスの形態をとることが可能である。図１における別のデータ処理システムにおいて実行されるものとして説明される任意のソフトウェア・アプリケーションが、同様の様態でデバイス１３２において実行されるように構成されることが可能である。図１における別のデータ処理システムにおいて記憶される、または生成される任意のデータまたは情報が、同様の様態でデバイス１３２において記憶されるように、または生成されるように構成されることが可能である。
【００７４】
クラウド１４０は、本明細書において説明されるＱＣＥの例である。例として、ＱＣＥ１４０は、ＣＣＮ１０４、１０６、および他の多くの類似したＣＣＮ１４２を含む。例として、ＣＣＮ１０６および１４２は、ＣＣＮのクラスタ１４４として構成されてよい。ＱＣＥ１４０は、ＱＣＣＮ１４６などの１つまたは複数のＱＣＣＮをさらに含む。ＱＣＣＮ１４６などのＱＣＣＮが、１つまたは複数のｑプロセッサ１４８を備える。現行で実現可能な量子ビットが、ｑプロセッサ１４８の例である。アプリケーション１０５は、本明細書において説明される実施形態を実施する。アプリケーション１０５は、ＱＣＥ１４０におけるサーバ１０４などのＣＣＮ上で動作する。クライアント１１０が、本明細書において説明される様態でジョブ１１１を構成し、かつＱＣＥ１４０に対するジョブ１１１の送信元として動作してよい。
【００７５】
ＱＣＥ１４０は、有線接続、無線通信プロトコル、または他の適切なデータ接続を使用してネットワーク１０２に結合されてよい。クライアント１１０、１１２、および１１４は、例えば、パーソナル・コンピュータまたはネットワーク・コンピュータであってよい。ネットワーク１０２は、互いに通信すべく伝送制御プロトコル／インターネット・プロトコル（ＴＣＰ／ＩＰ）およびその他のプロトコルを使用するネットワークおよびゲートウェイの集まりを表してよい。図１は、実施例として意図され、様々な例示的な実施形態に関するアーキテクチャ上の限定としては意図されない。
【００７６】
また、データ処理環境１００全体が、クラウドの形態をとり、かつ最小限の管理労力、またはサービスのプロバイダとの最小限のやり取りしか伴わずに迅速にプロビジョニングされ、リリースされることが可能である構成可能な計算リソースの共有されるプール（例えば、ネットワーク、ネットワーク帯域幅、サーバ、処理、メモリ、ストレージ、アプリケーション、仮想マシン、およびサービス）に対する便利な、オンデマンドのネットワーク・アクセスを可能にするためのサービス・デリバリのクラウド・コンピューティング・モデルを用いてもよい。
【００７７】
図２を参照すると、この図は、例示的な実施形態が実施されることが可能な従来のデータ処理システムのブロック図を示す。データ処理システム２００は、図１におけるサーバ１０４および１０６、またはクライアント１１０、１１２、および１１４などのコンピュータの例、あるいはプロセスを実施するコンピュータ使用可能プログラム・コードまたはコンピュータ使用可能命令が例示的な実施形態に関して配置されてよい他のタイプのデバイスである。
【００７８】
また、データ処理システム２００は、例示的な実施形態のプロセスを実施するコンピュータ使用可能プログラム・コードまたはコンピュータ使用可能命令が配置されてよい、図１におけるデータ処理システム１３２などの、データ処理システム、またはデータ処理システムにおける構成も表す。データ処理システム２００は、例としてのみ、それに限定されることなしに、コンピュータとして説明される。図１におけるデバイス１３２などの、他のデバイスの形態における実施態様が、タッチ・インターフェースを追加することなどによってデータ処理システム２００を変形してよく、かつ本明細書において説明されるデータ処理システム２００の動作および機能の一般的な説明を逸脱することなしに、データ処理システム２００からの示されるいくつかの構成要素をなくすことさえしてよい。
【００７９】
示される実施例において、データ処理システム２００は、ノース・ブリッジおよびメモリ・コントローラ・ハブ（ＮＢ／ＭＣＨ）２０２、ならびにサウス・ブリッジおよび入出力（Ｉ／Ｏ）コントローラ・ハブ（ＳＢ／ＩＣＨ）２０４を使用する。処理ユニット２０６、メイン・メモリ２０８、およびグラフィックス・プロセッサ２１０は、ノース・ブリッジおよびメモリ・コントローラ・ハブ（ＮＢ／ＭＣＨ）２０２に結合される。処理ユニット２０６は、１つまたは複数のプロセッサを包含してよく、かつ１つまたは複数の異種のプロセッサ・システムを使用して実施されてよい。処理ユニット２０６は、マルチコア・プロセッサであってよい。グラフィックス・プロセッサ２１０は、いくつかの実施態様においてアクセラレーテッド・グラフィックス・ポート（ＡＧＰ）を介してＮＢ／ＭＣＨ２０２に結合されてよい。
【００８０】
示される実施例において、ローカル・エリア・ネットワーク（ＬＡＮ）アダプタ２１２が、サウス・ブリッジおよびＩ／Ｏコントローラ・ハブ（ＳＢ／ＩＣＨ）２０４に結合される。オーディオ・アダプタ２１６、キーボードおよびマウス・アダプタ２２０、モデム２２２、読取り専用メモリ（ＲＯＭ）２２４、ユニバーサル・シリアル・バス（ＵＳＢ）ポートおよびその他のポート２３２、ならびにＰＣＩ／ＰＣＩｅデバイス２３４が、バス２３８を介してサウス・ブリッジおよびＩ／Ｏコントローラ・ハブ２０４に結合される。ハードディスク・ドライブ（ＨＤＤ）もしくはソリッドステート・ドライブ（ＳＳＤ）２２６、およびＣＤ−ＲＯＭ２３０が、バス２４０を介してサウス・ブリッジおよびＩ／Ｏコントローラ・ハブ２０４に結合される。ＰＣＩ／ＰＣＩｅデバイス２３４は、例えば、ノートブック・コンピュータのためのイーサネット（Ｒ）・アダプタ、アドイン・カード、およびＰＣカードを含んでよい。ＰＣＩは、カード・バス・コントローラを使用する一方で、ＰＣＩｅは、カード・バス・コントローラを使用しない。ＲＯＭ２２４は、例えば、フラッシュ・バイナリ入出力システム（ＢＩＯＳ）であってよい。ハードディスク・ドライブ２２６およびＣＤ−ＲＯＭ２３０は、例えば、インテグレーテッド・ドライブ・エレクトロニクス（ＩＤＥ）、シリアル・アドバンスト・テクノロジ・アタッチメント（ＳＡＴＡ）インターフェース、または外部ＳＡＴＡ（ｅＳＡＴＡ）およびマイクロＳＡＴＡ（ｍＳＡＴＡ）などの変形形態を使用してよい。スーパＩ／Ｏ（ＳＩＯ）デバイス２３６が、バス２３８を介してサウス・ブリッジおよびＩ／Ｏコントローラ・ハブ（ＳＢ／ＩＣＨ）２０４に結合されてよい。
【００８１】
メイン・メモリ２０８、ＲＯＭ２２４、またはフラッシュ・メモリ（図示せず）などのメモリは、コンピュータ使用可能ストレージ・デバイスのいくつかの例である。ハードディスク・ドライブもしくはソリッドステート・ドライブ２２６、ＣＤ−ＲＯＭ２３０、およびその他の同様に使用可能なデバイスは、コンピュータ使用可能記憶媒体を含むコンピュータ使用可能ストレージ・デバイスのいくつかの例である。
【００８２】
オペレーティング・システムが、処理ユニット２０６上で実行される。オペレーティング・システムは、図２におけるデータ処理システム２００内の様々な構成要素の制御を調整し、かつ提供する。オペレーティング・システムは、サーバ・システム、パーソナル・コンピュータ、およびモバイル・デバイスを含むが、以上には限定されない、任意のタイプのコンピューティング・プラットフォームのための市販のオペレーティング・システムであってよい。オブジェクト指向または他のタイプのプログラミング・システムが、オペレーティング・システムと一緒に動作し、かつデータ処理システム２００上で実行されるプログラムまたはアプリケーションからのオペレーティング・システムに対する呼出しを提供してよい。
【００８３】
オペレーティング・システム、オブジェクト指向プログラミング・システム、および図１におけるアプリケーション１０５などのアプリケーションもしくはプログラムのための命令は、ハードディスク・ドライブ２２６上のコード２２６Ａの形態などでストレージ・デバイス上に配置され、処理ユニット２０６によって実行されるように、メイン・メモリ２０８などの１つまたは複数のメモリのうちの少なくとも１つにロードされてよい。例示的な実施形態のプロセスは、例えば、メイン・メモリ２０８、読取り専用メモリ２２４などのメモリに、あるいは１つまたは複数の周辺デバイスに配置されてよい、コンピュータによって実施される命令を使用して処理ユニット２０６によって実行されてよい。
【００８４】
さらに、一事例において、コード２２６Ａが、遠隔システム２０１Ｂからネットワーク２０１Ａを介してダウンロードされてよい一方で、類似したコード２０１Ｃが、ストレージ・デバイス２０１Ｄ上に記憶される。別の事例において、コード２２６Ａが、ネットワーク２０１Ａを介して遠隔システム２０１Ｂにダウンロードされてよい一方で、ダウンロードされたコード２０１Ｃが、ストレージ・デバイス２０１Ｄ上に記憶される。
【００８５】
図１〜図２におけるハードウェアは、実施態様に依存して異なってよい。フラッシュ・メモリ、均等の不揮発性メモリ、または光ディスク・ドライブ、および以上に類するものなどの他の内部ハードウェアまたは周辺デバイスが、図１〜図２に示されるハードウェアに加えて、またはその代わりに使用されてよい。さらに、例示的な実施形態のプロセスは、マルチプロセッサ・データ処理システムに適用されてよい。
【００８６】
一部の例示的な実施例において、データ処理システム２００は、オペレーティング・システム・ファイルまたはユーザによって生成されたデータ、あるいはその両方を記憶するための不揮発性メモリを提供すべくフラッシュ・メモリを備えるように一般的に構成された、携帯情報端末（ＰＤＡ）であってよい。バス・システムが、システム・バス、Ｉ／Ｏバス、およびＰＣＩバスなどの１つまたは複数のバスを備えてよい。無論、バス・システムは、通信ファブリックまたは通信アーキテクチャに付加された様々な構成要素またはデバイスの間でデータの転送を可能にする任意のタイプの通信ファブリックまたは通信アーキテクチャを使用して実施されてよい。
【００８７】
通信ユニットは、モデムまたはネットワーク・アダプタなどの、データを送受信するのに使用される１つまたは複数のデバイスを含んでよい。メモリは、例えば、メイン・メモリ２０８、あるいはノース・ブリッジおよびメモリ・コントローラ・ハブ２０２に見られるキャッシュなどのキャッシュであってよい。処理ユニットは、１つもしくは複数のプロセッサまたはＣＰＵを含んでよい。
【００８８】
図１〜図２に示される実施例、および前述した実施例は、アーキテクチャ上の限定を暗示することは意図していない。例えば、データ処理システム２００は、モバイル・デバイスまたはウェアラブル・デバイスの形態をとることに加えて、タブレット・コンピュータ、ラップトップ・コンピュータ、または電話デバイスであってもよい。
【００８９】
コンピュータまたはデータ処理システムが仮想マシン、仮想デバイス、または仮想構成要素として説明される場合、仮想マシン、仮想デバイス、または仮想構成要素は、データ処理システム２００において示されるいくつかの、またはすべての構成要素の仮想化された現れを使用してデータ処理システム２００の様態で動作する。例えば、仮想マシン、仮想デバイス、または仮想構成要素において、処理ユニット２０６は、ホスト・データ処理システムにおいて利用可能な全数の、またはいくつかのハードウェア処理ユニット２０６の仮想化されたインスタンスとして現れ、メイン・メモリ２０８は、ホスト・データ処理システムにおいて利用可能である可能性があるメイン・メモリ２０８のすべての部分またはいくらかの部分の仮想化されたインスタンスとして現れ、ディスク２２６は、ホスト・データ処理システムにおいて利用可能である可能性があるディスク２２６のすべての部分またはいくらかの部分の仮想化されたインスタンスとして現れる。そのような事例におけるホスト・データ処理システムが、データ処理システム２００によって代表される。
【００９０】
図３を参照すると、この図は、例示的な実施形態による量子計算対応のクラウド環境におけるジョブ処理のための例示的な構成のブロック図を示す。アプリケーション３０２は、図１におけるアプリケーション１０５の例である。ＱＣＥ３０４は、図１におけるＱＣＥ１４０の例である。
【００９１】
ジョブ３０６は、図１におけるジョブ１１１の例である。ジョブ３０６内で何らかの様態でそのようなものとして示されるか否かにかかわらず、ジョブ３０６の一部分３０８は、量子計算を使用して実行されることが好ましいものと想定されたい。
【００９２】
ＱＣＥ３０４は、本明細書において説明されるＱＣＣＮ３１０およびＣＣＮ３１２を含む。ＱＣＣＮ３１０およびＣＣＮ３１２のそれぞれ１つのインスタンスだけが示されるが、１つまたは複数のＱＣＣＮ３１０、および０の、または１つ以上のＣＣＮ３１２がＱＣＥ３０４に存在することが可能である。好ましくは、アプリケーション３０２が実行されることが可能である、従来の計算が実行されることが可能である、またはその両方が可能である、少なくとも１つのＣＣＮが、ＱＣＥ３０４に存在する。示されるとおり、アプリケーション３０２は、ＱＣＥ３０４におけるＣＣＮ３１２上、または別のＣＣＮ上で実行されることが可能である。
【００９３】
ジョブ３０６がＱＣＥ３０４において受信されると、機能３１４が、部分３０８（ｑ部分）を、ｑ計算を選好するものとして、またはｑ計算に適したものとして識別する。機能３１６が、ジョブ３０６のｑ部分をコンパイルする。機能３１８が、ジョブ３０６の従来の部分の従来のコンパイルを実行する。機能３１６が、本明細書で説明されるとおりＱＣＣＮ割当て（ＱＰ割振りまたはｑプロセッサ割振り）のために送られる、ｑ命令３２０（ｑ演算またはｑ−ｏｐ）を出力してよい。本明細書において説明される１つまたは複数の理由で、機能３１６は、従来のリソース割当てのために送られる、従来の命令３２２（従来の演算またはｃｏｎｖ．ｏｐ）を出力してもよい。
【００９４】
機能３２４が、本明細書において説明されるキューおよびスケジュール機構を使用して、ｑ命令をＱＣＣＮに割り当てる、またはＱＣＣＮにおける特定の量子プロセッサに割り当てさえする。機能３２６が、対応するキューおよびスケジュール機構を使用して、ＣＣＮに従来の命令を割り当てる。
【００９５】
キューに入れられた、またはスケジュールされたｑ命令は、ＱＣＣＮ３１０上で実行され、出力信号３２８（ｑ信号）を生成する。キューに入れられた、またはスケジュールされた従来の命令は、ＣＣＮ３１２上で実行され、従来の結果３３０を生成する。
【００９６】
ハードウェア・チェーン３３２が、機能３３４を実行する。機能３３４は、信号測定、誤差処理、復調、デジタル化、または以上の何らかの組合せを含む。機能３３４は、１つまたは複数のｑ結果を生成する。
【００９７】
後処理機能３３６およびオプションのソフトウェア・ベースの誤差処理機能３３８が、前段で説明されるとおりｑ結果に対して働く。機能３４０が、後処理されたｑ結果と従来の結果３３０を組み合わせる。機能３４２が、組み合わされた最終結果をジョブ３０６の処理結果として引き渡す。
【００９８】
図４を参照すると、この図は、例示的な実施形態による量子計算対応のクラウド環境におけるジョブ処理のためのアプリケーションのブロック図を示す。アプリケーション４０２は、図３におけるアプリケーション３０２において示され、説明される機能を実施する。
【００９９】
ジョブ・サブミット側４０４が、図３におけるＱＣＥ３０４などのＱＣＥにジョブ４０６をサブミットする。詳細には、サブミット側４０４は、アプリケーション４０２によって提示されるアプリケーション・プログラミング・インターフェース（ＡＰＩ）４０８を使用する。ジョブ４０６は、図３におけるジョブ３０６の例である。
【０１００】
構成要素４１０が、ジョブ４０４の量子処理に適切な部分（ｑ部分）の識別、フォールト・トレランス実装判定、および誤差処理構成などの、量子準備機能を実行する。コントローラ構成要素４１２が量子コンパイラ（ｑコンパイラ）４１４と一緒になって、ｑ部分をコンパイルする。ｑコンパイラ４１４は、ＱＡＳＭなどの適切な量子命令言語で量子計算のための命令を作成する、変換する、または最適化するように構成される。また、コントローラ構成要素４１２は、本明細書において説明される１つまたは複数の状況において従来の命令をコンパイルすべく適切な従来のコンパイラ（図示せず）を使用することもする。
【０１０１】
スケジューラ構成要素４１６が、ＱＣＣＮの実行のためにｑ命令をキューに入れる、またはスケジュールする。従来の命令もコンパイルされる場合、スケジューラ構成要素４１６は、ＣＣＮの実行のために従来の命令をキューに入れること、またはスケジュールすることもする。
【０１０２】
ｑプロセッサ４１８が、ｑ命令を計算し、出力信号を生成する。ハードウェア・チェーン４２０が、出力信号を処理し、ｑ結果を生成する。構成要素４２２が、ハードウェア・チェーン４２０からｑ結果を獲得し、そのｑ結果を後処理すべく、統計モデル４２４などの１つまたは複数のモデルを使用する。
【０１０３】
オプションとして、構成要素４２６が、ｑ結果に対してソフトウェア・ベースの誤差処理を実行する。構成要素４２８が、任意の従来の結果を、後処理されたｑ結果と組み合わせ、最終結果４３０を準備する。構成要素４２８が、最終結果４３０をジョブ・サブミット側４０４に引き渡す。
【０１０４】
図５を参照すると、この図は、例示的な実施形態による量子計算対応のクラウド環境におけるジョブ処理のためのプロセスの一部分のフローチャートを示す。プロセス５００は、図４におけるアプリケーション４０２において実施されることが可能である。
【０１０５】
サブミットされたクラウド計算ジョブから、アプリケーションが、ＱＣＥにおける量子計算が有益となる部分を識別する（ブロック５０２）。ジョブが従来の計算のための部分を含む場合、アプリケーションが、ＱＣＥにおけるＣＣＮ上で実行されるように従来の命令を作成する、変形する、または最適化する（ブロック５０４）。アプリケーションが、ＣＣＮ上で従来の命令をスケジュールし、実行する（ブロック５０６）。アプリケーションが、出口「Ａ」経由でプロセス５００を抜けて、対応する入口「Ａ」経由でプロセス６００に入る。
【０１０６】
ステップ５０２でｑ部分が識別されている場合、アプリケーションが、ｑ部分をコンパイルしてｑ命令にする（ブロック５０８）。コンパイルするプロセスは、サブステップ５１０、５１２、５１４、５１６、５１８、および本開示から当業者には明白となる他の類似した目的のサブステップの組合せを含むことが可能である。例えば、サブステップ５１０が、ｑ命令のための適切な数の量子ビットを選択する。ｑ部分全体が、量子計算を使用して処理されるべきではない、または処理されることが可能でない場合、サブステップ５１２が、ｑ部分の下位部分を、従来の計算のためにブロック５０４に送る。サブステップ５１４が、ｑ命令において実行されるべき量子演算のタイプを選択する。サブステップ５１６が、ｑ命令の許容誤差率を設定する。サブステップ５１８が、ＱＣＥにおいて利用可能な特定のＱＣＣＮの量子ビット、演算、および誤差率に対応するように量子ビットの数、ｑ演算のタイプ、誤差率の値を変更する、または最適化する。
【０１０７】
アプリケーションが、コンパイル・ステップ５０８において使用された特定のＱＣＣＮにｑ命令を割り当てる（ブロック５２０）。アプリケーションが、その選択されたＱＣＣＮ上で実行されるようにｑ命令をスケジュールする（ブロック５２２）。アプリケーションが、そのＱＣＣＮ上でｑ命令を実行する（ブロック５２４）。アプリケーションが、出口「Ａ」経由でプロセス５００を抜けて、対応する入口「Ａ」経由でプロセス６００に入る。
【０１０８】
図６を参照すると、この図は、例示的な実施形態による量子計算対応のクラウド環境におけるジョブ処理のためのプロセスの別の部分のフローチャートを示す。プロセス５００が、図４におけるアプリケーション４０２において実施されることが可能である。
【０１０９】
アプリケーションが、プロセス５００において実行されていることが可能な任意の従来の計算から従来の結果を獲得する（ブロック６０２）。アプリケーションが、選択されたＱＣＣＮ上のｑ命令の処理から出力信号（ｑ信号）を獲得する（ブロック６０４）。
【０１１０】
アプリケーションが、信号測定（ブロック６０６）、オプションのハードウェア・ベースの誤差処理（ブロック６０８）、信号の復調（ブロック６１０）、および復調された信号のデジタル化（ブロック６１２）を実行する。アプリケーションが、後処理されたｑ結果を計算する（ブロック６１４）。アプリケーションが、オプションとして、本明細書において説明される状況において必要とされるのに応じてソフトウェア・ベースの誤差処理を実行する（ブロック６１６）。このようにして、アプリケーションは、従来の結果が存在する場合、その結果と組み合わされることが可能な（ブロック６２０）、処理されたｑ結果を生成する（ブロック６１８）。
【０１１１】
アプリケーションが、組合せ操作からの最終結果を生成する（ブロック６２２）。アプリケーションが、最終結果を、ジョブをサブミットするシステムに引き渡す（ブロック６２４）。アプリケーションは、その後、プロセス６００を終了する。
【０１１２】
このようにして、量子計算対応のクラウド環境におけるジョブ処理のための例示的な実施形態、およびその他の関連する特徴、機能、または動作における、コンピュータによって実施される方法、システム、または装置、ならびにコンピュータ・プログラム製品が、提供される。実施形態、または実施形態の一部分が、或るタイプのデバイスに関連して説明される場合、そのコンピュータによって実施される方法、システム、または装置、コンピュータ・プログラム製品、あるいはそれらの一部分は、そのタイプのデバイスの適切な、同等の現れとともに使用されるように適合させられる、または構成される。
【０１１３】
実施形態がアプリケーションにおいて実施されるものとして説明される場合、ソフトウェア・アズ・ア・サービス（ＳａａＳ）モデルにおけるアプリケーションのデリバリが、例示的な実施形態の範囲内で企図される。ＳａａＳモデルにおいて、実施形態を実施するアプリケーションの能力は、クラウド・インフラストラクチャにおいてアプリケーションを実行することによってユーザに提供される。ユーザは、ウェブ・ブラウザ（例えば、ウェブ・ベースの電子メール）などのシン・クライアント・インターフェース、または他の軽量のクライアント・アプリケーションを介して様々なクライアント・デバイスを使用してアプリケーションにアクセスすることができる。ユーザは、ネットワーク、サーバ、オペレーティング・システム、またはクラウド・インフラストラクチャのストレージを含む、基礎をなすクラウド・インフラストラクチャを管理することも、制御することもしない。一部の事例において、ユーザは、ＳａａＳアプリケーションの能力を管理することも、制御することもしなくてよい可能性さえある。他の一部の事例において、アプリケーションのＳａａＳ実施態様は、限られたユーザ特有のアプリケーション構成設定の可能な例外を許してよい。
【０１１４】
本発明は、統合の任意の可能な技術的詳細レベルにおけるシステム、方法、またはコンピュータ・プログラム製品、あるいはその組合せであってよい。コンピュータ・プログラム製品は、プロセッサに本発明の態様を実行させるためのコンピュータ可読プログラム命令を有する１つの（または複数の）コンピュータ可読記憶媒体を含んでよい。
【０１１５】
コンピュータ可読記憶媒体は、命令実行デバイスによって使用されるように命令を保持すること、および記憶することができる有形のデバイスであることが可能である。コンピュータ可読記憶媒体は、例えば、電子ストレージ・デバイス、磁気ストレージ・デバイス、光ストレージ・デバイス、電磁ストレージ・デバイス、半導体ストレージ・デバイス、または以上の任意の適切な組合せであってよいが、以上には限定されない。コンピュータ可読記憶媒体のより具体的な例の網羅的でないリストは、以下、すなわち、ポータブル・コンピュータ・ディスケット、ハードディスク、ランダム・アクセス・メモリ（ＲＡＭ）、読取り専用メモリ（ＲＯＭ）、消去可能なプログラマブル読取り専用メモリ（ＥＰＲＯＭもしくはフラッシュ・メモリ）、スタティック・ランダム・アクセス・メモリ（ＳＲＡＭ）、ポータブル・コンパクト・ディスク読取り専用メモリ（ＣＤ−ＲＯＭ）、デジタル・バーサタイル・ディスク（ＤＶＤ）、メモリ・スティック、フロッピー・ディスク、命令が記録されているパンチカードまたは溝の中の隆起構造などの機械的に符号化されたデバイス、および以上の任意の適切な組合せを含む。本明細書において使用されるコンピュータ可読ストレージ・デバイスを含むが、それに限定されないコンピュータ可読記憶媒体は、電波もしくは他の自由に伝播する電磁波、導波路もしくは他の伝達媒体を介して伝播する電磁波（例えば、光ファイバ・ケーブルを通過する光パルス）、または配線を介して伝送される電気信号などの一過性の信号そのものであると解釈されるべきではない。
【０１１６】
本明細書において説明されるコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体からそれぞれのコンピューティング／処理デバイスに、またはネットワーク、例えば、インターネット、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワーク、または無線ネットワーク、あるいはその組合せを介して外部コンピュータもしくは外部ストレージ・デバイスにダウンロードされることが可能である。ネットワークは、銅伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、またはエッジ・サーバ、あるいはその組合せを備えてよい。各コンピューティング／処理デバイスにおけるネットワーク・アダプタまたはネットワーク・インターフェースが、ネットワークからコンピュータ可読プログラム命令を受信し、それぞれのコンピューティング／処理デバイス内のコンピュータ可読記憶媒体に記憶されるようにコンピュータ可読プログラム命令を転送する。
【０１１７】
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ（ＩＳＡ）命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、集積回路のための構成データ、またはＳｍａｌｌｔａｌｋ（Ｒ）、Ｃ＋＋、もしくはそれに類似したものなどのオブジェクト指向プログラミング言語、および「Ｃ」プログラミング言語もしくはそれに類似したプログラミング言語などの手続き型プログラミング言語を含め、１つまたは複数のプログラミング言語の任意の組合せで書かれたソース・コードもしくはオブジェクト・コードであってよい。コンピュータ可読プログラム命令は、全体がユーザのコンピュータ上で実行されても、一部がユーザのコンピュータ上で実行されても、スタンドアロンのソフトウェア・パッケージとして実行されても、一部がユーザのコンピュータ上で、かつ一部が遠隔コンピュータ上で実行されても、全体が遠隔コンピュータまたは遠隔サーバの上で実行されてもよい。全体が遠隔コンピュータまたは遠隔サーバの上で実行されるシナリオにおいて、遠隔コンピュータは、ローカル・エリア・ネットワーク（ＬＡＮ）もしくはワイド・エリア・ネットワーク（ＷＡＮ）を含む任意のタイプのネットワークを介してユーザのコンピュータに接続されてよく、または接続は、外部コンピュータに対して行われてもよい（例えば、インターネット・サービス・プロバイダを使用してインターネットを介して）。一部の実施形態において、例えば、プログラマブル・ロジック回路、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）、またはプログラマブル・ロジック・アレイ（ＰＬＡ）を含む電子回路が、本発明の態様を実行するために、電子回路をパーソナライズするようにコンピュータ可読プログラム命令の状態情報を利用することによってコンピュータ可読プログラム命令を実行することが可能である。
【０１１８】
本発明の態様は、本発明の実施形態による方法、装置（システム）、およびコンピュータ・プログラム製品のフローチャートまたはブロック図あるいはその両方を参照して本明細書において説明される。フローチャートまたはブロック図あるいはその両方の各ブロック、ならびにフローチャートまたはブロック図あるいはその両方におけるブロックの組合せは、コンピュータ可読プログラム命令によって実施されることが可能であることが理解されよう。
【０１１９】
これらのコンピュータ可読プログラム命令は、そのコンピュータまたは他のプログラマブル・データ処理装置のプロセッサを介して実行されるそれらの命令が、フローチャートまたはブロック図あるいはその両方の１つまたは複数のブロックに指定される機能／動作を実施する手段を作り出すべく、汎用コンピュータ、専用コンピュータ、または他のプログラマブル・データ処理装置のプロセッサに提供されてマシンを作り出すものであってよい。また、これらのコンピュータ可読プログラム命令は、命令が記憶されているコンピュータ可読記憶媒体が、フローチャートまたはブロック図あるいはその両方の１つまたは複数のブロックに指定される機能／動作の態様を実施する命令を含む製造品を備えるべく、特定の様態で機能するようにコンピュータ、プログラマブル・データ処理装置、または他のデバイス、あるいはその組合せを導くことができるコンピュータ可読記憶媒体に記憶されてもよい。
【０１２０】
また、コンピュータ可読プログラム命令は、コンピュータ、他のプログラマブル装置、または他のデバイス上で実行される命令が、フローチャートまたはブロック図あるいはその両方の１つまたは複数のブロックに指定される機能／動作を実施するように、コンピュータによって実施されるプロセスを作り出すべく、コンピュータ、他のプログラマブル・データ処理装置、または他のデバイスにロードされ、コンピュータ上、他のプログラマブル装置上、または他のデバイス上で一連の動作ステップを実行させるものであってもよい。
【０１２１】
図におけるフローチャートおよびブロック図は、本発明の様々な実施形態によるシステム、方法、およびコンピュータ・プログラム製品の可能な実施態様のアーキテクチャ、機能、および動作を例示する。これに関して、フローチャートまたはブロック図における各ブロックは、指定された論理機能を実施するための１つまたは複数の実行可能命令を備える、命令のモジュール、セグメント、または部分を表すことが可能である。一部の代替の実施態様において、ブロックに記載される機能は、図に記載される順序を外れて生じてよい。例えば、連続して示される２つのブロックが、実際には、実質的に同時に実行されてよく、またはそれらのブロックが、時として、関与する機能に依存して、逆の順序で実行されてよい。また、ブロック図またはフローチャートあるいはその両方の各ブロック、ならびにブロック図またはフローチャートあるいはその両方におけるブロックの組合せは、指定された機能もしくは動作を実行する、または専用ハードウェア命令とコンピュータ命令の組合せを実行する専用ハードウェア・ベースのシステムによって実施されることが可能であることにも留意されたい。
【図１】
0006975322.tif 000002
【図２】
0006975322.tif 000003
【図３】
0006975322.tif 000004
【図４】
0006975322.tif 000005
【図５】
0006975322.tif 000006
【図６】
0006975322.tif 000007