(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-06-22
(45)【発行日】2023-06-30
(54)【発明の名称】量子コンピューティング・ジョブの共同スケジューリング
(51)【国際特許分類】
G06F 9/48 20060101AFI20230623BHJP
G06N 10/00 20220101ALI20230623BHJP
【FI】
G06F9/48 300A
G06N10/00
G06F9/48 300F
(21)【出願番号】P 2021519768
(86)(22)【出願日】2019-11-13
(86)【国際出願番号】 EP2019081150
(87)【国際公開番号】W WO2020108993
(87)【国際公開日】2020-06-04
【審査請求日】2022-04-18
(32)【優先日】2018-11-29
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレーション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
【住所又は居所原語表記】New Orchard Road, Armonk, New York 10504, United States of America
(74)【代理人】
【識別番号】100112690
【氏名又は名称】太佐 種一
(72)【発明者】
【氏名】グンネルス、ジョン
(72)【発明者】
【氏名】ウェグマン、マーク
(72)【発明者】
【氏名】カミンスキー、デイヴィット
【審査官】漆原 孝治
(56)【参考文献】
【文献】国際公開第2017/214717(WO,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 9/48
G06N 10/00
(57)【特許請求の範囲】
【請求項1】
量子コンピューティング・ジョブのスケジューリング・プロセスを容易にするためのシステムであって、前記システムが、
コンピュータ実行可能コンポーネントを格納するメモリと、
前記メモリに格納された前記コンピュータ実行可能コンポーネントを実行するプロセッサと
を備え、前記コンピュータ実行可能コンポーネントが、
1つまたは複数の量子に基づく実行制約に基づいて量子コンピューティング・ジョブの実行順序を決定するスケジューラ・コンポーネントと、
前記実行順序に基づいて前記量子コンピューティング・ジョブへの参照を格納する実行キュー・コンポーネントと
を含
み、
前記前記スケジューラ・コンポーネントが、定義された忠実度を含んでいる1つまたは複数の量子ビットの可用性に基づいて前記実行順序をさらに決定する、
前記システム。
【請求項2】
前記コンピュータ実行可能コンポーネントが、
前記実行順序に基づいて前記量子コンピューティング・ジョブのうちの少なくとも1つを1つまたは複数の量子コンピューティング・デバイスにサブミットするサブミット・コンポーネントをさらに含み、それによって、前記プロセッサまたは前記1つまたは複数の量子コンピューティング・デバイスのうちの少なくとも1つの処理効率の改善を促進する、
請求項1に記載のシステム。
【請求項3】
前記スケジューラ・コンポーネントが、前記量子コンピューティング・ジョブの実行時間の近似値に基づいて前記実行順序をさらに決定する、
請求項1または2に記載のシステム。
【請求項4】
量子コンピューティング・ジョブのスケジューリング・プロセスを容易にするためのシステムであって、前記システムが、
コンピュータ実行可能コンポーネントを格納するメモリと、
前記メモリに格納された前記コンピュータ実行可能コンポーネントを実行するプロセッサと
を備え、前記コンピュータ実行可能コンポーネントが、
1つまたは複数の量子に基づく実行制約に基づいて量子コンピューティング・ジョブの実行順序を決定するスケジューラ・コンポーネントと、
前記実行順序に基づいて前記量子コンピューティング・ジョブへの参照を格納する実行キュー・コンポーネントと
を備えており、
前記コンピュータ実行可能コンポーネントが、
前記実行順序が量子ビット通信制約に違反しているかどうかを判定する制約チェッカー・コンポーネントをさらに含む、
前記システム。
【請求項5】
前記スケジューラ・コンポーネントが、第2の量子コンピューティング・ジョブに対応する1つまたは複数の第2の量子に基づく実行制約、または前記量子コンピューティング・ジョブのうちの少なくとも1つの完了、のうちの少なくとも1つに基づいて、1つまたは複数の第2の実行順序をさらに決定する、
請求項1ないし4のいずれか
1項に記載のシステム。
【請求項6】
前記コンピュータ実行可能コンポーネントが、
すべての前記量子コンピューティング・ジョブが定義された時間内に実行されるかどうかを判定する非飢餓コンポーネントをさらに含む、
請求項1ないし5のいずれか
1項に記載のシステム。
【請求項7】
前記実行順序をさらに決定する
ことによって、前記プロセッサ、または前記実行順序に基づいて前記量子コンピューティング・ジョブを実行する1つもしくは複数の量子コンピューティング・デバイスに関連付けられた処理ユニット、のうちの少なくとも1つの処理精度の改善を促進する、
請求項1ないし
3、又は請求項1ないし3のいずれか1項を引用する場合の請求項5ないし6のいずれか
1項に記載のシステム。
【請求項8】
量子コンピューティング・ジョブのスケジューリング・プロセスを容易にするためのシステムであって、前記システムが、
コンピュータ実行可能コンポーネントを格納するメモリと、
前記メモリに格納された前記コンピュータ実行可能コンポーネントを実行するプロセッサと
を備え、前記コンピュータ実行可能コンポーネントが、
1つまたは複数の量子に基づく実行制約に基づいて量子コンピューティング・ジョブの実行順序を決定するスケジューラ・コンポーネントと、
前記実行順序に基づいて前記量子コンピューティング・ジョブへの参照を格納する実行キュー・コンポーネントと
を備えており、
前記スケジューラ・コンポーネントが、前記量子コンピューティング・ジョブのうちの少なくとも1つの正しさに対応する定義された信頼度に基づいて前記実行順序をさらに決定する、
前記システム。
【請求項9】
前記1つまたは複数の量子に基づく実行制約が、量子コンピューティング・ジョブを実行するための定義された量子ビットの数、またはエラー修正に基づいて量子コンピューティング・ジョブを実行するための定義された量子ビットの数、のうちの少なくとも1つを含む、
請求項1ないし8のいずれか
1項に記載のシステム。
【請求項10】
量子コンピューティング・ジョブのスケジューリング・プロセスを容易にするためのコンピュータにより実行される方法であって、
プロセッサに動作可能なように結合されたシステムによって、1つまたは複数の量子に基づく実行制約に基づいて量子コンピューティング・ジョブの実行順序を決定すること、
前記システムによって、前記実行順序に基づいて前記量子コンピューティング・ジョブへの参照を格納すること
を含
み、
前記決定することが、前記システムによって、定義された忠実度を含んでいる1つまたは複数の量子ビットの可用性に基づいて前記実行順序をさらに決定することを含む、
前記方法。
【請求項11】
前記システムによって、前記実行順序に基づいて前記量子コンピューティング・ジョブのうちの少なくとも1つを1つまたは複数の量子コンピューティング・デバイスにサブミットすることをさらに含む、
請求項10に記載の方法。
【請求項12】
前記決定することが、前記システムによって、前記量子コンピューティング・ジョブの実行時間の近似値に基づいて前記実行順序を決定することを含む、
請求項10または11に記載の方法。
【請求項13】
量子コンピューティング・ジョブのスケジューリング・プロセスを容易にするためのコンピュータにより実行される方法であって、
プロセッサに動作可能なように結合されたシステムによって、1つまたは複数の量子に基づく実行制約に基づいて量子コンピューティング・ジョブの実行順序を決定すること、
前記システムによって、前記実行順序に基づいて前記量子コンピューティング・ジョブへの参照を格納すること
を含み、
前記システムによって、前記実行順序が量子ビット通信制約に違反しているかどうかを判定することをさらに含む、
前記方法。
【請求項14】
前記実行順序を
さらに決定すること
によって、前記プロセッサ、または前記実行順序に基づいて前記量子コンピューティング・ジョブを実行する1つまたは複数の量子コンピューティング・デバイスに関連付けられた処理ユニット、のうちの少なくとも1つの処理精度の改善を促進する、
請求項10ないし13のいずれか
1項に記載の方法。
【請求項15】
量子コンピューティング・ジョブのスケジューリング・プロセスを容易にするためのコンピュータにより実行される方法であって、
プロセッサに動作可能なように結合されたシステムによって、1つまたは複数の量子に基づく実行制約に基づいて量子コンピューティング・ジョブの実行順序を決定すること、
前記システムによって、前記実行順序に基づいて前記量子コンピューティング・ジョブへの参照を格納すること
を含み、
前記決定することが、前記システムによって、前記量子コンピューティング・ジョブのうちの少なくとも1つの正しさに対応する定義された信頼度に基づいて前記実行順序を決定することを含む、
前記方法。
【請求項16】
量子コンピューティング・ジョブのスケジューリング・プロセスを容易にするためのコンピュータ・プログラムであって、
コンピュータに、請求項10ないし15のいずれか
1項に記載の方法を実行させる、コンピュータ・プログラム。
【請求項17】
コンピュータの内部メモリに読込み可能なコンピュータ・プログラムであって、前記プログラムが前記コンピュータ上で実行されることに応答して、請求項10ないし15のいずれか
1項に記載の方法を前記コンピュータに実行させる、コンピュータ・プログラム。
【請求項18】
システムであって、
コンピュータ実行可能コンポーネントを格納するメモリと、
前記メモリに格納された前記コンピュータ実行可能コンポーネントを実行するプロセッサと
を備え、前記コンピュータ実行可能コンポーネントが、
1つまたは複数の量子に基づく実行制約に基づいて量子コンピューティング・ジョブの実行順序を決定するスケジューラ・コンポーネントと、
前記実行順序に基づいて前記量子コンピューティング・ジョブのうちの少なくとも1つを1つまたは複数の量子コンピューティング・デバイスにサブミットするサブミット・コンポーネントと
を
備えてており、
前記前記スケジューラ・コンポーネントが、定義された忠実度を含んでいる1つまたは複数の量子ビットの可用性に基づいて前記実行順序をさらに決定する、
前記システム。
【請求項19】
前記1つまたは複数の量子コンピューティング・デバイスが、クラウド・コンピューティング環境の1つまたは複数の量子コンピューティング・デバイスを
備えている、
請求項18に記載のシステム。
【請求項20】
前記スケジューラ・コンポーネントが、前記量子コンピューティング・ジョブに対応する最長の実行時間の近似値、1つもしくは複数の好ましい量子ビットの可用性、または前記量子コンピューティング・ジョブのうちの少なくとも1つの正しさに対応する定義された信頼度、のうちの少なくとも1つに基づいて前記実行順序を決定する、
請求項18または19に記載のシステム。
【請求項21】
前記1つまたは複数の量子に基づく実行制約が、量子コンピューティング・ジョブを実行するための定義された量子ビットの数、またはエラー修正に基づいて量子コンピューティング・ジョブを実行するための定義された量子ビットの数、のうちの少なくとも1つを含む、
請求項18ないし20のいずれか
1項に記載のシステム。
【請求項22】
コンピュータにより実行される方法であって、
プロセッサに動作可能なように結合されたシステムによって、1つまたは複数の量子に基づく実行制約に基づいて量子コンピューティング・ジョブの実行順序を決定すること、
前記システムによって、前記実行順序に基づいて前記量子コンピューティング・ジョブのうちの少なくとも1つを1つまたは複数の量子コンピューティング・デバイスにサブミットすること
を含
み、
前記決定することが、前記システムによって、定義された忠実度を含んでいる1つまたは複数の量子ビットの可用性に基づいて前記実行順序をさらに決定することを含む、
前記方法。
【請求項23】
前記決定することが、前記システムによって、前記量子コンピューティング・ジョブに対応する最長の実行時間の近似値、1つもしくは複数の好ましい量子ビットの可用性、または前記量子コンピューティング・ジョブのうちの少なくとも1つの正しさに対応する定義された信頼度、のうちの少なくとも1つに基づいて前記実行順序を決定することを含む、
請求項22に記載の方法。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、量子コンピューティング・ジョブのスケジューリングに関し、より詳細には、量子に基づく実行制約に基づく量子コンピューティング・ジョブ(quantum computing jobs)の共同スケジューリングに関する。
【背景技術】
【0002】
量子コンピューティングは、通常、計算機能および情報処理機能を実行する目的での量子力学的現象の利用である。量子コンピューティングは、トランジスタを使用して2進値に対して通常は動作する古典的コンピューティングとは対照的であると見なすことができる。すなわち、古典的コンピュータは、0または1のいずれかであるビット値に対して動作することができるが、量子コンピュータは、0と1の両方の重ね合わせを含む量子ビット(quantum bits)(量子ビット(qubit))に対して動作し、複数の量子ビットをもつれさせ、干渉を使用することができる。
【0003】
量子コンピューティング・ハードウェアは、古典的コンピューティング・ハードウェアとは異なる。特に、超伝導量子回路は、通常、半導体デバイスに製造され得るジョセフソン接合に依存する。ジョセフソン接合は、通常、超伝導電流のジョセフソン効果を明白に示し、その場合、電圧が加えられずに、電流がジョセフソン接合を横切って無制限に流れることができる。ジョセフソン接合は、2つの超伝導体(抵抗なしで電気的に伝導する材料)を弱く結合することによって(例えば、トンネル障壁によって)作成され得る。
【0004】
量子コンピューティングにおいてジョセフソン接合を使用できる1つの方法は、ジョセフソン接合を超伝導回路に埋め込んで、量子ビット(quantum bit)(量子ビット(qubit))を形成することによる。ジョセフソン接合は、ジョセフソン接合を分流コンデンサと並列に配置することによって量子ビットを形成するために、使用され得る。そのような複数の量子ビットを、半導体デバイスに製造された超伝導量子回路上に配置することができる。量子ビットは、最近隣の量子ビットに結合できるように、格子(すなわち、グリッド)構造で配置され得る。最近隣の量子ビットに結合された量子ビットのそのような配置は、量子コンピューティング・アーキテクチャを構成することができる。既存の量子コンピューティング・アーキテクチャの一例は、量子表面符号アーキテクチャ(quantum surface code architecture)であり、量子表面符号アーキテクチャは、量子ビットの量子情報の読取り(すなわち、「アドレス指定」または「量子ビットの量子論理状態の読取り」とも呼ばれる)を容易にする、各量子ビットに結合されたマイクロ波読出し共振器をさらに含むことができる。そのような量子表面符号アーキテクチャは、半導体デバイス上で統合されて、統合された量子プロセッサを形成することができ、統合された量子プロセッサは、古典的コンピューティング・デバイス(例えば、汎用コンピュータ、専用コンピュータなど)によって実行され得る機能よりも大幅に複雑な計算機能および情報処理機能を実行することができる。
【0005】
量子コンピューティングは、計算の複雑さに起因して、古典的コンピュータでは全く、または事実上解くことができない問題を、解く可能性がある。しかし、量子コンピューティングは、例えば、量子に基づく実行制約に基づいて量子コンピューティング・ジョブを共同スケジューリングするために、非常に特殊なスキルを要求し、その場合、そのような量子コンピューティング・ジョブは、そのような共同スケジュールに基づく量子コンピューティング・デバイス(例えば、量子コンピュータ、量子プロセッサなど)によって実行され得る。例えば、そのような共同スケジュール(例えば、本開示全体を通じて、実行順序とも呼ばれる)に基づいて、量子コンピューティング・デバイスは、特定の量子ビットを使用して特定の一量子コンピューティング・ジョブを実行することができる。
【0006】
多くの産業の専門家は、量子コンピューティング・システム(例えば、量子コンピュータ、量子プロセッサなど)の一般的な利用が古典的コンピューティング・システム(例えば、クラウドベースのコンピューティング・システム)を補助するようになると考えている。その結果、量子コンピュータが共有リソースになる可能性が高く、すべての共有リソースと同様に、量子コンピュータの最適な利用のために、効率的で公平なジョブ・スケジューリングが重要になる。
【0007】
古典的コンピュータとは異なり、量子コンピュータがジョブを完了まで実行しなければならず、ジョブをディスクにスワップするのが不可能であるということに注意するのは、重要である。したがって、効率的なスケジューリングが特に重要になる。しかし、量子コンピューティング・ジョブの効率的なスケジューリングには、そのような量子コンピューティング・ジョブに関連するか、またはそのようなジョブを実行する量子コンピューティング・システムに関連するか、あるいはその両方に関連する、量子コンピューティングに特有の1つまたは複数の量子に基づく実行制約の考慮が必要になる。既存の古典的コンピューティング・ジョブまたは量子コンピューティング・ジョブあるいはその両方のスケジューリング・システムに伴う問題は、それらのスケジューリング・システムが、1つまたは複数の量子コンピューティング・デバイス(例えば、量子コンピュータ、量子プロセッサなど)によって実行される量子コンピューティング・ジョブをスケジューリングするときに、そのような量子に基づく実行制約を考慮せず、その結果、そのような量子コンピューティング・デバイスの非効率的な利用または不公平な利用あるいはその両方をもたらすということである。
【0008】
したがって、当技術分野において、前述の問題に対処する必要がある。
【発明の概要】
【0009】
第1の態様から見ると、本発明は、量子コンピューティング・ジョブのスケジューリング・プロセスを容易にするためのシステムを提供し、このシステムは、コンピュータ実行可能コンポーネントを格納するメモリと、メモリに格納されたコンピュータ実行可能コンポーネントを実行するプロセッサとを備え、コンピュータ実行可能コンポーネントは、1つまたは複数の量子に基づく実行制約に基づいて量子コンピューティング・ジョブの実行順序を決定するスケジューラ・コンポーネントと、実行順序に基づいて量子コンピューティング・ジョブへの参照を格納する実行キュー・コンポーネントとを含む。
【0010】
さらに別の態様から見ると、本発明は、量子コンピューティング・ジョブのスケジューリング・プロセスを容易にするためのコンピュータ実装方法を提供し、このコンピュータ実装方法は、プロセッサに動作可能なように結合されたシステムによって、1つまたは複数の量子に基づく実行制約に基づいて量子コンピューティング・ジョブの実行順序を決定することと、このシステムによって、実行順序に基づいて量子コンピューティング・ジョブへの参照を格納することとを含む。
【0011】
さらに別の態様から見ると、本発明は、量子コンピューティング・ジョブのスケジューリング・プロセスを容易にするためのコンピュータ・プログラム製品を提供し、このコンピュータ・プログラム製品は、プログラム命令が具現化されたコンピュータ可読ストレージ媒体を備え、これらのプログラム命令は、プロセッサに、1つまたは複数の量子に基づく実行制約に基づいて量子コンピューティング・ジョブの実行順序をプロセッサによって決定することと、実行順序に基づいて量子コンピューティング・ジョブへの参照をプロセッサによって格納することとを実行させるように、プロセッサによって実行可能である。
【0012】
さらに別の態様から見ると、本発明は、量子コンピューティング・ジョブのスケジューリング・プロセスを容易にするためのコンピュータ・プログラム製品を提供し、このコンピュータ・プログラム製品は、処理回路によって読取り可能な、本発明のステップを実行するための方法を実行するために処理回路によって実行される命令を格納している、コンピュータ可読ストレージ媒体を備える。
【0013】
さらに別の態様から見ると、本発明は、コンピュータ可読媒体に格納された、デジタル・コンピュータの内部メモリに読込み可能なコンピュータ・プログラムを提供し、このコンピュータ・プログラムは、コンピュータ上で実行された場合に本発明のステップを実行するためのソフトウェア・コード部分を含む。
【0014】
以下に、本発明の1つまたは複数の実施形態の基本的理解を可能にするための概要を示す。この概要は、主要な要素または重要な要素を特定するよう意図されておらず、特定の実施形態の範囲または特許請求の範囲を正確に説明するよう意図されていない。この概要の唯一の目的は、後で提示されるより詳細な説明の前置きとして、概念を簡略化された形態で提示することである。本明細書に記載された1つまたは複数の実施形態では、量子コンピューティング・ジョブのスケジューリングを容易にするシステム、デバイス、コンピュータ実装方法、またはコンピュータ・プログラム製品、あるいはその組合せが説明される。
【0015】
一実施形態によれば、システムは、コンピュータ実行可能コンポーネントを格納するメモリ、およびメモリに格納されたコンピュータ実行可能コンポーネントを実行するプロセッサを備えることができる。コンピュータ実行可能コンポーネントは、1つまたは複数の量子に基づく実行制約に基づいて量子コンピューティング・ジョブの実行順序を決定できるスケジューラ・コンポーネントを含むことができる。コンピュータ実行可能コンポーネントは、実行順序に基づいて量子コンピューティング・ジョブへの参照を格納できる実行キュー・コンポーネントをさらに含むことができる。そのようなシステムの利点は、(例えば、クラウド・コンピューティング環境を介して)複数の実体によって利用され得る1つまたは複数の量子コンピューティング・デバイス(例えば、量子コンピュータ、量子プロセッサなど)によって実行される量子コンピューティング・ジョブの効率的で公平なスケジューリング(例えば、共同スケジューリング)を容易にすることができるということである。
【0016】
一実施形態では、スケジューラ・コンポーネントは、定義された忠実度を含んでいる1つまたは複数の量子ビットの可用性に基づいて、実行順序を決定することができる。そのようなシステムの利点は、1つまたは複数の量子コンピューティング・デバイスによって実行される計算に対する正確な解を容易にすることができるということである。
【0017】
一実施形態によれば、コンピュータ実装方法は、プロセッサに動作可能なように結合されたシステムによって、1つまたは複数の量子に基づく実行制約に基づいて量子コンピューティング・ジョブの実行順序を決定することを、含むことができる。コンピュータ実装方法は、システムによって、実行順序に基づいて量子コンピューティング・ジョブへの参照を格納することを、さらに含むことができる。そのようなコンピュータ実装方法の利点は、(例えば、クラウド・コンピューティング環境を介して)複数の実体によって利用され得る1つまたは複数の量子コンピューティング・デバイス(例えば、量子コンピュータ、量子プロセッサなど)によって実行される量子コンピューティング・ジョブの効率的で公平なスケジューリング(例えば、共同スケジューリング)を容易にすることができるということである。
【0018】
一実施形態では、この決定することは、システムによって、定義された忠実度を含んでいる1つまたは複数の量子ビットの可用性に基づいて実行順序を決定することを、含むことができる。そのようなコンピュータ実装方法の利点は、1つまたは複数の量子コンピューティング・デバイスによって実行される計算に対する正確な解を容易にすることができるということである。
【0019】
一実施形態によれば、量子計算ジョブ(quantum computation job)のスケジューリング・プロセスを容易にすることができるコンピュータ・プログラム製品が提供される。このコンピュータ・プログラム製品は、プログラム命令が具現化されたコンピュータ可読ストレージ媒体を備えることができ、これらのプログラム命令は、処理コンポーネントに、1つまたは複数の量子に基づく実行制約に基づいて量子コンピューティング・ジョブの実行順序をプロセッサによって決定させるように、処理コンポーネントによって実行可能であることができる。これらのプログラム命令は、処理コンポーネントに、実行順序に基づいて量子コンピューティング・ジョブへの参照をプロセッサによって格納させることもできる。そのようなコンピュータ・プログラム製品の利点は、(例えば、クラウド・コンピューティング環境を介して)複数の実体によって利用され得る1つまたは複数の量子コンピューティング・デバイス(例えば、量子コンピュータ、量子プロセッサなど)によって実行される量子コンピューティング・ジョブの効率的で公平なスケジューリング(例えば、共同スケジューリング)を容易にすることができるということである。
【0020】
一実施形態では、これらのプログラム命令は、プロセッサに、量子コンピューティング・ジョブの実行時間の近似値、定義された忠実度を含んでいる1つまたは複数の量子ビットの可用性、または量子コンピューティング・ジョブのうちの少なくとも1つの正しさに対応する定義された信頼度、のうちの少なくとも1つに基づいて、実行順序をプロセッサによって決定させるように、プロセッサによってさらに実行可能である。そのようなコンピュータ・プログラム製品の利点は、1つまたは複数の量子コンピューティング・デバイスによって実行される計算に対する正確な解を容易にすることができるということである。
【0021】
一実施形態によれば、システムは、コンピュータ実行可能コンポーネントを格納するメモリ、およびメモリに格納されたコンピュータ実行可能コンポーネントを実行するプロセッサを備えることができる。コンピュータ実行可能コンポーネントは、1つまたは複数の量子に基づく実行制約に基づいて量子コンピューティング・ジョブの実行順序を決定できるスケジューラ・コンポーネントを含むことができる。コンピュータ実行可能コンポーネントは、実行順序に基づいて量子コンピューティング・ジョブのうちの少なくとも1つを1つまたは複数の量子コンピューティング・デバイスにサブミットできるサブミット・コンポーネントを、さらに含むことができる。そのようなシステムの利点は、(例えば、クラウド・コンピューティング環境を介して)複数の実体によって利用され得る1つまたは複数の量子コンピューティング・デバイス(例えば、量子コンピュータ、量子プロセッサなど)によって実行される量子コンピューティング・ジョブの効率的で公平なスケジューリング(例えば、共同スケジューリング)を容易にすることができるということである。
【0022】
一実施形態では、スケジューラ・コンポーネントは、量子コンピューティング・ジョブに対応する最長の実行時間の近似値、1つまたは複数の好ましい量子ビットの可用性、または量子コンピューティング・ジョブのうちの少なくとも1つの正しさに対応する定義された信頼度、のうちの少なくとも1つに基づいて、実行順序を決定することができる。そのようなシステムの利点は、1つまたは複数の量子コンピューティング・デバイスによって実行される計算に対する正確な解を容易にすることができるということである。
【0023】
一実施形態によれば、コンピュータ実装方法は、プロセッサに動作可能なように結合されたシステムによって、1つまたは複数の量子に基づく実行制約に基づいて量子コンピューティング・ジョブの実行順序を決定することを、含むことができる。コンピュータ実装方法は、システムによって、実行順序に基づいて量子コンピューティング・ジョブのうちの少なくとも1つを1つまたは複数の量子コンピューティング・デバイスにサブミットすることを、さらに含むことができる。そのようなコンピュータ実装方法の利点は、(例えば、クラウド・コンピューティング環境を介して)複数の実体によって利用され得る1つまたは複数の量子コンピューティング・デバイス(例えば、量子コンピュータ、量子プロセッサなど)によって実行される量子コンピューティング・ジョブの効率的で公平なスケジューリング(例えば、共同スケジューリング)を容易にすることができるということである。
【0024】
一実施形態では、この決定することは、システムによって、量子コンピューティング・ジョブに対応する最長の実行時間の近似値、1つまたは複数の好ましい量子ビットの可用性、または量子コンピューティング・ジョブのうちの少なくとも1つの正しさに対応する定義された信頼度、のうちの少なくとも1つに基づいて実行順序を決定することを、含むことができる。そのようなコンピュータ実装方法の利点は、1つまたは複数の量子コンピューティング・デバイスによって実行される計算に対する正確な解を容易にすることができるということである。
【0025】
以下では、次の図に示された好ましい実施形態を単に例として参照し、本発明が説明される。
【図面の簡単な説明】
【0026】
【
図1】本明細書に記載された1つまたは複数の実施形態に従って、量子コンピューティング・ジョブのスケジューリング・コンポーネントを容易にすることができる、一例示的な非限定的システムのブロック図である。
【
図2A】本明細書に記載された1つまたは複数の実施形態に従って、量子コンピューティング・ジョブのスケジューリング・コンポーネントを容易にすることができる、一例示的な非限定的実行順序を示す図である。
【
図2B】本明細書に記載された1つまたは複数の実施形態に従って、量子コンピューティング・ジョブのスケジューリング・コンポーネントを容易にすることができる、一例示的な非限定的実行順序を示す図である。
【
図3】本明細書に記載された1つまたは複数の実施形態に従って、量子コンピューティング・ジョブのスケジューリング・コンポーネントを容易にすることができる、一例示的な非限定的システムのブロック図である。
【
図4】本明細書に記載された1つまたは複数の実施形態に従って、量子コンピューティング・ジョブのスケジューリング・コンポーネントを容易にすることができる、一例示的な非限定的システムのブロック図である。
【
図5】本明細書に記載された1つまたは複数の実施形態に従って、量子コンピューティング・ジョブのスケジューリング・コンポーネントを容易にすることができる、一例示的な非限定的システムのブロック図である。
【
図6】本明細書に記載された1つまたは複数の実施形態に従って、量子コンピューティング・ジョブのスケジューリング・コンポーネントを容易にすることができる、一例示的な非限定的コンピュータ実装方法のフロー図である。
【
図7】本明細書に記載された1つまたは複数の実施形態に従って、量子コンピューティング・ジョブのスケジューリング・コンポーネントを容易にすることができる、一例示的な非限定的コンピュータ実装方法のフロー図である。
【
図8】本明細書に記載された1つまたは複数の実施形態を容易にすることができる一例示的な非限定的動作環境のブロック図である。
【
図9】本開示の1つまたは複数の実施形態に従う、一例示的な非限定的クラウド・コンピューティング環境のブロック図である。
【
図10】本開示の1つまたは複数の実施形態に従う、一例示的な非限定的抽象モデル・レイヤのブロック図である。
【発明を実施するための形態】
【0027】
以下の詳細な説明は、例にすぎず、実施形態、または実施形態の適用もしくは使用、あるいはその両方を制限するよう意図されていない。
【0028】
ここで、図面を参照して1つまたは複数の実施形態が説明され、図面全体を通じて、類似する参照番号が、類似する要素を参照するために使用されている。以下の説明では、説明の目的で、1つまたは複数の実施形態を十分に理解できるように、多数の特定の詳細が示されている。しかし、これらの特定の詳細がなくても、さまざまな事例において、1つまたは複数の実施形態が実践され得るということは明らかである。
【0029】
1つまたは複数の量子コンピューティング・デバイス(例えば、量子コンピュータ、量子プロセッサなど)によって実行される量子コンピューティング・ジョブをスケジューリングするときに量子に基づく実行制約を考慮しないことにより、そのような量子コンピューティング・デバイスの非効率的な利用または不公平な利用あるいはその両方をもたらす、既存の古典的コンピューティング・ジョブまたは量子コンピューティング・ジョブあるいはその両方のスケジューリング・システムに伴う上記の問題を前提として、本開示は、1つまたは複数の量子に基づく実行制約に基づいて量子コンピューティング・ジョブの実行順序を決定できるスケジューラ・コンポーネントを備えているシステムの形態で、この問題に対する解決策を作り出すように実装され得る。そのようなシステムの利点は、(例えば、クラウド・コンピューティング環境を介して)複数の実体によって利用され得る1つまたは複数の量子コンピューティング・デバイス(例えば、量子コンピュータ、量子プロセッサなど)によって実行される量子コンピューティング・ジョブの効率的で公平なスケジューリング(例えば、共同スケジューリング)を容易にすることができるということである。
【0030】
図1は、本明細書に記載された1つまたは複数の実施形態に従って、量子コンピューティング・ジョブのスケジューリング・コンポーネントを容易にすることができる、一例示的な非限定的システム100のブロック図を示している。一部の実施形態では、システム100は、クラウド・コンピューティング環境に関連付けられ得る量子コンピューティング・ジョブ・スケジューリング・システム102を含むことができる。例えば、量子コンピューティング・ジョブ・スケジューリング・システム102は、
図9を参照して下で説明されるクラウド・コンピューティング環境950、または
図10を参照して下で説明される1つもしくは複数の機能的抽象レイヤ(例えば、ハードウェアおよびソフトウェア・レイヤ1060、仮想化レイヤ1070、管理レイヤ1080、またはワークロード・レイヤ1090、あるいはその組合せ)、あるいはその両方に関連付けられ得る。
【0031】
本開示にはクラウド・コンピューティングに関する詳細な説明が含まれているが、本明細書において示された内容の実装は、クラウド・コンピューティング環境に限定されないと理解されるべきである。むしろ、本発明の実施形態は、現在既知であるか、または今後開発される任意のその他の種類のコンピューティング環境と組み合わせて実装できる。
【0032】
クラウド・コンピューティングは、構成可能な計算リソース(例えば、ネットワーク、ネットワーク帯域幅、サーバ、処理、メモリ、ストレージ、アプリケーション、仮想マシン、およびサービス)の共有プールへの便利なオンデマンドのネットワーク・アクセスを可能にするためのサービス提供モデルであり、管理上の手間またはサービス・プロバイダとのやりとりを最小限に抑えて、これらのリソースを迅速にプロビジョニングおよび解放することができる。このクラウド・モデルは、少なくとも5つの特徴、少なくとも3つのサービス・モデル、および少なくとも4つのデプロイメント・モデルを含むことができる。
【0033】
特徴は、次のとおりである。
オンデマンドのセルフ・サービス:クラウドの利用者は、サーバの時間およびネットワーク・ストレージなどの計算能力を一方的に、サービス・プロバイダとの人間的なやりとりを必要とせず、必要に応じて自動的にプロビジョニングすることができる。
幅広いネットワーク・アクセス:クラウドの能力は、ネットワークを経由して利用可能であり、標準的なメカニズムを使用してアクセスできるため、異種のシン・クライアントまたはシック・クライアント・プラットフォーム(例えば、携帯電話、ラップトップ、およびPDA)による利用を促進する。
リソース・プール:プロバイダの計算リソースは、プールされ、マルチテナント・モデルを使用して複数の利用者に提供される。さまざまな物理的および仮想的リソースが、要求に従って動的に割当ておよび再割当てされる。場所に依存しないという感覚があり、利用者は通常、提供されるリソースの正確な場所に関して管理することも知ることもないが、さらに高い抽象レベルでは、場所(例えば、国、州、またはデータセンター)を指定できる場合がある。
迅速な順応性:クラウドの能力は、迅速かつ柔軟に、場合によっては自動的にプロビジョニングされ、素早くスケールアウトし、迅速に解放されて素早くスケールインすることができる。プロビジョニングに使用できる能力は、利用者には、多くの場合、任意の量をいつでも無制限に購入できるように見える。
測定されるサービス:クラウド・システムは、計測機能を活用することによって、サービスの種類(例えば、ストレージ、処理、帯域幅、およびアクティブなユーザのアカウント)に適した一部の抽象レベルで、リソースの使用を自動的に制御および最適化する。リソースの使用量は監視、制御、および報告することができ、利用されるサービスのプロバイダと利用者の両方に透明性が提供される。
【0034】
サービス・モデルは、次のとおりである。
SaaS(Software as a Service):利用者に提供される能力は、クラウド・インフラストラクチャ上で稼働しているプロバイダのアプリケーションの利用である。それらのアプリケーションは、Webブラウザ(例えば、Webベースの電子メール)などのシン・クライアント・インターフェイスを介して、さまざまなクライアント・デバイスからアクセスできる。利用者は、ネットワーク、サーバ、オペレーティング・システム、ストレージ、または個々のアプリケーション機能さえも含む基盤になるクラウド・インフラストラクチャを、限定的なユーザ固有のアプリケーション構成設定を行う可能性を除き、管理することも制御することもない。
PaaS(Platform as a Service):利用者に提供される能力は、プロバイダによってサポートされるプログラミング言語およびツールを使用して作成された、利用者が作成または取得したアプリケーションをクラウド・インフラストラクチャにデプロイすることである。利用者は、ネットワーク、サーバ、オペレーティング・システム、またはストレージを含む基盤になるクラウド・インフラストラクチャを管理することも制御することもないが、デプロイされたアプリケーション、および場合によってはアプリケーション・ホスティング環境の構成を制御することができる。
IaaS(Infrastructure as a Service):利用者に提供される能力は、処理、ストレージ、ネットワーク、およびその他の基本的な計算リソースのプロビジョニングであり、その場合、利用者は、オペレーティング・システムおよびアプリケーションを含むことができる任意のソフトウェアをデプロイして実行できる。利用者は、基盤になるクラウド・インフラストラクチャを管理することも制御することもないが、オペレーティング・システム、ストレージ、デプロイされたアプリケーションを制御することができ、場合によっては、選択されたネットワーク・コンポーネント(例えば、ホスト・ファイアウォール)を限定的に制御できる。
【0035】
デプロイメント・モデルは、次のとおりである。
プライベート・クラウド:このクラウド・インフラストラクチャは、ある組織のためにのみ運用される。この組織またはサード・パーティによって管理することができ、オンプレミスまたはオフプレミスに存在することができる。
コミュニティ・クラウド:このクラウド・インフラストラクチャは、複数の組織によって共有され、関心事(例えば、任務、セキュリティ要件、ポリシー、およびコンプライアンスに関する考慮事項)を共有している特定のコミュニティをサポートする。これらの組織またはサード・パーティによって管理することができ、オンプレミスまたはオフプレミスに存在することができる。
パブリック・クラウド:このクラウド・インフラストラクチャは、一般ユーザまたは大規模な業界団体が使用できるようになっており、クラウド・サービスを販売する組織によって所有される。
ハイブリッド・クラウド:このクラウド・インフラストラクチャは、データとアプリケーションの移植を可能にする標準化された技術または独自の技術(例えば、クラウド間の負荷バランスを調整するためのクラウド・バースト)によって固有の実体を残したまま互いに結合された2つ以上のクラウド(プライベート、コミュニティ、またはパブリック)の複合である。
【0036】
クラウド・コンピューティング環境は、ステートレス、疎結合、モジュール性、および意味的相互運用性に重点を置いたサービス指向の環境である。クラウド・コンピューティングの中心になるのは、相互接続されたノードのネットワークを含んでいるインフラストラクチャである。
【0037】
ここで引き続き
図1を参照すると、複数の実施形態によれば、システム100は量子コンピューティング・ジョブ・スケジューリング・システム102を含むことができる。一部の実施形態では、量子コンピューティング・ジョブ・スケジューリング・システム102は、メモリ104、プロセッサ106、スケジューラ・コンポーネント108、実行キュー・コンポーネント110、またはバス112、あるいはその組合せを備えることができる。
【0038】
本明細書で開示されたさまざまな図に示されている本開示の実施形態が、単に説明のためであり、そのため、そのような実施形態のアーキテクチャが本明細書に示されているシステム、デバイス、またはコンポーネント、あるいはその組合せに限定されないということが、理解されるべきである。例えば、一部の実施形態では、システム100または量子コンピューティング・ジョブ・スケジューリング・システム102あるいはその両方は、動作環境800および
図8を参照して本明細書において説明されるさまざまなコンピュータまたは計算に基づく要素あるいはその両方をさらに備えることができる。複数の実施形態では、そのようなコンピュータまたは計算に基づく要素あるいはその両方は、本明細書で開示された
図1またはその他の図に関連して示され、説明されるシステム、デバイス、コンポーネント、またはコンピュータ実装動作、あるいはその組合せのうちの1つまたは複数を実装することに関連して、使用され得る。
【0039】
複数の実施形態によれば、メモリ104は、1つもしくは複数のコンピュータまたは機械あるいはその両方が読み取ることができるか、書き込むことができるか、または実行することができるか、あるいはその組合せが可能であるコンポーネントまたは命令あるいはその両方を格納することができ、これらのコンポーネントまたは命令あるいはその両方は、プロセッサ106によって実行された場合に、実行可能なコンポーネントまたは命令あるいはその両方によって定義された動作の実行を容易にすることができる。例えば、メモリ104は、コンピュータもしくは機械あるいはその両方が読み取ることができるか、書き込むことができるか、または実行することができるか、あるいはその組合せが可能であるコンポーネントまたは命令あるいはその両方を格納することができ、これらのコンポーネントまたは命令あるいはその両方は、本開示のさまざまな図を参照して、または参照せずに本明細書において説明されているように、プロセッサ106によって実行された場合に、量子コンピューティング・ジョブ・スケジューリング・システム102、スケジューラ・コンポーネント108、実行キュー・コンポーネント110、または量子コンピューティング・ジョブ・スケジューリング・システム102に関連付けられた別のコンポーネント(例えば、制約チェッカー・コンポーネント302、サブミット・コンポーネント402、非飢餓コンポーネント(non-starvation component)502など)に関連する、本明細書に記載されたさまざまな機能の実行を容易にすることができる。
【0040】
一部の実施形態では、メモリ104は、1つまたは複数のメモリ・アーキテクチャを採用することができる、揮発性メモリ(例えば、ランダム・アクセス・メモリ(RAM:random access memory)、スタティックRAM(SRAM:static RAM)、ダイナミックRAM(DRAM:dynamic RAM)など)または不揮発性メモリ(例えば、読取り専用メモリ(ROM:read only memory)、プログラマブルROM(PROM:programmable ROM)、電気的プログラマブルROM(EPROM:electrically programmable ROM)、電気的消去可能プログラマブルROM(EEPROM:electrically erasable programmable ROM)など)あるいはその両方を含むことができる。メモリ104のさらに別の例が、システム・メモリ816および
図8を参照して下で説明される。メモリ104のそのような例が、本開示のいずれかの実施形態を実装するために採用され得る。
【0041】
複数の実施形態によれば、プロセッサ106は、1つもしくは複数のコンピュータまたは機械あるいはその両方が読み取ることができるか、書き込むことができるか、または実行することができるか、あるいはその組合せが可能である、メモリ104に格納できるコンポーネントまたは命令あるいはその両方を実装できる、プロセッサまたは電子回路あるいはその両方の1つまたは複数の種類を含むことができる。例えば、プロセッサ106は、そのようなコンピュータまたは機械あるいはその両方が読み取ることができるか、書き込むことができるか、または実行することができるか、あるいはその組合せが可能であるコンポーネントまたは命令あるいはその両方によって指定され得る、論理、制御、入出力(I/O:input/output)、算術、または同様のもの、あるいはその組合せを含むが、これらに限定されない、さまざまな動作を実行することができる。一部の実施形態では、プロセッサ106は、1つもしくは複数の中央処理装置、マルチコア・プロセッサ、マイクロプロセッサ、デュアル・マイクロプロセッサ、マイクロコントローラ、システム・オン・チップ(SOC:System on a Chip)、アレイ・プロセッサ、ベクトル・プロセッサ、または別の種類のプロセッサ、あるいはその組合せを含むことができる。プロセッサ106のさらに別の例が、処理ユニット814および
図8を参照して下で説明される。プロセッサ106のそのような例が、本開示のいずれかの実施形態を実装するために採用され得る。
【0042】
一部の実施形態では、本明細書において説明されているような量子コンピューティング・ジョブ・スケジューリング・システム102、メモリ104、プロセッサ106、スケジューラ・コンポーネント108、実行キュー・コンポーネント110、または量子コンピューティング・ジョブ・スケジューリング・システム102の別のコンポーネント、あるいはその組合せは、通信によって、電気的に、または動作可能なように、あるいはその組合せで、バス112を介して互いに結合され、システム100、量子コンピューティング・ジョブ・スケジューリング・システム102、またはそれらのシステムに結合されたいずれかのコンポーネント、あるいはその組合せの機能を実行することができる。複数の実施形態では、バス112は、1つもしくは複数のメモリ・バス、メモリ・コントローラ、ペリフェラル・バス、外部バス、ローカル・バス、またはさまざまなバス・アーキテクチャを採用することができる別の種類のバス、あるいはその組合せを含むことができる。バス112のさらに別の例が、システム・バス818および
図8を参照して下で説明される。バス112のそのような例が、本開示のいずれかの実施形態を実装するために採用され得る。
【0043】
一部の実施形態では、量子コンピューティング・ジョブ・スケジューリング・システム102は、プロセッサを備えているか、または有線ネットワークもしくは無線ネットワークまたはその両方と効果的通信もしくは動作可能な通信またはその両方を実行することができるか、あるいはその両方である、任意の種類のコンポーネント、機械、デバイス、設備、装置、または機器、あるいはその組合せを備えることができる。そのようなすべての実施形態が想定される。例えば、量子コンピューティング・ジョブ・スケジューリング・システム102は、サーバ・デバイス、コンピューティング・デバイス、汎用コンピュータ、専用コンピュータ、量子コンピューティング・デバイス(例えば、量子コンピュータ)、タブレット・コンピューティング・デバイス、ハンドヘルド・デバイス、サーバ・クラス・コンピューティング・マシンもしくはデータベースまたはその両方、ラップトップ・コンピュータ、ノートブック・コンピュータ、デスクトップ・コンピュータ、携帯電話、スマートフォン、民生用装置もしくは民生用機器またはその両方、工業用デバイスもしくは商用デバイスまたはその両方、デジタル・アシスタント、インターネットが有効化されたマルチメディア電話、マルチメディア・プレイヤ、あるいは別の種類のデバイス、あるいはその組合せを備えることができる。
【0044】
一部の実施形態では、量子コンピューティング・ジョブ・スケジューリング・システム102は、データ・ケーブル(例えば、高精細度マルチメディア・インターフェイス(HDMI(R):High-Definition Multimedia Interface)、勧告基準(RS:recommended standard)232イーサネット(R)・ケーブルなど)を介して、1つもしくは複数の外部のシステム、ソース、またはデバイス(例えば、コンピューティング・デバイス、通信デバイスなど)、あるいはその組合せに(例えば、通信によって、電気的に、または動作可能なように、などで)結合され得る。一部の実施形態では、量子コンピューティング・ジョブ・スケジューリング・システム102は、ネットワークを介して、1つもしくは複数の外部のシステム、ソース、またはデバイス(例えば、コンピューティング・デバイス、通信デバイスなど)、あるいはその組合せに(例えば、通信によって、電気的に、または動作可能なように、などで)結合され得る。
【0045】
複数の実施形態によれば、そのようなネットワークは、セルラー・ネットワーク、広域ネットワーク(WAN:wide area network)(例えば、インターネット)またはローカル・エリア・ネットワーク(LAN:local area network)を含むが、これらに限定されない、有線ネットワークおよび無線ネットワークを含むことができる。例えば、量子コンピューティング・ジョブ・スケジューリング・システム102は、ワイヤレス・フィディリティ(Wi-Fi:wireless fidelity)、グローバル・システム・フォー・モバイル・コミュニケーションズ(GSM:global system for mobile communications)、ユニバーサル移動体通信システム(UMTS:universal mobile telecommunications system)、ワールドワイド・インターオペラビリティ・フォー・マイクロウェーブ・アクセス(WiMAX:worldwide interoperability for microwave access)、高速汎用パケット無線サービス(enhanced GPRS:enhanced general packet radio service)、第3世代パートナーシップ・プロジェクト(3GPP:third generation partnership project)ロング・ターム・エボリューション(LTE:long term evolution)、第3世代パートナーシップ・プロジェクト2(3GPP2)ウルトラ・モバイル・ブロードバンド(UMB:ultra mobile broadband)、高速パケット・アクセス(HSPA:high speed packet access)、Zigbeeおよびその他の802.XX無線技術もしくはレガシー通信技術またはその両方、BLUETOOTH(R)、セッション初期化プロトコル(SIP:Session Initiation Protocol)、ZIGBEE(R)、RF4CEプロトコル、WirelessHARTプロトコル、6LoWPAN(IPv6 over Low power Wireless Area Networks)、Z-Wave、ANT、超広帯域(UWB:ultra-wideband)標準プロトコル、あるいはその他の独自および非独自の通信プロトコル、あるいはその組合せを含むが、これらに限定されない、事実上任意の望ましい有線技術または無線技術を使用して、1つもしくは複数の外部のシステム、ソース、またはデバイス(例えば、コンピューティング・デバイス)、あるいはその組合せと通信することができる(かつ、その逆向きに通信することができる)。したがって、そのような一例では、量子コンピューティング・ジョブ・スケジューリング・システム102は、量子コンピューティング・ジョブ・スケジューリング・システム102と外部のシステム、ソース、またはデバイス(例えば、コンピューティング・デバイス、通信デバイスなど)、あるいはその組合せとの間での情報の伝達を容易にする、ハードウェア(例えば、中央処理装置(CPU:central processing unit)、トランシーバ、デコーダ)、ソフトウェア(例えば、一連のスレッド、一連のプロセス、実行中のソフトウェア)、またはハードウェアとソフトウェアとの組合せを含むことができる。
【0046】
複数の実施形態によれば、量子コンピューティング・ジョブ・スケジューリング・システム102は、1つもしくは複数のコンピュータまたは機械あるいはその両方が読み取ることができるか、書き込むことができるか、または実行することができるか、あるいはその組合せが可能であるコンポーネントまたは命令あるいはその両方を備えることができ、これらのコンポーネントまたは命令あるいはその両方は、プロセッサ106によって実行された場合に、そのようなコンポーネントまたは命令あるいはその両方によって定義された動作の実行を容易にすることができる。さらに、多くの実施形態では、量子コンピューティング・ジョブ・スケジューリング・システム102に関連付けられたすべてのコンポーネントは、本開示のさまざまな図を参照して、または参照せずに本明細書において説明されているように、1つもしくは複数のコンピュータまたは機械あるいはその両方が読み取ることができるか、書き込むことができるか、または実行することができるか、あるいはその組合せが可能であるコンポーネントまたは命令あるいはその両方を備えることができ、これらのコンポーネントまたは命令あるいはその両方は、プロセッサ106によって実行された場合に、そのようなコンポーネントまたは命令あるいはその両方によって定義された動作の実行を容易にすることができる。例えば、(例えば、通信によって、電気的に、もしくは動作可能なように、またはその組合せで量子コンピューティング・ジョブ・スケジューリング・システム102に結合されたか、または量子コンピューティング・ジョブ・スケジューリング・システム102によって採用されたか、あるいはその両方である)スケジューラ・コンポーネント108、実行キュー・コンポーネント110、または本明細書で開示されるような量子コンピューティング・ジョブ・スケジューリング・システム102に関連付けられたその他すべてのコンポーネント、あるいはその組合せは、そのようなコンピュータまたは機械あるいはその両方が読み取ることができるか、書き込むことができるか、または実行することができるか、あるいはその組合せが可能であるコンポーネントまたは命令あるいはその両方を備えることができる。したがって、多くの実施形態によれば、量子コンピューティング・ジョブ・スケジューリング・システム102または本明細書で開示されるような量子コンピューティング・ジョブ・スケジューリング・システム102に関連付けられたすべてのコンポーネントあるいはその両方は、そのようなコンピュータまたは機械あるいはその両方が読み取ることができるか、書き込むことができるか、または実行することができるか、あるいはその組合せが可能であるコンポーネントまたは命令あるいはその両方を実行して、量子コンピューティング・ジョブ・スケジューリング・システム102または量子コンピューティング・ジョブ・スケジューリング・システム102に関連付けられたそのようなすべてのコンポーネントあるいはその両方を参照して本明細書において説明された1つまたは複数の動作の実行を容易にするために、プロセッサ106を採用することができる。
【0047】
一部の実施形態では、1つまたは複数の量子コンピューティング・ジョブのスケジューリング動作を実施するために、量子コンピューティング・ジョブ・スケジューリング・システム102は、スケジューラ・コンポーネント108、実行キュー・コンポーネント110、または本明細書で開示されるような量子コンピューティング・ジョブ・スケジューリング・システム102に関連付けられた別のコンポーネント(例えば、制約チェッカー・コンポーネント302、サブミット・コンポーネント402、非飢餓コンポーネント502など)、あるいはその組合せによって実行されるか、またはそれらのコンポーネントに関連付けられたか、あるいはその両方である動作の実行を、容易にすることができる。例えば、下で詳細に説明されるように、量子コンピューティング・ジョブ・スケジューリング・システム102は、1つもしくは複数の量子に基づく実行制約に基づいて量子コンピューティング・ジョブの実行順序を決定すること、実行順序に基づいて量子コンピューティング・ジョブを格納すること、実行順序に基づいて量子コンピューティング・ジョブのうちの少なくとも1つを1つもしくは複数の量子コンピューティング・デバイスにサブミットすること、量子コンピューティング・ジョブの実行時間の近似値に基づいて実行順序を決定すること、実行順序が量子ビット通信制約(qubit communication constraint)に違反しているかどうかを判定すること、定義された忠実度を含んでいる1つもしくは複数の量子ビットの可用性に基づいて実行順序を決定すること、量子コンピューティング・ジョブのうちの少なくとも1つの正しさに対応する定義された信頼度に基づいて実行順序を決定すること、あるいは量子コンピューティング・ジョブに対応する最長の実行時間の近似値、1つもしくは複数の好ましい量子ビットの可用性、または量子コンピューティング・ジョブのうちの少なくとも1つの正しさに対応する定義された信頼度、のうちの少なくとも1つに基づいて実行順序を決定すること、あるいはその組合せを、容易にすることができる。
【0048】
複数の実施形態によれば、スケジューラ・コンポーネント108は、1つまたは複数の量子に基づく実行制約に基づいて量子コンピューティング・ジョブの実行順序を決定することができる。例えば、スケジューラ・コンポーネント108は、例えば、1つもしくは複数の量子コンピュータ、1つもしくは複数の量子プロセッサ、または別の量子コンピューティング・デバイス、あるいはその組合せなどの、1つまたは複数の量子コンピューティング・デバイスによって実行され得る、量子コンピューティング・ジョブの実行順序(例えば、実行される保留中の量子コンピューティング実行インスタンス)を決定することができる。一部の実施形態では、そのような実行順序は、量子コンピューティング・ジョブ(例えば、実行される保留中の量子コンピューティング実行インスタンス)への参照または量子コンピューティング・ジョブの説明あるいはその両方を含んでいる実行スケジュールを含むことができ、その場合、そのような実行スケジュールは、特定の量子コンピュータによって、またはそのような量子コンピュータの特定の量子ビットによって、あるいはその両方によって、各量子コンピューティング・ジョブをいつ実行できるかを示すことができる。一部の実施形態では、そのような量子コンピューティング・ジョブは、計算、データ処理、または別の量子コンピューティング実行インスタンス、あるいはその組合せを含むが、これらに限定されない、量子コンピューティング実行インスタンスを含むことができる。一部の実施形態では、そのような1つまたは複数の量子に基づく実行制約は、量子コンピューティング・ジョブを実行するために必要な定義された量子ビットの数、エラー修正に基づいて量子コンピューティング・ジョブを実行するために必要な定義された量子ビットの数、または別の量子に基づく実行制約(例えば、実行順序200a、実行順序200b、
図2A、および
図2Bを参照して下で説明されているような)、あるいはその組合せを含むことができるが、これらに限定されない。これらの実施形態では、量子コンピューティング・ジョブを実行するために必要なそのような量子ビットの定義された数またはエラー修正に基づいて量子コンピューティング・ジョブを実行するために必要なそのような定義された量子ビットの数あるいはその両方は、下で説明されているように、量子コンピューティング・ジョブ・スケジューリング・システム102の1つもしくは複数の入力デバイス、出力デバイス、またはユーザ・インターフェイス、あるいはその組合せを使用する実体(例えば、人間)によって定義され得る。
【0049】
一部の実施形態では、スケジューラ・コンポーネント108は、1つまたは複数のビン・パッキング・アルゴリズムを使用して量子コンピューティング・ジョブを共同スケジューリングすることによって、1つまたは複数の量子に基づく実行制約に基づいて量子コンピューティング・ジョブの実行順序を決定することができる。例えば、スケジューラ・コンポーネント108は、同時に使用されるすべての量子ビットの合計がN以下になる(例えば、同時に使用されるすべての量子ビットの合計≦N)という条件で、N量子ビットの量子コンピュータを使用して実行され得るM(i)個の量子ビットを必要とする量子コンピューティング・ジョブを共同スケジューリングするために、ビン・パッキング・アルゴリズムを採用することができる。例えば、スケジューラ・コンポーネント108は、1次元(1D:one-dimensional)ビン・パッキング・アルゴリズム、2次元(2D:two-dimensional)ビン・パッキング・アルゴリズム、3次元(3D:three-dimensional)ビン・パッキング・アルゴリズム、ベストフィット・アルゴリズム、ファーストフィット・アルゴリズム、ベストフィット減少アルゴリズム(best-fit decreasing algorithm)、ファーストフィット減少アルゴリズム(first-fit decreasing algorithm)、または別のビン・パッキング・アルゴリズム、あるいはその組合せを含むが、これらに限定されない、1つまたは複数のビン・パッキング・アルゴリズムを採用することができる。
【0050】
一部の実施形態では、スケジューラ・コンポーネント108は、量子コンピューティング・ジョブが最小の反復回数(例えば、実行サイクル数)に適合するように、量子コンピューティング・ジョブをスケジューリングするために、前述した1つまたは複数のビン・パッキング・アルゴリズムを採用することによって、1つまたは複数の量子に基づく実行制約に基づいて量子コンピューティング・ジョブの実行順序を決定することができる。例えば、N量子ビット(例えば、8量子ビット)の量子コンピュータを前提として、スケジューラ・コンポーネント108は、反復ごとにJ(i)個の量子コンピューティング・ジョブ(例えば、2つのジョブ)を共同スケジューリングすることができ、その場合、各ジョブは(例えば、
図2Aに示されている実行順序200aによって示されているように)M(i)個の量子ビットを必要とする。
【0051】
図2Aは、本明細書に記載された1つまたは複数の実施形態に従って、量子コンピューティング・ジョブのスケジューリング・コンポーネントを容易にすることができる、一例示的な非限定的実行順序200aを示している。本明細書に記載されたさまざまな実施形態で採用されている類似する要素またはプロセスあるいはその両方の説明の繰り返しは、簡潔にするために省略されている。
【0052】
複数の実施形態によれば、実行順序200aは、全量子ビット204の総量を含んでいる量子コンピュータによって反復R(i)202(例えば、
図2Aでは反復1、反復2などと示されている)にわたって実行され得る保留中の量子コンピューティング・ジョブ(例えば、
図2Aではジョブ1、ジョブ2などと示されている量子コンピューティング実行インスタンス)へのJ(i)個の参照の実行順序(例えば、実行スケジュール)を表すことができ、その場合、各量子コンピューティング・ジョブは、M(i)個の量子ビットを必要とする。例えば、実行順序200aの反復1は、保留中の量子コンピューティング・ジョブ、ジョブ1およびジョブ2(例えば、量子コンピューティング実行インスタンス)への参照を含むことがあり、その場合、ジョブ1は必要な6つの量子ビット206を要求することがあり、ジョブ2は必要な2つの量子ビット208を要求することがある。一部の実施形態では、スケジューラ・コンポーネント108は、量子コンピューティング・ジョブが最小の反復回数(例えば、実行サイクル数)に適合するように、量子コンピューティング・ジョブをスケジューリングするために、前述した1つまたは複数のビン・パッキング・アルゴリズムを採用することによって、実行順序200aを決定することができる。
【0053】
しかし、一部の実施形態では、実行順序200aは、1つまたは複数の複雑な量子コンピューティングに基づく制約(例えば、量子コンピュータを使用して処理ワークロードを実行することに関連する制約)を考慮しない。例えば、実行順序200aは、量子コンピューティング・ジョブ(例えば、計算、データ処理など)が、開始された後に完了まで実行されなければならないということ、すべての量子コンピューティング・ジョブが、実行するのに同じ時間を要するわけではないということ、すべての量子ビットが互いに直接通信できるわけではない(例えば、一部の量子ビットが相互接続されていないか、または単一の量子コンピューティング・デバイス内に位置していないか、あるいはその両方である)ということ、すべての量子コンピューティング・デバイス(例えば、量子コンピュータ、量子プロセッサなど)が同じ量の量子ビットを有することになるわけではないということ、または別の量子コンピューティングに基づく制約、あるいはその組合せを含むが、これらに限定されない、量子コンピューティングに基づく制約を考慮しない。
【0054】
一部の実施形態では、前述した1つまたは複数のそのような量子に基づく制約に対処するために、スケジューラ・コンポーネント108は、1つまたは複数の量子コンピューティング・ジョブの実行時間の近似値に基づいて実行順序を決定できる。例えば、スケジューラ・コンポーネント108は、量子コンピュータの量子回路の回路の深さを使用して、各量子コンピューティング・ジョブの実行時間を近似することができ、その場合、回路の深さは、個別の量子ビットに作用するゲートが同時に動作するときに、実行サイクル(例えば、計算)を完了するために必要な時間ステップの量であることができる(例えば、回路の深さは、回路の入力から開始して回路の出力で終了する有向路の最大長を表すことができる)。別の例では、スケジューラ・コンポーネント108は、現在の量子コンピューティング・ジョブに似ているすでに実行された量子コンピューティング・ジョブの実行時間を使用して、各量子コンピューティング・ジョブの実行時間を近似することができる。
【0055】
一部の実施形態では、前述したそのような実行時間の近似は、前述したビン・パッキング方法を変更することができ、その場合、代替のビン・パッキング方法に対して、均一な実行時間を仮定することができ、その場合、スケジューラ・コンポーネント108は、量子ビットのタイム・スライスに基づいて量子コンピューティング・ジョブの実行順序を決定することができる。例えば、スケジューラ・コンポーネント108は、量子コンピューティング・ジョブが量子ビットのタイム・スライス(例えば、
図2Bに示された実行順序200bによって示されているような)に適合するように、量子コンピューティング・ジョブをスケジューリングするために、前述した1つまたは複数のビン・パッキング・アルゴリズムを採用することによって、1つまたは複数の量子に基づく実行制約に基づいて量子コンピューティング・ジョブの実行順序を決定することができ、その場合、各量子コンピューティング・ジョブは特定の時間に開始し、すべての必要な量子ビットがそのような時間に割り当てられる。
【0056】
図2Bは、本明細書に記載された1つまたは複数の実施形態に従って、量子コンピューティング・ジョブのスケジューリング・コンポーネントを容易にすることができる、一例示的な非限定的実行順序200bを示している。本明細書に記載されたさまざまな実施形態で採用されている類似する要素またはプロセスあるいはその両方の説明の繰り返しは、簡潔にするために省略されている。
【0057】
複数の実施形態によれば、実行順序200bは、全量子ビット204の総量を含んでいる量子コンピュータによってタイム・スライスT(i)210(例えば、
図2BではT1、T2などと示されている)にわたって実行され得る保留中の量子コンピューティング・ジョブ(例えば、
図2Bではジョブ1、ジョブ2などと示されている量子コンピューティング実行インスタンス)へのJ(i)個の参照の実行順序(例えば、実行スケジュール)を表すことができ、その場合、各量子コンピューティング・ジョブは、M(i)個の量子ビットを必要とする。例えば、実行順序200bのジョブ1は、4つのタイム・スライスT1、T2、T3、およびT4にわたってジョブ1を完了まで実行できる、必要な4つの量子ビット212を要求することがある。別の例では、実行順序200bのジョブ2は、6つのタイム・スライスT1、T2、T3、T4、T5、およびT6にわたってジョブ2を完了まで実行できる、必要な4つの量子ビット214を要求することがある。一部の実施形態では、スケジューラ・コンポーネント108は、量子コンピューティング・ジョブが量子ビットのタイム・スライスに適合するように、量子コンピューティング・ジョブをスケジューリングするために、前述した1つまたは複数のビン・パッキング・アルゴリズムを採用することによって、実行順序200bを決定することができ、その場合、各量子コンピューティング・ジョブは特定の時間に開始し、すべての必要な量子ビットがそのような時間に割り当てられる。
【0058】
ここで
図1を参照すると、一部の実施形態では、量子コンピューティングに基づく制約は、時間の経過に伴う量子ビットの劣化を含むことができる。例えば、既存の量子コンピューティング・デバイス(例えば、量子コンピュータ、量子プロセッサなど)は、時間の経過と共に劣化する可能性がある1つまたは複数の量子ビットを含むことがあり、この劣化は、そのようなデバイスが量子コンピューティング・ジョブ(例えば、計算)の誤った結果を生成することを引き起こすことがある。一部の実施形態では、そのような量子ビットの劣化の制約に対処するために、スケジューラ・コンポーネント108は、量子コンピューティング・ジョブの実行順序を決定することができ、その場合、実行時間がより長いジョブが最初にスケジューリングされ、それによって、計算中に量子ビット・エラーが発生する可能性を低減する。例えば、スケジューラ・コンポーネント108は、例えば
図2Bに示された実行順序200bなどの実行順序を決定することができ、その場合、スケジューラ・コンポーネント108は、実行時間がより短いジョブ(例えば、ジョブ3、ジョブ4、ジョブ5、またはジョブ6、あるいはその組合せ)の前に実行時間がより長いジョブ(例えば、ジョブ1またはジョブ2あるいはその両方)がスケジューリングされて、完了まで実行されるように、実行順序を決定することができる。
【0059】
一部の実施形態では、スケジューラ・コンポーネント108は、実行時間がより短いジョブの前に実行時間がより長いジョブがスケジューリングされる量子コンピューティング・ジョブの実行順序を決定するために、1つまたは複数のスケジューリング・アルゴリズムを採用することができる。例えば、スケジューラ・コンポーネント108は、最長ジョブ優先(LJF:longest job first)スケジューリング・アルゴリズム、最短ジョブ優先(SJF:shortest job first)スケジューリング・アルゴリズムの修正版(例えば、最短ジョブ・ネクスト(SJN:shortest job next)または最短プロセス・ネクスト(SPN:shortest process next)とも呼ばれる)、または実行時間がより短いジョブの前に実行時間がより長いジョブをスケジューリングするのを容易にすることができる別のスケジューリング・アルゴリズム、あるいはその組合せを含むが、これらに限定されない、1つまたは複数のスケジューリング・アルゴリズムを採用することができる。
【0060】
一部の実施形態では、1つまたは複数の量子コンピューティング・ジョブが、特定の忠実度を有している1つまたは複数の量子ビットによる実行を要求することがあり、これが、量子に基づく実行制約を構成することがある。例えば、例えば量子コンピュータなどの量子コンピューティング・デバイスの1つまたは複数の量子ビットは、そのような量子コンピュータの他の量子ビットの忠実度よりも高い忠実度を有することがある。本明細書において参照されているように、量子ビットの忠実度とは、量子論理ゲートの適用によって導入されるエラーの可能性または程度あるいはその両方のことを指し、すなわち、量子論理ゲートの適用中に、より忠実度の高い量子ビットは、より品質の低い量子ビットと比較したとき、発生するエラーの程度が低いか、エラーの可能性が低い傾向があるか、またはその両方である。一部の実施形態では、スケジューラ・コンポーネント108は、定義された忠実度を含んでいる1つまたは複数の量子ビットの可用性に基づいて、実行順序を決定することができる。例えば、スケジューラ・コンポーネント108は、実体(例えば、人間)によって定義され得る量子ビットの忠実度に基づいて、量子コンピューティング・ジョブの実行順序を決定することができる。例えば、量子コンピューティング・ジョブ・スケジューリング・システム102は、1つもしくは複数の入力デバイス(例えば、キーボード、マウスなど)、1つもしくは複数の出力デバイス(例えば、モニタ)、または実体(例えば、人間のユーザ)が1つもしくは複数の量子コンピューティング・ジョブに必要な量子ビットの忠実度の値をスケジューラ・コンポーネント108に入力できるようにし得る入力制御を含んでいるユーザ・インターフェイス(例えば、グラフィカル・ユーザ・インターフェイス(GUI:graphical user interface))、あるいはその組合せを備えることができる。これらの実施形態では、スケジューラ・コンポーネント108は、そのような定義された量子ビットの忠実度を有している1つまたは複数の量子ビットが使用可能であるということを決定することによって、そのような定義された量子ビットの忠実度に基づいて量子コンピューティング・ジョブの実行順序を決定することができる。
【0061】
一部の実施形態では、解答における信頼性が向上するにつれて、量子コンピューティング・ジョブの優先度が低下することができ、その場合、そのような優先度が、量子に基づく実行制約を構成することがある。例えば、試み(例えば、量子状態の読出し、量子論理の読出しなど)全体の標準偏差が(例えば、例えば人間のユーザなどの実体によって定義された小ささの何らかの定義によって)小さい場合、正しい解答が提供された可能性が統計的に高く、したがって、量子コンピューティング・ジョブの優先度が低下することができる。一部の実施形態では、スケジューラ・コンポーネント108は、1つまたは複数の量子コンピューティング・ジョブのそのような優先度に基づいて、実行順序を決定することができる。例えば、スケジューラ・コンポーネント108は、量子コンピューティング・ジョブのうちの少なくとも1つの正しさに対応する定義された信頼度に基づいて実行順序を決定することができ、その場合、そのような定義された信頼度は、実体(例えば、人間)によって定義され得る。例えば、量子コンピューティング・ジョブ・スケジューリング・システム102は、1つもしくは複数の入力デバイス(例えば、キーボード、マウスなど)、1つもしくは複数の出力デバイス(例えば、モニタ)、または実体(例えば、人間のユーザ)が量子コンピューティング・ジョブのうちの少なくとも1つの正しさに対応する定義された信頼度をスケジューラ・コンポーネント108に入力できるようにし得る入力制御を含んでいるユーザ・インターフェイス(例えば、グラフィカル・ユーザ・インターフェイス(GUI))、あるいはその組合せを備えることができる。この例では、特定の量子コンピューティング・ジョブの正しさに対応する信頼度が定義された信頼度を満たすか、または超えるか、あるいはその両方であるため、スケジューラ・コンポーネント108は、そのような特定の量子コンピューティング・ジョブに関連付けられた優先度を下げることができ、そのような特定の量子コンピューティング・ジョブに関連付けられたそのような低下した優先度に基づいて、すべての量子コンピューティング・ジョブの実行順序を決定することができる。
【0062】
一部の実施形態では、スケジューラ・コンポーネント108は、第2の量子コンピューティング・ジョブに対応する1つもしくは複数の第2の量子に基づく実行制約、または量子コンピューティング・ジョブのうちの少なくとも1つの完了、あるいはその両方に基づいて、1つまたは複数の第2の実行順序を決定することができる。例えば、対応する量子に基づく実行制約を有している新しい量子コンピューティング・ジョブの要求を受信することに基づいて、スケジューラ・コンポーネント108は、新しい量子に基づく実行制約および以前の量子に基づく実行制約に基づいて量子コンピューティング・ジョブの新しい実行順序を決定することができ、その場合、そのような新しい実行順序は、新しい量子コンピューティング・ジョブおよび完全には実行されていない以前の量子コンピューティング・ジョブを含むことができる。別の例では、以前の量子コンピューティング・ジョブの完全な実行に基づいて、スケジューラ・コンポーネント108は、残りの実行されていない量子コンピューティング・ジョブの新しい実行順序を決定することができ、その場合、そのような新しい実行順序は、完全に実行された量子コンピューティング・ジョブの除去を反映することができる。
【0063】
複数の実施形態によれば、実行キュー・コンポーネント110は、実行順序に基づいて量子コンピューティング・ジョブへの参照を格納することができる。例えば、実行キュー・コンポーネント110は、スケジューラ・コンポーネント108によって(例えば、
図2Bを参照して上で説明されたように)決定された実行順序(例えば、実行順序200b)に基づいて、量子コンピューティング・ジョブ(例えば、実行される量子コンピューティング実行インスタンス)への参照を格納することができる。例えば、実行キュー・コンポーネント110は、1もしくは複数の量子コンピューティング・デバイスまたはそのようなデバイスの1つもしくは複数の特定の量子ビットあるいはその両方によって実行される保留中の量子コンピューティング実行インスタンスへの参照を含んでいる実行スケジュールを、格納することができる。
【0064】
一部の実施形態では、実行キュー・コンポーネント110は、量子コンピューティング・ジョブへのそのような参照を、例えばメモリ104などのメモリに格納することができる。一部の実施形態では、メモリ104は、実行キュー・コンポーネント110を含むことができる(
図1には示されていない)。例えば、実行キュー・コンポーネント110はメモリ104の実行キューを備えることができ、その場合、実行キュー・コンポーネント110は、実行順序に基づいて、量子コンピューティング・ジョブへのそのような参照を格納することができる。
【0065】
一部の実施形態では、実行キュー・コンポーネント110は、量子コンピューティング・ジョブが実行される順序(例えば、連続的順序)で(例えば、量子コンピューティング・デバイスによって量子コンピューティング・ジョブが実行される順序で)量子コンピューティング・ジョブへの参照が配置されるように、量子コンピューティング・ジョブへの参照を(例えば、実行キュー・コンポーネント110またはメモリ104あるいはその両方に)格納することができ、その場合、そのように順序付けられた配置は、スケジューラ・コンポーネント108によって決定された実行順序(例えば、実行順序200b)に基づくことができる。一部の実施形態では、実行キュー・コンポーネント110によって(前述したように、例えば実行キュー・コンポーネント110またはメモリ104あるいはその両方に)格納された量子コンピューティング・ジョブへの参照のそのように順序付けられた配置(例えば、連続的順序)は、各量子コンピューティング・ジョブに関連付けられた優先度を確立することができる。例えば、そのような順序付けられた配置内の特定の量子コンピューティング・ジョブへの特定の参照の位置(例えば、1番目、最後など)は、そのような特定の量子コンピューティング・ジョブに対応する優先度を示すことができ、その場合、そのような優先度は、順序付けられた配置内の他のすべての量子コンピューティング・ジョブと相対的であることができる。一部の実施形態では、そのような優先度は、量子コンピューティング・ジョブ・スケジューリング・システム102の1つまたは複数のコンポーネントによって(例えば、
図5を参照して下で説明されるような非飢餓コンポーネント502によって)変更され得る。
【0066】
図3は、本明細書に記載された1つまたは複数の実施形態に従って、量子コンピューティング・ジョブのスケジューリング・コンポーネントを容易にすることができる、一例示的な非限定的システム300のブロック図を示している。本明細書に記載されたさまざまな実施形態で採用されている類似する要素またはプロセスあるいはその両方の説明の繰り返しは、簡潔にするために省略されている。
【0067】
複数の実施形態によれば、すべての量子ビットが互いに直接通信できるわけではないという前述した量子に基づく実行制約に対処するために、制約チェッカー・コンポーネント302は、実行順序が量子ビット通信制約に違反しているかどうかを判定することができる。例えば、制約チェッカー・コンポーネント302は、制約チェック・アプリケーションをそのような実行順序に適用する(例えば、重ね合わせる)ことによって、(例えば、
図1を参照して上で説明されたような)スケジューラ・コンポーネント108によって決定された実行順序が量子ビット通信制約に違反しているかどうかを、判定することができる。
【0068】
一部の実施形態では、実行順序が量子ビット通信制約に違反しているかどうかを判定するために、制約チェッカー・コンポーネント302は、特定の量子コンピューティング・ジョブを実行するために必要なすべての量子ビット(例えば、
図2Bに示されている実行順序200bの必要な量子ビット212)が、互いに直接通信できる(例えば、互いに量子情報を転送できる)ように、互いに結合されているかどうかを判定することができる。例えば、制約チェッカー・コンポーネント302は、例えば量子コンピュータなどの1つまたは複数の量子コンピューティング・デバイスの1つまたは複数の量子回路(例えば、回路の量子電磁力学(回路のQED:quantum electrodynamics))を分析して、特定の量子コンピューティング・ジョブを実行するために必要な特定の量子ビット(例えば、必要な量子ビット212)が電気的に、通信によって、または動作可能なように、あるいはその組合せで、互いに結合されているかどうかを、判定することができる。例えば、制約チェッカー・コンポーネント302は、そのような量子回路を分析して、そのような特定の量子ビット(例えば、必要な量子ビット212)が誘導的に互いに結合されているか、伝導的に(例えば、共振バス(resonant bus)、共振線、導波路、伝送線などを介して)互いに結合されているか、容量的に互いに結合されているか、またはそのような量子ビット間の直接通信を容易にすることができる別の方法で互いに結合されているか、あるいはその組合せであるかを、判定することができる。
【0069】
一部の実施形態では、スケジューラ・コンポーネント108によって決定された実行順序が、通信制約に違反している特定の量子ビットへの量子コンピューティング・ジョブの割当てを提案している場合、制約チェッカー・コンポーネント302は、そのような実行順序を拒否することができる。例えば、そのような実行順序が、互いに直接通信しない量子コンピューティング・デバイス(例えば、量子コンピュータ)の特定の量子ビットへの量子コンピューティング・ジョブの割当てを提案している場合、制約チェッカー・コンポーネント302は、そのような実行順序を拒否することができる。別の例では、そのような実行順序が、異なる量子コンピューティング・デバイスの特定の量子ビット(例えば、異なる量子コンピュータ内に位置する特定の量子ビット)への量子コンピューティング・ジョブの割当てを提案している場合、制約チェッカー・コンポーネント302は、そのような実行順序を拒否することができる。
【0070】
図4は、本明細書に記載された1つまたは複数の実施形態に従って、量子コンピューティング・ジョブのスケジューリング・コンポーネントを容易にすることができる、一例示的な非限定的システム400のブロック図を示している。本明細書に記載されたさまざまな実施形態で採用されている類似する要素またはプロセスあるいはその両方の説明の繰り返しは、簡潔にするために省略されている。
【0071】
複数の実施形態によれば、サブミット・コンポーネント402は、実行順序に基づいて少なくとも1つの量子コンピューティング・ジョブを1つまたは複数の量子コンピューティング・デバイスにサブミットすることができる。例えば、サブミット・コンポーネント402は、スケジューラ・コンポーネント108によって(例えば、前述したように)決定された実行順序(例えば、
図2Bに示された実行順序200b)に基づいて実行キュー(例えば、実行キュー・コンポーネント110)から量子コンピューティング・ジョブを選択することができ、その場合、そのような実行順序は、サブミット・コンポーネント402が各選択時にどの量子コンピューティング・ジョブを選択できるかを、示すことができる。この例では、サブミット・コンポーネント402は、実行順序において示され得るそのような量子コンピューティング・ジョブを量子コンピューティング・デバイス(例えば、量子コンピュータ、量子プロセッサなど)にさらにサブミットすることができ、そのような量子コンピューティング・デバイスは、この量子コンピューティング・ジョブを完了まで実行することができる。
【0072】
一部の実施形態では、実行順序に基づいて量子コンピューティング・ジョブを量子コンピューティング・デバイスにサブミットするのを容易にするために、サブミット・コンポーネント402は、優先度スケジューリング・アルゴリズムを採用することができ、このアルゴリズムでは、各量子コンピューティング・ジョブが、スケジューラ・コンポーネント108によって決定された実行順序において示され得るその量子コンピューティング・ジョブに対応する優先度を有することができる。例えば、サブミット・コンポーネント402は、(例えば、スケジューラ・コンポーネント108によって決定された実行順序において示されたような)量子コンピューティング・ジョブに対応する最高の優先度を有しているその量子コンピューティング・ジョブを実行キュー(例えば、実行キュー・コンポーネント110)から選択するために、古典的コンピュータまたは古典的コンピュータの修正版あるいはその両方において利用される優先度スケジューリング・アルゴリズムを採用することができる。この例では、優先度スケジューリング・アルゴリズムを使用するそのような選択に基づいて、サブミット・コンポーネント402は、そのような量子コンピューティング・ジョブを(例えば、データ・ケーブルまたは例えばインターネットなどのネットワークあるいはその両方を介して)量子コンピューティング・デバイス(例えば、量子コンピュータ、量子プロセッサなど)にサブミットすることができ、その場合、そのような量子コンピューティング・デバイスは、量子コンピューティング・ジョブを完了まで実行することができる。
【0073】
図5は、本明細書に記載された1つまたは複数の実施形態に従って、量子コンピューティング・ジョブのスケジューリング・コンポーネントを容易にすることができる、一例示的な非限定的システム500のブロック図を示している。本明細書に記載されたさまざまな実施形態で採用されている類似する要素またはプロセスあるいはその両方の説明の繰り返しは、簡潔にするために省略されている。
【0074】
複数の実施形態によれば、非飢餓コンポーネント502は、すべての量子コンピューティング・ジョブが定義された時間内に実行されるかどうかを判定することができる。例えば、非飢餓コンポーネント502は、実行順序(例えば、
図2Bに示された実行順序200b)に含まれているすべての量子コンピューティング・ジョブが定義された時間内に実行されるかどうかを判定することができ、その場合、そのような定義された時間は、実体(例えば、
図1を参照して上で説明されたように、量子コンピューティング・ジョブ・スケジューリング・システム102の1つもしくは複数の入力デバイス、出力デバイス、またはユーザ・インターフェイス、あるいはその組合せを使用する人間)によって定義され得る。
【0075】
一部の実施形態では、非飢餓コンポーネント502が、量子コンピューティング・ジョブが定義された時間内に実行されなかったということを決定することに基づいて、非飢餓コンポーネント502は、そのような実行されていない量子コンピューティング・ジョブの実行を、そのような実行が最適でないリソース(例えば、量子コンピュータ、量子プロセッサなど)の使用をもたらす場合でも、促進することができる。例えば、飢餓コンポーネント502が、量子コンピューティング・ジョブが定義された時間内に実行されなかったということを決定することに基づいて、非飢餓コンポーネント502は、そのような実行されていない量子コンピューティング・ジョブを、この量子コンピューティング・ジョブを実行できる量子コンピューティング・デバイスにサブミットするように、サブミット・コンポーネント402に促すことができる。例えば、サブミット・コンポーネント402が優先度スケジューリング・アルゴリズムまたは優先度スケジューリング・アルゴリズムの修正版あるいはその両方を利用することに基づいて、非飢餓コンポーネント502は、そのような実行されていない量子コンピューティング・ジョブに関連付けられた優先度を上げることができ、それによって、そのような実行されていない量子コンピューティング・ジョブを量子コンピューティング・デバイスにサブミットするように、サブミット・コンポーネント402に促す。
【0076】
一部の実施形態では、量子コンピューティング・ジョブ・スケジューリング・システム102は、量子コンピューティング・ジョブ・スケジューリング・システムまたはさまざまな技術に関連するプロセスあるいはその両方であることができる。例えば、量子コンピューティング・ジョブ・スケジューリング・システム102は、古典的コンピュータのワークロード・スケジューリング技術、量子コンピュータのワークロード・スケジューリング技術、量子力学技術、量子計算技術、量子コンピュータ技術、量子ハードウェア技術もしくは量子ソフトウェア技術またはその両方、量子シミュレータ技術、古典的領域もしくは量子領域またはその両方のデータ処理技術、機械学習技術、人工知能技術、またはその他の技術、あるいはその組合せに関連付けられ得る。
【0077】
一部の実施形態では、量子コンピューティング・ジョブ・スケジューリング・システム102は、上で識別されたさまざまな技術に関連するシステム、デバイス、コンポーネント、動作可能なステップ、または処理ステップ、あるいはその組合せに対する技術的改良を提供することができる。例えば、量子コンピューティング・ジョブ・スケジューリング・システム102は、量子コンピューティング・ジョブ(例えば、計算、データ処理など)が、開始された後に完了まで実行されなければならないということ、すべての量子コンピューティング・ジョブが、実行するのに同じ時間を要するわけではないということ、すべての量子ビットが互いに直接通信できるわけではない(例えば、一部の量子ビットが相互接続されていないか、または単一の量子コンピューティング・デバイス内に位置していないか、あるいはその両方である)ということ、すべての量子コンピューティング・デバイス(例えば、量子コンピュータ、量子プロセッサなど)が同じ量の量子ビットを有することになるわけではないということ、または別の量子コンピューティングに基づく制約、あるいはその組合せを含むが、これらに限定されない、1つまたは複数の量子に基づく実行制約に基づいて、量子コンピューティング・ジョブの実行順序を決定することができる。この例では、既存の古典的コンピュータのジョブ・スケジューリング技術は、量子コンピューティング・デバイスによって実行される量子コンピューティング・ジョブをスケジューリングするときに、そのような量子に基づく実行制約を考慮することができない。
【0078】
一部の実施形態では、量子コンピューティング・ジョブ・スケジューリング・システム102は、量子コンピューティング・システムまたは量子コンピューティング・デバイス(例えば、量子コンピュータ、量子プロセッサなど)あるいはその両方によって実行される量子コンピューティング・ジョブに対する解の精度を改善することによって、そのような量子コンピューティング・システムまたは量子コンピューティング・デバイスあるいはその両方に対する技術的改良を提供することもできる。例えば、量子コンピューティング・ジョブ・スケジューリング・システム102は、量子コンピューティング・ジョブを、定義された忠実度(例えば、高い忠実度)を有している特定の量子コンピューティング・デバイスに割り当てる実行順序を決定することができる。この例では、それによって量子コンピューティング・ジョブ・スケジューリング・システム102は、量子コンピューティング・ジョブを実行するそのような量子コンピューティング・システムまたは量子コンピューティング・デバイスあるいはその両方に関連付けられた処理ユニットの処理精度の改善を促進することができる。例えば、量子コンピューティング・ジョブ・スケジューリング・システム102は、そのような処理ユニット(例えば、量子プロセッサ)によって実行される量子計算に対する解の精度を改善することによって、そのような処理ユニットのそのような処理精度の改善を促進するができる。
【0079】
一部の実施形態では、量子コンピューティング・ジョブ・スケジューリング・システム102は、量子コンピューティング・システムまたは量子コンピューティング・デバイスあるいはその両方に関連付けられた処理ユニットに対する技術的改良を提供することができる。例えば、量子に基づく実行制約に基づいて量子コンピューティング・ジョブを特定の量子コンピューティング・デバイスまたは特定の量子ビットあるいはその両方に割り当てる実行順序を決定することによって、量子コンピューティング・ジョブ・スケジューリング・システム102は、そのような量子コンピューティング・システムまたは量子コンピューティング・デバイスあるいはその両方の動作を最適化することができる。この例では、そのような量子コンピューティング・システムまたは量子コンピューティング・デバイスあるいはその両方の動作を最適化することによって、量子コンピューティング・ジョブ・スケジューリング・システム102は、そのような量子コンピューティング・システムまたは量子コンピューティング・デバイスあるいはその両方に関連付けられた処理ユニットの動作を最適化することができ、それによって、そのような処理ユニットの処理サイクルの数または処理時間の総量を削減することによって、そのような処理ユニットの処理性能または処理効率あるいはその両方の改善を促進する。
【0080】
一部の実施形態では、量子コンピューティング・ジョブ・スケジューリング・システム102は、抽象的ではない、人間による一連の精神的活動として実行され得ない本質的に高度に技術的な問題を解決するためのハードウェアまたはソフトウェアあるいはその両方を採用することができる。一部の実施形態では、本明細書に記載されたプロセスの一部は、量子に基づく実行制約に基づいて量子コンピューティング・ジョブをスケジューリングすることに関連する定義されたタスクを実行するための1つまたは複数の特殊なコンピュータ(例えば、1つまたは複数の量子コンピュータ、量子処理ユニットなど)によって、実行されてよい。一部の実施形態では、前述した技術(例えば、量子コンピューティング)、クラウド・コンピューティング・システムの採用、コンピュータ・アーキテクチャ、または別の技術、あるいはその組合せにおける進歩によって生じる新しい問題を解決するために、量子コンピューティング・ジョブ・スケジューリング・システム102またはそのコンポーネントあるいはその両方が採用され得る。
【0081】
量子コンピューティング・ジョブ・スケジューリング・システム102が、人間の知性において再現され得ず、人間によって実行され得ない電気的コンポーネント、機械的コンポーネント、および回路のさまざまな組合せを利用して量子コンピューティング・ジョブのスケジューリング・プロセスを実行できるということが、理解されるべきである。例えば、前述した1つもしくは複数の量子に基づく実行制約に基づいて量子コンピューティング・ジョブの実行順序を決定すること、または量子コンピューティング・ジョブを、定義された忠実度(例えば、高い忠実度)を有している特定の量子コンピューティング・デバイスに割り当てる実行順序を決定すること、あるいはその両方は、人間の知性の能力を超える動作である。例えば、特定の期間にわたって量子コンピューティング・ジョブ・スケジューリング・システム102によって処理されるデータの量、そのようなデータを処理する速度、または処理されるデータの型、あるいはその組合せは、同じ期間にわたって人間の知性によって処理され得る量より多く、速度より速く、またはデータ型とは異なるデータ型であり、あるいはその組合せであることができる。
【0082】
複数の実施形態によれば、量子コンピューティング・ジョブ・スケジューリング・システム102は、上で参照された量子コンピューティング・ジョブのスケジューリング・プロセスも実行しながら、1つまたは複数の他の機能を実行すること(例えば、完全に電源が投入される、完全に実行されるなど)に向けて完全に動作可能であることもできる。そのような同時の複数の動作の実行が、人間の知性の能力を超えているということが、理解されるべきである。量子コンピューティング・ジョブ・スケジューリング・システム102が、人間のユーザなどの実体によって手動で取得することが不可能な情報を含むことができるということも、理解されるべきである。例えば、スケジューラ・コンポーネント108、実行キュー・コンポーネント110、制約チェッカー・コンポーネント302、サブミット・コンポーネント402、または非飢餓コンポーネント502、あるいはその組合せに含まれる情報の種類、量、または多様性、あるいはその組合せは、人間のユーザによって手動で取得される情報よりも複雑になることができる。
【0083】
図6は、本明細書に記載された1つまたは複数の実施形態に従って、量子コンピューティング・ジョブのスケジューリング・コンポーネントを容易にすることができる、一例示的な非限定的コンピュータ実装方法600のフロー図を示している。本明細書に記載されたさまざまな実施形態で採用されている類似する要素またはプロセスあるいはその両方の説明の繰り返しは、簡潔にするために省略されている。
【0084】
602で、プロセッサ(例えば、プロセッサ106)に動作可能なように結合されたシステム(例えば、量子コンピューティング・ジョブ・スケジューリング・システム102またはスケジューラ・コンポーネント108あるいはその両方)によって、1つまたは複数の量子に基づく実行制約に基づいて、量子コンピューティング・ジョブ(例えば、計算、データ処理など)の実行順序(例えば、実行順序200b)を決定する。一部の実施形態では、そのような1つまたは複数の量子に基づく実行制約は、量子コンピュータを使用して処理ワークロードを実行することに関連する制約を含むことができる。例えば、そのような1つまたは複数の量子に基づく実行制約は、量子コンピューティング・ジョブを実行するために必要な定義された量子ビットの数、エラー修正に基づいて量子コンピューティング・ジョブを実行するために必要な定義された量子ビットの数、量子コンピューティング・ジョブが、開始された後に完了まで実行されなければならないということ、すべての量子コンピューティング・ジョブが、実行するのに同じ時間を要するわけではないということ、すべての量子ビットが互いに直接通信できるわけではない(例えば、一部の量子ビットが相互接続されていないか、または単一の量子コンピューティング・デバイス内に位置していないか、あるいはその両方である)ということ、すべての量子コンピューティング・デバイス(例えば、量子コンピュータ、量子プロセッサなど)が同じ量の量子ビットを有することになるわけではないということ、または別の量子コンピューティングに基づく制約、あるいはその組合せを含むことができるが、これらに限定されない。
【0085】
604で、システム(例えば、量子コンピューティング・ジョブ・スケジューリング・システム102、実行キュー・コンポーネント110、またはメモリ104、あるいはその組合せ)によって、実行順序に基づいて量子コンピューティング・ジョブへの参照を格納する。一部の実施形態では、実行キュー・コンポーネント110は、量子コンピューティング・ジョブが実行される順序(例えば、連続的順序)で(例えば、量子コンピューティング・デバイスによって量子コンピューティング・ジョブが実行される順序で)量子コンピューティング・ジョブへの参照が配置されるように、量子コンピューティング・ジョブへの参照を(例えば、実行キュー・コンポーネント110またはメモリ104あるいはその両方上に)格納することができ、その場合、そのように順序付けられた配置は、スケジューラ・コンポーネント108によって決定された実行順序(例えば、実行順序200b)に基づくことができる。
【0086】
図7は、本明細書に記載された1つまたは複数の実施形態に従って、量子コンピューティング・ジョブのスケジューリング・コンポーネントを容易にすることができる、一例示的な非限定的コンピュータ実装方法700のフロー図を示している。本明細書に記載されたさまざまな実施形態で採用されている類似する要素またはプロセスあるいはその両方の説明の繰り返しは、簡潔にするために省略されている。
【0087】
702で、プロセッサ(例えば、プロセッサ106)に動作可能なように結合されたシステム(例えば、量子コンピューティング・ジョブ・スケジューリング・システム102またはスケジューラ・コンポーネント108あるいはその両方)によって、1つまたは複数の量子に基づく実行制約に基づいて、量子コンピューティング・ジョブ(例えば、計算、データ処理など)の実行順序(例えば、実行順序200b)を決定する。一部の実施形態では、そのような1つまたは複数の量子に基づく実行制約は、量子コンピュータを使用して処理ワークロードを実行することに関連する制約を含むことができる。例えば、そのような1つまたは複数の量子に基づく実行制約は、量子コンピューティング・ジョブを実行するために必要な定義された量子ビットの数、エラー修正に基づいて量子コンピューティング・ジョブを実行するために必要な定義された量子ビットの数、量子コンピューティング・ジョブが、開始された後に完了まで実行されなければならないということ、すべての量子コンピューティング・ジョブが、実行するのに同じ時間を要するわけではないということ、すべての量子ビットが互いに直接通信できるわけではない(例えば、一部の量子ビットが相互接続されていないか、または単一の量子コンピューティング・デバイス内に位置していないか、あるいはその両方である)ということ、すべての量子コンピューティング・デバイス(例えば、量子コンピュータ、量子プロセッサなど)が同じ量の量子ビットを有することになるわけではないということ、または別の量子コンピューティングに基づく制約、あるいはその組合せを含むことができるが、これらに限定されない。
【0088】
704で、システム(例えば、量子コンピューティング・ジョブ・スケジューリング・システム102またはサブミット・コンポーネント402あるいはその両方)によって、実行順序に基づいて量子コンピューティング・ジョブのうちの少なくとも1つを1つまたは複数の量子コンピューティング・デバイス(例えば、量子コンピュータ、量子プロセッサなど)にサブミットする。
【0089】
説明を簡単にするために、一連の動作としてコンピュータ実装方法が示され、説明される。本革新技術が、示された動作によって、または動作の順序によって、あるいはその両方によって制限されず、例えば動作が、本明細書において提示されておらず、説明されていない他の動作と共に、さまざまな順序で、または同時に、あるいはその両方で発生できるということが、理解されるべきである。さらに、開示される対象に従ってコンピュータ実装方法を実装するために、示されているすべての動作が必要でなくてもよい。加えて、当業者は、コンピュータ実装方法が、代替として、状態図を介して相互に関連する一連の状態またはイベントとして表され得るということを理解するであろう。さらに、そのようなコンピュータ実装方法をコンピュータに輸送または転送するのを容易にするために、以下および本明細書全体を通じて開示されたコンピュータ実装方法を製品に格納できるということが、さらに理解されるべきである。製品という用語は、本明細書において使用されるとき、任意のコンピュータ可読デバイスまたはコンピュータ可読ストレージ媒体からアクセスできるコンピュータ・プログラムを包含するよう意図されている。
【0090】
開示される対象のさまざまな態様の背景を提供するために、
図8および以下の説明は、開示される対象のさまざまな態様が実装され得る適切な環境の概要を示すよう意図されている。
図8は、本明細書に記載された1つまたは複数の実施形態を容易にすることができる一例示的な非限定的動作環境のブロック図を示している。本明細書に記載された他の実施形態で採用されている類似する要素の説明の繰り返しは、簡潔にするために省略されている。
【0091】
図8を参照すると、本開示のさまざまな態様を実装するための適切な動作環境800は、コンピュータ812を含むこともできる。コンピュータ812は、処理ユニット814、システム・メモリ816、およびシステム・バス818を含むこともできる。システム・バス818は、システム・メモリ816を含むが、これに限定されないシステム・コンポーネントを、処理ユニット814に結合する。処理ユニット814は、さまざまな使用可能なプロセッサのいずれかであることができる。デュアル・マイクロプロセッサおよびその他のマルチプロセッサ・アーキテクチャが、処理ユニット814として採用されてもよい。システム・バス818は、ISA(Industrial Standard Architecture)、MCA(Micro-Channel Architecture)、EISA(Extended ISA)、IDE(Intelligent Drive Electronics)、VESAローカル・バス(VLB:VESA Local Bus)、PCI(Peripheral Component Interconnect)、カードバス、ユニバーサル・シリアル・バス(USB:Universal Serial Bus)、AGP(Advanced Graphics Port)、FireWire(IEEE 1394)、および小型コンピュータ・システム・インターフェイス(SCSI:Small Computer Systems Interface)を含むが、これらに限定されない、任意のさまざまな使用可能なバス・アーキテクチャを使用する、メモリ・バスもしくはメモリ・コントローラ、ペリフェラル・バスもしくは外部バス、またはローカル・バス、あるいはその組合せを含む、複数の種類のバス構造のいずれかであることができる。
【0092】
システム・メモリ816は、揮発性メモリ820および不揮発性メモリ822を含むこともできる。起動中などにコンピュータ812内の要素間で情報を転送するための基本ルーチンを含んでいる基本入出力システム(BIOS:basic input/output system)が、不揮発性メモリ822に格納される。コンピュータ812は、取外し可能/取外し不可能な揮発性/不揮発性のコンピュータ・ストレージ媒体を含むこともできる。例えば
図8は、ディスク・ストレージ824を示している。ディスク・ストレージ824は、磁気ディスク・ドライブ、フロッピー(R)・ディスク・ドライブ、テープ・ドライブ、Jazドライブ、Zipドライブ、LS-100ドライブ、フラッシュ・メモリ・カード、またはメモリ・スティックなどの、ただしこれらに限定されない、デバイスを含むこともできる。ディスク・ストレージ824は、ストレージ媒体を、別々に、または他のストレージ媒体と組み合わせて、含むこともできる。システム・バス818へのディスク・ストレージ824の接続を容易にするために、インターフェイス826などの、取外し可能または取外し不可能なインターフェイスが通常は使用される。
図8は、ユーザと、適切な動作環境800において説明された基本的なコンピュータ・リソースとの間の仲介として機能するソフトウェアも示している。そのようなソフトウェアは、例えば、オペレーティング・システム828を含むこともできる。ディスク・ストレージ824に格納できるオペレーティング・システム828は、コンピュータ812のリソースを制御し、割り当てるように動作する。
【0093】
システムのアプリケーション830は、例えばシステム・メモリ816内またはディスク・ストレージ824上のいずれかに格納されたプログラム・モジュール832およびプログラム・データ834を介して、オペレーティング・システム828によるリソースの管理を利用する。さまざまなオペレーティング・システムまたはオペレーティング・システムの組合せを使用して本開示が実装され得るということが、理解されるべきである。ユーザは、入力デバイス836を介して、コマンドまたは情報をコンピュータ812に入力する。入力デバイス836は、マウス、トラックボール、スタイラス、タッチ・パッドなどのポインティング・デバイス、キーボード、マイクロホン、ジョイスティック、ゲーム・パッド、衛星放送受信アンテナ、スキャナ、TVチューナー・カード、デジタル・カメラ、デジタル・ビデオ・カメラ、およびWebカメラなどを含むが、これらに限定されない。これらおよびその他の入力デバイスは、インターフェイス・ポート838を介してシステム・バス818を通り、処理ユニット814に接続する。インターフェイス・ポート838は、例えば、シリアル・ポート、パラレル・ポート、ゲーム・ポート、およびユニバーサル・シリアル・バス(USB)を含む。出力デバイス840は、入力デバイス836と同じ種類のポートの一部を使用する。このようにして、例えば、USBポートを使用して、入力をコンピュータ812に提供し、コンピュータ812から出力デバイス840に情報を出力できる。出力アダプタ842は、特殊なアダプタを必要とする出力デバイス840の中でも特に、モニタ、スピーカ、およびプリンタのような何らかの出力デバイス840が存在することを示すために提供される。出力アダプタ842の例としては、出力デバイス840とシステム・バス818との間の接続の手段を提供するビデオ・カードおよびサウンド・カードが挙げられるが、これらに限定されない。リモート・コンピュータ844などの、その他のデバイスまたはデバイスのシステムあるいはその両方が、入力機能および出力機能の両方を提供するということに、注意するべきである。
【0094】
コンピュータ812は、リモート・コンピュータ844などの1つまたは複数のリモート・コンピュータへの論理接続を使用して、ネットワーク環境内で動作できる。リモート・コンピュータ844は、コンピュータ、サーバ、ルータ、ネットワークPC、ワークステーション、マイクロプロセッサベースの機器、ピア・デバイス、またはその他の一般的なネットワーク・ノードなどであることができ、通常は、コンピュータ812に関連して説明された要素の多くまたはすべてを含むこともできる。簡潔にするために、メモリ・ストレージ・デバイス846のみが、リモート・コンピュータ844と共に示されている。リモート・コンピュータ844は、ネットワーク・インターフェイス848を介してコンピュータ812に論理的に接続されてから、通信接続850を介して物理的に接続される。ネットワーク・インターフェイス848は、ローカル・エリア・ネットワーク(LAN:local-area networks)、広域ネットワーク(WAN:wide-area networks)、セルラー・ネットワークなどの、有線通信ネットワークまたは無線通信ネットワークあるいはその両方を包含する。LAN技術は、光ファイバ分散データ・インターフェイス(FDDI:Fiber Distributed Data Interface)、銅線分散データ・インターフェイス(CDDI:Copper Distributed Data Interface)、イーサネット(R)、およびトークン・リングなどを含む。WAN技術は、ポイントツーポイント・リンク、総合デジタル通信網(ISDN:Integrated Services Digital Networks)およびその変形などの回路交換網、パケット交換網、およびデジタル加入者回線(DSL:Digital Subscriber Lines)を含むが、これらに限定されない。通信接続850は、ネットワーク・インターフェイス848をシステム・バス818に接続するために採用されたハードウェア/ソフトウェアのことを指す。通信接続850は、説明を明確にするために、コンピュータ812内に示されているが、コンピュータ812の外部に存在することもできる。ネットワーク・インターフェイス848に接続するためのハードウェア/ソフトウェアは、単に例示の目的で、通常の電話の等級のモデム、ケーブル・モデム、およびDSLモデムを含むモデム、ISDNアダプタ、およびイーサネット(R)・カードなどの、内部および外部の技術を含むこともできる。
【0095】
ここで
図9を参照すると、一例示的なクラウド・コンピューティング環境950が示されている。図示されているように、クラウド・コンピューティング環境950は、クラウドの利用者によって使用されるローカル・コンピューティング・デバイス(例えば、パーソナル・デジタル・アシスタント(PDA:personal digital assistant)または携帯電話954A、デスクトップ・コンピュータ954B、ラップトップ・コンピュータ954C、または自動車コンピュータ・システム954N、あるいはその組合せなど)が通信できる1つまたは複数のクラウド・コンピューティング・ノード910を含んでいる。ノード910は、互いに通信してよい。ノード910は、1つまたは複数のネットワーク内で、本明細書において前述されたようなプライベート・クラウド、コミュニティ・クラウド、パブリック・クラウド、またはハイブリッド・クラウド、あるいはこれらの組合せなどに、物理的または仮想的にグループ化されてよい(図示されていない)。これによって、クラウド・コンピューティング環境950は、クラウドの利用者がローカル・コンピューティング・デバイス上でリソースを維持する必要のないインフラストラクチャ、プラットフォーム、またはSaaS、あるいはその組合せを提供できる。
図9に示されたコンピューティング・デバイス954A~Nの種類は、例示のみが意図されており、コンピューティング・ノード910およびクラウド・コンピューティング環境950は、任意の種類のネットワークまたはネットワーク・アドレス可能な接続(例えば、Webブラウザを使用した接続)あるいはその両方を経由して任意の種類のコンピュータ制御デバイスと通信することができると理解される。
【0096】
ここで
図10を参照すると、クラウド・コンピューティング環境950(
図9)によって提供される機能的抽象レイヤのセットが示されている。
図10に示されたコンポーネント、レイヤ、および機能は、例示のみが意図されており、本発明の実施形態がこれらに限定されないということが、あらかじめ理解されるべきである。図示されているように、次のレイヤおよび対応する機能が提供される。
【0097】
ハードウェアおよびソフトウェア・レイヤ1060は、ハードウェア・コンポーネントおよびソフトウェア・コンポーネントを含む。ハードウェア・コンポーネントの例としては、メインフレーム1061、RISC(Reduced Instruction Set Computer)アーキテクチャベースのサーバ1062、サーバ1063、ブレード・サーバ1064、ストレージ・デバイス1065、ならびにネットワークおよびネットワーク・コンポーネント1066が挙げられる。一部の実施形態では、ソフトウェア・コンポーネントは、ネットワーク・アプリケーション・サーバ・ソフトウェア1067およびデータベース・ソフトウェア1068を含む。
【0098】
仮想化レイヤ1070は、仮想サーバ1071、仮想ストレージ1072、仮想プライベート・ネットワークを含む仮想ネットワーク1073、仮想アプリケーションおよびオペレーティング・システム1074、ならびに仮想クライアント1075などの仮想的実体を提供できる抽象レイヤを備える。
【0099】
一例を挙げると、管理レイヤ1080は、以下で説明される機能を提供することができる。リソース・プロビジョニング1081は、クラウド・コンピューティング環境内でタスクを実行するために利用される計算リソースおよびその他のリソースの動的調達を行う。計測および価格設定1082は、クラウド・コンピューティング環境内でリソースが利用された際のコスト追跡、およびそれらのリソースの利用に対する請求書の作成と送付を行う。一例を挙げると、それらのリソースは、アプリケーション・ソフトウェア・ライセンスを含んでよい。セキュリティは、クラウドの利用者およびタスクのID検証を行うと共に、データおよびその他のリソースの保護を行う。ユーザ・ポータル1083は、クラウド・コンピューティング環境へのアクセスを利用者およびシステム管理者に提供する。サービス・レベル管理1084は、必要なサービス・レベルを満たすように、クラウドの計算リソースの割当てと管理を行う。サービス水準合意(SLA:Service Level Agreement)計画および実行1085は、今後の要求が予想されるクラウドの計算リソースの事前準備および調達を、SLAに従って行う。
【0100】
ワークロード・レイヤ1090は、クラウド・コンピューティング環境で利用できる機能の例を示している。このレイヤから提供されてよいワークロードおよび機能の非限定的な例としては、マッピングおよびナビゲーション1091、ソフトウェア開発およびライフサイクル管理1092、仮想クラスルーム教育の配信1093、データ解析処理1094、トランザクション処理1095、および量子コンピューティング・ジョブ・スケジューリング・ソフトウェア1096が挙げられる。
【0101】
本発明は、任意の可能な統合の技術的詳細レベルで、システム、方法、装置、またはコンピュータ・プログラム製品、あるいはその組合せであってよい。コンピュータ・プログラム製品は、プロセッサに本発明の態様を実行させるためのコンピュータ可読プログラム命令を含んでいるコンピュータ可読ストレージ媒体を含むことができる。コンピュータ可読ストレージ媒体は、命令実行デバイスによって使用するための命令を保持および格納できる有形のデバイスであることができる。コンピュータ可読ストレージ媒体は、例えば、電子ストレージ・デバイス、磁気ストレージ・デバイス、光ストレージ・デバイス、電磁ストレージ・デバイス、半導体ストレージ・デバイス、またはこれらの任意の適切な組合せであることができるが、これらに限定されない。コンピュータ可読ストレージ媒体のさらに具体的な例の非網羅的リストは、ポータブル・フロッピー(R)・ディスク、ハード・ディスク、ランダム・アクセス・メモリ(RAM:random access memory)、読取り専用メモリ(ROM:read-only memory)、消去可能プログラマブル読取り専用メモリ(EPROM:erasable programmable read-only memoryまたはフラッシュ・メモリ)、スタティック・ランダム・アクセス・メモリ(SRAM:static random access memory)、ポータブル・コンパクト・ディスク読取り専用メモリ(CD-ROM:compact disc read-only memory)、デジタル多用途ディスク(DVD:digital versatile disk)、メモリ・スティック、フロッピー(R)・ディスク、パンチカードまたは命令が記録されている溝の中の隆起構造などの機械的にエンコードされるデバイス、およびこれらの任意の適切な組合せを含むこともできる。本明細書において使用されるとき、コンピュータ可読ストレージ媒体は、それ自体が、電波またはその他の自由に伝搬する電磁波、導波管またはその他の送信媒体を介して伝搬する電磁波(例えば、光ファイバ・ケーブルを通過する光パルス)、あるいはワイヤを介して送信される電気信号などの一過性の信号であると解釈されるべきではない。
【0102】
本明細書に記載されたコンピュータ可読プログラム命令は、コンピュータ可読ストレージ媒体から各コンピューティング・デバイス/処理デバイスへ、またはネットワーク(例えば、インターネット、ローカル・エリア・ネットワーク、広域ネットワーク、または無線ネットワーク、あるいはその組合せ)を介して外部コンピュータまたは外部ストレージ・デバイスへダウンロードされ得る。このネットワークは、銅伝送ケーブル、光伝送ファイバ、無線送信、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、またはエッジ・サーバ、あるいはその組合せを備えることができる。各コンピューティング・デバイス/処理デバイス内のネットワーク・アダプタ・カードまたはネットワーク・インターフェイスは、コンピュータ可読プログラム命令をネットワークから受信し、それらのコンピュータ可読プログラム命令を各コンピューティング・デバイス/処理デバイス内のコンピュータ可読ストレージ媒体に格納するために転送する。本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ(ISA:instruction-set-architecture)命令、マシン命令、マシン依存命令、マイクロコード、ファームウェア命令、状態設定データ、集積回路のための構成データ、あるいは、Smalltalk(R)、またはC++などのオブジェクト指向プログラミング言語、および「C」プログラミング言語または同様のプログラミング言語などの手続き型プログラミング言語を含む1つまたは複数のプログラミング言語のうちの任意の組合せで記述されたソース・コードまたはオブジェクト・コードのいずれかであることができる。コンピュータ可読プログラム命令は、ユーザのコンピュータ上で全体的に実行すること、ユーザのコンピュータ上でスタンドアロン・ソフトウェア・パッケージとして部分的に実行すること、ユーザのコンピュータ上およびリモート・コンピュータ上でそれぞれ部分的に実行すること、あるいはリモート・コンピュータ上またはサーバ上で全体的に実行することができる。後者のシナリオでは、リモート・コンピュータは、ローカル・エリア・ネットワーク(LAN)もしくは広域ネットワーク(WAN)を含む任意の種類のネットワークを介してユーザのコンピュータに接続することができ、または接続は、(例えば、インターネット・サービス・プロバイダを使用してインターネットを介して)外部コンピュータに対して行われ得る。一部の実施形態では、本発明の態様を実行するために、例えばプログラマブル論理回路、フィールドプログラマブル・ゲート・アレイ(FPGA:field-programmable gate arrays)、またはプログラマブル・ロジック・アレイ(PLA:programmable logic arrays)を含む電子回路は、コンピュータ可読プログラム命令の状態情報を利用することによって、電子回路をカスタマイズするためのコンピュータ可読プログラム命令を実行することができる。
【0103】
本発明の態様は、本明細書において、本発明の実施形態に従って、方法、装置(システム)、およびコンピュータ・プログラム製品のフローチャート図またはブロック図あるいはその両方を参照して説明される。フローチャート図またはブロック図あるいはその両方の各ブロック、ならびにフローチャート図またはブロック図あるいはその両方に含まれるブロックの組合せが、コンピュータ可読プログラム命令によって実装され得るということが理解されるであろう。これらのコンピュータ可読プログラム命令は、コンピュータまたはその他のプログラム可能なデータ処理装置のプロセッサを介して実行される命令が、フローチャートまたはブロック図あるいはその両方のブロックに指定される機能/動作を実施する手段を作り出すべく、汎用コンピュータ、専用コンピュータ、または他のプログラム可能なデータ処理装置のプロセッサに提供されてマシンを作り出すものであることができる。これらのコンピュータ可読プログラム命令は、命令が格納されたコンピュータ可読ストレージ媒体がフローチャートまたはブロック図あるいはその両方のブロックに指定される機能/動作の態様を実施する命令を含んでいる製品を備えるように、コンピュータ可読ストレージ媒体に格納され、コンピュータ、プログラム可能なデータ処理装置、または他のデバイス、あるいはその組合せに特定の方式で機能するように指示できるものであることもできる。コンピュータ可読プログラム命令は、コンピュータ上、その他のプログラム可能な装置上、またはその他のデバイス上で実行される命令が、フローチャートまたはブロック図あるいはその両方のブロックに指定される機能/動作を実施するように、コンピュータ実装プロセスを生成するために、コンピュータ、その他のプログラム可能なデータ処理装置、またはその他のデバイスに読み込まれ、コンピュータ上、その他のプログラム可能な装置上、またはその他のデバイス上で一連の操作可能な動作を実行させることもできる。
【0104】
図内のフローチャートおよびブロック図は、本発明のさまざまな実施形態に従って、システム、方法、およびコンピュータ・プログラム製品の可能な実装のアーキテクチャ、機能、および動作を示す。これに関連して、フローチャートまたはブロック図内の各ブロックは、規定された論理機能を実装するための1つまたは複数の実行可能な命令を含んでいる、命令のモジュール、セグメント、または部分を表すことができる。一部の代替の実装では、ブロックに示された機能は、図に示された順序とは異なる順序で発生することができる。例えば、連続して示された2つのブロックは、実際には、含まれている機能に応じて、実質的に同時に実行されるか、または場合によっては逆の順序で実行され得る。ブロック図またはフローチャート図あるいはその両方の各ブロック、ならびにブロック図またはフローチャート図あるいはその両方に含まれるブロックの組合せは、規定された機能または動作を実行するか、または専用ハードウェアとコンピュータ命令との組合せを実行する専用ハードウェアベースのシステムによって実装され得るということにも注意するであろう。
【0105】
上記では、1つのコンピュータまたは複数のコンピュータあるいはその両方で実行されるコンピュータ・プログラム製品のコンピュータ実行可能命令との一般的な関連において、対象が説明されたが、当業者は、本開示がまたその他のプログラム・モジュールと組み合わせられ得るか、またはその他のプログラム・モジュールと組み合わせて実装され得るということを認識するであろう。通常、プログラム・モジュールは、特定のタスクを実行するか、または特定の抽象データ型を実装するか、あるいはその両方を行うルーチン、プログラム、コンポーネント、データ構造などを含む。さらに、当業者は、本発明のコンピュータ実装方法が、シングルプロセッサ・コンピュータ・システムまたはマルチプロセッサ・コンピュータ・システム、ミニコンピューティング・デバイス、メインフレーム・コンピュータ、ならびに、コンピュータ、ハンドヘルド・コンピューティング・デバイス(例えば、PDA、電話)、およびマイクロプロセッサベースまたはプログラム可能な家庭用電化製品または産業用電子機器などを含む、その他のコンピュータ・システム構成を使用して実践され得るということを理解するであろう。示された態様は、通信ネットワークを介してリンクされたリモート処理デバイスによってタスクが実行される、分散コンピューティング環境内で実践されてもよい。ただし、本開示の態様の全部ではないとしても一部は、スタンドアロン・コンピュータ上で実践され得る。分散コンピューティング環境において、プログラム・モジュールは、ローカルおよびリモートの両方のメモリ・ストレージ・デバイスに配置され得る。
【0106】
本出願において使用されるとき、「コンポーネント」、「システム」、「プラットフォーム」、および「インターフェイス」などの用語は、1つまたは複数の特定の機能を含むコンピュータ関連の実体または操作可能なマシンに関連する実体を指すことができるか、またはそれらの実体を含むことができるか、あるいはその両方が可能である。本明細書で開示された実体は、ハードウェア、ハードウェアとソフトウェアの組合せ、ソフトウェア、または実行中のソフトウェアのいずれかであることができる。例えば、コンポーネントは、プロセッサ上で実行されるプロセス、プロセッサ、オブジェクト、実行ファイル、実行のスレッド、プログラム、またはコンピュータ、あるいはその組合せであることができるが、これらに限定されない。例として、サーバ上で実行されるアプリケーションおよびサーバの両方が、コンポーネントであることができる。1つまたは複数のコンポーネントが、プロセス内または実行のスレッド内あるいはその両方に存在することができ、コンポーネントは、1つのコンピュータ上に局在するか、または2つ以上のコンピュータ間で分散されるか、あるいはその両方が可能である。別の例では、各コンポーネントは、さまざまなデータ構造が格納されているさまざまなコンピュータ可読媒体から実行できる。コンポーネントは、1つまたは複数のデータ・パケット(例えば、ローカル・システム内または分散システム内の別のコンポーネントと情報をやりとりするか、またはインターネットなどのネットワークを経由して、信号を介して他のシステムと情報をやりとりするか、あるいはその両方によって情報をやりとりする、1つのコンポーネントからのデータ)を含んでいる信号などに従ってなど、ローカルまたはリモートあるいはその両方のプロセスを介して通信できる。別の例として、コンポーネントは、電気または電子回路によって操作される機械的部品によって提供される特定の機能を有する装置であることができ、プロセッサによって実行されるソフトウェア・アプリケーションまたはファームウェア・アプリケーションによって操作される。そのような場合、プロセッサは、装置の内部または外部に存在することができ、ソフトウェア・アプリケーションまたはファームウェア・アプリケーションの少なくとも一部を実行できる。さらに別の例として、コンポーネントは、機械的部品を含まない電子コンポーネントを介して特定の機能を提供する装置であることができ、それらの電子コンポーネントは、電子コンポーネントの機能の少なくとも一部を与えるソフトウェアまたはファームウェアを実行するためのプロセッサまたはその他の手段を含むことができる。1つの態様では、コンポーネントは、例えばクラウド・コンピューティング・システム内で、仮想マシンを介して電子コンポーネントをエミュレートすることができる。
【0107】
加えて、「または」という用語は、排他的「または」ではなく、包含的「または」を意味するよう意図されている。すなわち、特に指定されない限り、または文脈から明らかである限り、「XがAまたはBを採用する」は、自然な包含的順列のいずれかを意味するよう意図されている。すなわち、XがAを採用するか、XがBを採用するか、またはXがAおよびBの両方を採用する場合、「XがAまたはBを採用する」が、前述の事例のいずれかにおいて満たされる。さらに、本明細書および添付の図面において使用されるような冠詞「ある(a)」および「1つの(an)」は、単数形を対象にすることが特に指定されない限り、または文脈から明らかである限り、「1つまたは複数」を意味すると一般に解釈されるべきである。本明細書において使用されるとき、「例」または「例示的」あるいはその両方の用語は、一例、一事例、または一実例となることを意味するために使用される。誤解を避けるために、本明細書で開示された対象は、そのような例によって制限されない。加えて、一「例」または一「例示的」あるいはその両方として本明細書に記載された任意の態様または設計は、他の態様または設計よりも好ましいか、または有利であると必ずしも解釈されず、当業者に知られている同等の例示的な構造および技術を除外するよう意図されていない。
【0108】
本明細書において使用されるとき、「プロセッサ」という用語は、シングルコア・プロセッサと、ソフトウェアのマルチスレッド実行機能を備えるシングルプロセッサと、マルチコア・プロセッサと、ソフトウェアのマルチスレッド実行機能を備えるマルチコア・プロセッサと、ハードウェアのマルチスレッド技術を備えるマルチコア・プロセッサと、並列プラットフォームと、分散共有メモリを備える並列プラットフォームとを含むが、これらに限定されない、実質的に任意の計算処理ユニットまたはデバイスを指すことができる。さらに、プロセッサは、集積回路、特定用途向け集積回路(ASIC:application specific integrated circuit)、デジタル信号プロセッサ(DSP:digital signal processor)、フィールド・プログラマブル・ゲート・アレイ(FPGA:field programmable gate array)、プログラマブル・ロジック・コントローラ(PLC:programmable logic controller)、複合プログラム可能論理デバイス(CPLD:complex programmable logic device)、個別のゲートまたはトランジスタ論理、個別のハードウェア・コンポーネント、あるいは本明細書に記載された機能を実行するように設計されたこれらの任意の組合せを指すことができる。さらに、プロセッサは、空間利用を最適化し、ユーザ機器の性能を向上させるために、分子および量子ドットベースのトランジスタ、スイッチ、およびゲートなどの、ただしこれらに限定されない、ナノスケール・アーキテクチャを利用することができる。プロセッサは、計算処理ユニットの組合せとして実装されてもよい。本開示では、コンポーネントの動作および機能に関連する「ストア」、「ストレージ」、「データ・ストア」、「データ・ストレージ」、「データベース」、および実質的に任意のその他の情報格納コンポーネントなどの用語は、「メモリ・コンポーネント」、「メモリ」内に具現化された実体、またはメモリを備えているコンポーネントを指すために使用される。本明細書に記載されたメモリまたはメモリ・コンポーネントあるいはその両方が、揮発性メモリまたは不揮発性メモリのいずれかであることができ、あるいは揮発性メモリおよび不揮発性メモリの両方を含むことができるということが、理解されるべきである。不揮発性メモリの例としては、読取り専用メモリ(ROM)、プログラマブルROM(PROM)、電気的プログラマブルROM(EPROM)、電気的消去可能ROM(EEPROM)、フラッシュ・メモリ、または不揮発性ランダム・アクセス・メモリ(RAM)(例えば、強誘電体RAM(FeRAM))が挙げられ得るが、これらに限定されない。揮発性メモリは、例えば外部キャッシュ・メモリとして機能できる、RAMを含むことができる。例えばRAMは、シンクロナスRAM(SRAM)、ダイナミックRAM(DRAM)、シンクロナスDRAM(SDRAM:synchronous DRAM)、ダブル・データ・レートSDRAM(DDR SDRAM:double data rate SDRAM)、拡張SDRAM(ESDRAM:enhanced SDRAM)、シンクリンクDRAM(SLDRAM:Synchlink DRAM)、ダイレクト・ラムバスRAM(DRRAM:direct Rambus RAM)、ダイレクト・ラムバス・ダイナミックRAM(DRDRAM:direct Rambus dynamic RAM)、およびラムバス・ダイナミックRAM(RDRAM:Rambus dynamic RAM)などの、ただしこれらに限定されない、多くの形態で利用可能である。さらに、本明細書において開示されたシステムまたはコンピュータ実装方法のメモリ・コンポーネントは、これらおよび任意のその他の適切な種類のメモリを含むが、これらに限定されない、メモリを含むよう意図されている。
【0109】
前述した内容は、システムおよびコンピュータ実装方法の単なる例を含んでいる。当然ながら、本開示を説明する目的で、コンポーネントまたはコンピュータ実装方法の考えられるすべての組合せについて説明することは不可能であるが、当業者は、本開示の多くのその他の組合せおよび並べ替えが可能であるということを認識できる。さらに、「含む」、「有する」、および「所有する」などの用語が、発明を実施するための形態、特許請求の範囲、付録、および図面において使用される範囲では、それらの用語は、「備えている」が特許請求における移行語として使用されるときに解釈されるような、用語「備えている」と同様の方法で、包含的であるよう意図されている。
【0110】
さまざまな実施形態の説明は、例示の目的で提示されているが、網羅的であることは意図されておらず、開示された実施形態に制限されない。説明された実施形態の範囲から逸脱することなく多くの変更および変形が可能であることは、当業者にとって明らかであろう。本明細書で使用された用語は、実施形態の原理、実際の適用、または市場で見られる技術を超える技術的改良を最も適切に説明するため、または当業者が本明細書で開示された実施形態を理解できるようにするために選択されている。