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

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

▶ ザ・ボーイング・カンパニーの特許一覧

<>
  • 特許-量子処理システム 図1
  • 特許-量子処理システム 図2
  • 特許-量子処理システム 図3
  • 特許-量子処理システム 図4
  • 特許-量子処理システム 図5
  • 特許-量子処理システム 図6
  • 特許-量子処理システム 図7
  • 特許-量子処理システム 図8
  • 特許-量子処理システム 図9
  • 特許-量子処理システム 図10
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2025-06-25
(45)【発行日】2025-07-03
(54)【発明の名称】量子処理システム
(51)【国際特許分類】
   G06N 10/80 20220101AFI20250626BHJP
【FI】
G06N10/80
【請求項の数】 16
【外国語出願】
(21)【出願番号】P 2021098422
(22)【出願日】2021-06-14
(65)【公開番号】P2022008168
(43)【公開日】2022-01-13
【審査請求日】2024-06-13
(31)【優先権主張番号】16/904,518
(32)【優先日】2020-06-17
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】500520743
【氏名又は名称】ザ・ボーイング・カンパニー
【氏名又は名称原語表記】The Boeing Company
(74)【代理人】
【識別番号】110002077
【氏名又は名称】園田・小林弁理士法人
(72)【発明者】
【氏名】トンプソン, リチャード ジョエル
(72)【発明者】
【氏名】ケーゲル, マルナ エム.
【審査官】宮司 卓佳
(56)【参考文献】
【文献】特開2006-331249(JP,A)
【文献】米国特許第10671550(US,B1)
【文献】特表2011-501325(JP,A)
【文献】Haener, T. et.al.,'A Software Methodology for Compiling Quantum Programs',arXiv.org, [online],米国,Cornell University,2016年05月11日,p.1-p.14,[retrieved on 2025.04.07], Retrieved from the Internet: <URL: https://arxiv.org/pdf/1604.01401v2>
(58)【調査した分野】(Int.Cl.,DB名)
G06N 10/00-10/80
(57)【特許請求の範囲】
【請求項1】
量子処理システム(208)であって、
コンピュータシステム(210)と、
前記コンピュータシステム(210)における量子言語トランスレータのセット(212)であって、量子プログラミング言語(222)の、処理(220)のための命令(218)を、前記処理(220)を実行するよう構成された量子コンピュータコンポーネント(228)のデジタルモデル表現(226)に変換すること、及び前記処理(220)を実行するよう構成された前記量子コンピュータコンポーネント(228)の前記デジタルモデル表現(226)を、量子コンピュータ(202)で実行される、前記量子プログラミング言語(222)の、前記処理(220)のための前記命令(218)に変換すること、を行うよう設定されており、前記量子言語トランスレータのセット(212)における量子言語トランスレータ(244)の各々は、複数の前記量子プログラミング言語(222)のうちのある特定の量子プログラミング言語のためのものである、量子言語トランスレータのセット(212)と、
複数のユニバーサルゲートセット(246)であって、ある特定の量子コンピュータにとって実行可能な処理は何でも、前記ユニバーサルゲートセット(246)のうちの1つのユニバーサルゲートセット(248)中のいくつかのゲート(250)を使用して実行されうる、ユニバーサルゲートセット(246)と、
前記コンピュータシステム(210)におけるプロセスマネージャ(214)であって、
前記量子言語トランスレータのセット(212)のうちの1つの量子言語トランスレータ(244)に、量子プログラミング言語(242)の前記命令(218)を送信することであって、前記量子言語トランスレータ(244)が、前記量子プログラミング言語(242)を処理するよう設定されており、かつ前記量子コンピュータコンポーネント(228)の前記デジタルモデル表現(226)を出力する、前記命令(218)を送信すること、
前記処理を実行するよう構成された前記量子コンピュータコンポーネントの前記デジタルモデル表現の処理をシミュレートすること、及び
前記量子言語トランスレータ(244)に前記量子コンピュータコンポーネント(228)の前記デジタルモデル表現(226)を送信することであって、これにより、前記量子言語トランスレータ(244)が、前記特定の量子コンピュータのコンピュータタイプ(252)に応じて選択された前記ユニバーサルゲートセット(248)を使用して、前記量子プログラミング言語(242)の、前記処理(220)のための前記命令(218)を出力する、前記デジタルモデル表現(226)を送信すること、を行うよう設定されている、プロセスマネージャ(214)と、を備える、
量子処理システム(208)。
【請求項2】
前記プロセスマネージャ(214)が、選択された、複数の前記ユニバーサルゲートセット(246)のうちの1つの前記ユニバーサルゲートセット(248)を特定するよう設定されており、選択されている前記ユニバーサルゲートセット(248)が、ある特定の量子コンピュータに望ましいレベルのパフォーマンスを提供する、請求項1に記載の量子処理システム(208)。
【請求項3】
前記ユニバーサルゲートセット(248)の選択が、前記命令(218)と共に、前記量子言語トランスレータ(244)に送信される、請求項1又は2に記載の量子処理システム(208)。
【請求項4】
前記ユニバーサルゲートセット(246)が、アダマールゲート、位相(S)ゲート、制御-X(CNOT)ゲート、及びトフォリゲート;アダマールゲート、位相(S)ゲート、π/8(T)ゲート、及び制御-X(CNOT)ゲート;バレンコゲート(B);ドイツゲート(D_θ)ゲート;回転ゲート R_x(θ),R_y(θ);回転ゲート R_x(θ),R_y(θ);又は制御-Z(Cz)ゲート、のうちの少なくとも1つから選択される、請求項1から3のいずれか一項に記載の量子処理システム(208)。
【請求項5】
前記量子言語トランスレータ(244)が、
前記量子言語トランスレータのセット(212)のうちの前記量子言語トランスレータ(244)に送信された、前記量子プログラミング言語(242)の前記命令(218)を受信すること、及び、前記量子コンピュータコンポーネント(228)の前記デジタルモデル表現(226)を出力すること、を行うよう設定された、トランスレータ入力部(300)と、
前記量子言語トランスレータ(244)に送信された、前記量子コンピュータコンポーネント(228)の前記デジタルモデル表現(226)を受信すること、及び、前記量子プログラミング言語(242)の、前記処理(220)のための前記命令(218)を出力すること、を行うよう設定された、トランスレータ出力部(302)と、を備える、請求項1から4のいずれか一項に記載の量子処理システム(208)。
【請求項6】
量子処理のための方法であって、
コンピュータシステム(210)によって、量子コンピュータ向けのプロセス(204)のためのターゲット量子プログラミング言語を識別すること(600)と、
前記コンピュータシステム(210)によって、前記量子コンピュータのコンピュータタイプ(252)に基づいて、複数のユニバーサルゲートセット(246)から1つのユニバーサルゲートセット(248)を選択すること(602)であって、ある特定の量子コンピュータにとって実行可能な処理は何でも、前記ユニバーサルゲートセット(248)中のいくつかのゲート(250)を使用して実行されうる、ユニバーサルゲートセット(248)を選択すること(602)と、
前記コンピュータシステム(210)によって、量子言語トランスレータのセット(212)のうちの1つのソース量子言語トランスレータに、ソース量子プログラミング言語の、前記プロセス(204)のための命令(218)を送信すること(604)であって、前記ソース量子言語トランスレータが、前記命令(218)を使用して前記プロセス(204)を実行するよう構成されている量子コンピュータコンポーネント(228)のデジタルモデル表現(226)を出力する、命令(218)を送信すること(604)と、
前記コンピュータシステム内のプロセスマネージャによって、前記プロセスを実行するよう構成された前記量子コンピュータコンポーネントの前記デジタルモデル表現の処理をシミュレートすることと、
前記コンピュータシステム(210)によって、ターゲット量子言語トランスレータに、前記量子コンピュータコンポーネント(228)の前記デジタルモデル表現(226)、及び選択された前記ユニバーサルゲートセット(248)を送信すること(606)であって、これにより、前記量子言語トランスレータが、前記量子コンピュータコンポーネント(228)の前記デジタルモデル表現(226)、及び前記量子コンピュータの前記コンピュータタイプ(252)に応じて選択された前記ユニバーサルゲートセット(248)を使用して、前記ターゲット量子プログラミング言語の、前記プロセス(204)のための処理(220)のための前記命令(218)を出力する、送信すること(606)と、を含む
方法。
【請求項7】
前記量子コンピュータの前記コンピュータタイプ(252)に基づいて、複数の前記ユニバーサルゲートセット(246)から1つの前記ユニバーサルゲートセット(248)を選択することが、
前記コンピュータシステム(210)によって、前記量子コンピュータの前記コンピュータタイプ(252)に望ましいレベルのパフォーマンスを提供する、複数の前記ユニバーサルゲートセット(246)のうちの1つの前記ユニバーサルゲートセット(248)を選択することを含む、請求項6に記載の方法。
【請求項8】
前記ユニバーサルゲートセット(246)が、アダマールゲート、位相(S)ゲート、制御-X(CNOT)ゲート、及びトフォリゲート;アダマールゲート、位相(S)ゲート、π/8(T)ゲート、及び制御-X(CNOT)ゲート;バレンコゲート(B);ドイツゲート(D_θ)ゲート;回転ゲート R_x(θ),R_y(θ);回転ゲート R_x(θ),R_y(θ);又は制御-Z(CZ)ゲート、
のうちの少なくとも1つから選択される、請求項6又は7に記載の方法。
【請求項9】
前記コンピュータシステム(210)によって、前記量子コンピュータにおいて、前記ターゲット量子プログラミング言語の前記命令(218)を実行することを更に含む、請求項6から8のいずれか一項に記載の方法。
【請求項10】
前記量子言語トランスレータ(244)が、
前記量子言語トランスレータのセット(212)のうちの前記量子言語トランスレータ(244)に送信された、量子プログラミング言語(242)の前記命令(218)を受信すること、及び、前記量子コンピュータコンポーネント(228)の前記デジタルモデル表現(226)を出力すること、を行うよう設定された、トランスレータ入力部(300)と、
前記量子言語トランスレータ(244)に送信された、前記量子コンピュータコンポーネント(228)の前記デジタルモデル表現(226)を受信すること、及び、前記量子プログラミング言語(242)の、前記処理(220)のための前記命令(218)を出力すること、を行うよう設定された、トランスレータ出力部(302)と、を備える、請求項6から9のいずれか一項に記載の方法。
【請求項11】
前記量子コンピュータコンポーネント(228)がゲート(250)を含む、請求項6から10のいずれか一項に記載の方法。
【請求項12】
前記量子コンピュータコンポーネント(228)が、量子ビットモデル(402)、メモリモデル(404)、メモリステート(406)、又は量子プログラミング(408)、のうちの少なくとも1つを更に含む、請求項11に記載の方法。
【請求項13】
前記ゲート(250)がいくつかのスーパーゲート(414)を含む、請求項11に記載の方法。
【請求項14】
前記量子コンピュータが、超伝導量子コンピュータとイオントラップ量子コンピュータの一方から選択される、請求項6から13のいずれか一項に記載の方法。
【請求項15】
前記命令(218)が、アプリケーション、プログラム、及びサブルーチンのうちの1つのためのものである、請求項6から14のいずれか一項に記載の方法。
【請求項16】
プログラムコードを記憶したコンピュータ可読記憶媒体であって、
前記プログラムコードが、コンピュータシステム(210)によって実行されると、前記コンピュータシステム(210)に請求項6から1のいずれか一項に記載の方法を実行させる、コンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は概して、改良型のコンピュータシステムに関し、詳細には、量子コンピュータ向けの量子プロセスの実行を管理するための方法、装置、システム、及びコンピュータプログラム製品に関する。
【背景技術】
【0002】
量子コンピュータは、量子機械システムにおいて命令のシーケンスを実行するコンピュータである。かかる命令は、量子アルゴリズムとも称されるプロセスのためのものである。このプロセスは、演算を実行するための量子機械現象(例えば重ね合わせ及び量子もつれあい)を伴う。量子コンピュータは、精巧なプログラミングを用いて、問題解決のための処理能力を有効に使用することが可能である。
【0003】
量子コンピュータは、最適化、機械学習、暗号法、及びその他のタスクなどといったものを含むタスクに、コンピューティング上の利点を提供しうる。種々のタイプの量子コンピュータが存在する。例えば、一コンピュータが、イオントラップ量子コンピュータ、超伝導量子コンピュータ、トポロジー量子コンピュータ、又はその他のタイプの量子コンピュータというアーキテクチャの形態をとりうる。かかる種々のアーキテクチャは、別々の開発ツール、スタック、及びプログラミング言語を有しうる。
【0004】
量子コンピュータのコンピュータタイプ、開発ツール、及びプログラミング言語が複数存在していることで、量子アルゴリズムなどのプロセスを創出すること、並びに、これらのプロセスを種々の言語及びハードウェアで実装することは、時間のかかる、困難なことになりうる。
【0005】
したがって、上述の問題の少なくとも一部に加えて、他の起こりうる問題をも考慮している方法及び装置を有することができれば、それが望ましい。例えば、量子コンピュータにおける量子処理に関する技術的問題を克服する、方法及び機器を得られれば、それが望ましい。
【発明の概要】
【0006】
本開示の一実施形態は、量子処理システムであって、コンピュータシステムと、コンピュータシステムにおける量子言語トランスレータのセットと、ユニバーサルゲートセットと、コンピュータシステムにおけるプロセスマネージャと、を備える量子処理システムを提供する。量子言語トランスレータのセットは、量子プログラミング言語の、処理(operation)のための命令を、この処理を実行するよう構成された量子コンピュータコンポーネントのデジタルモデル表現に変換すること、及び処理を実行するよう構成された量子コンピュータコンポーネントのデジタルモデル表現を、量子コンピュータで実行される、量子プログラミング言語の、処理のための命令に変換することと、を行うよう設定される。量子言語トランスレータのセットにおける量子言語トランスレータの各々は、複数の量子プログラミング言語のうちのある特定の量子プログラミング言語のためのものである。ある特定の量子コンピュータにとって実行可能な処理は何でも、複数のユニバーサルゲートセットのうちの1つのユニバーサルゲートセット中のいくつかのゲートを使用して実行されうる。プロセスマネージャは、量子言語トランスレータのセットのうちの1つの量子言語トランスレータに、量子プログラミング言語の命令を送信するよう設定される。量子言語トランスレータは、量子プログラミング言語を処理する(handle)よう設定されており、量子コンピュータコンポーネントのデジタルモデル表現を出力する。プロセスマネージャは、量子言語トランスレータに、量子コンピュータコンポーネントのデジタルモデル表現を送信するよう設定されており、これにより、この量子言語トランスレータは、特定の量子コンピュータのコンピュータタイプに応じて選択されたユニバーサルゲートを使用して、量子プログラミング言語の、処理のための命令を出力する。
【0007】
本開示の別の実施形態は、量子処理システムであって、コンピュータシステムと、コンピュータシステムにおける量子言語トランスレータのセットと、コンピュータシステムにおけるプロセスマネージャと、を備える量子処理システムを提供する。量子言語トランスレータのセットは、量子プログラミング言語の、処理のための命令を、処理を実行するよう構成された量子コンピュータコンポーネントのデジタルモデル表現に変換すること、及び処理を実行するよう構成された量子コンピュータコンポーネントのデジタルモデル表現を、量子コンピュータで実行される、量子プログラミング言語の、処理のための命令に変換すること、を行うよう設定される。量子言語トランスレータのセットにおける量子言語トランスレータの各々は、複数の量子プログラミング言語のうちのある特定の量子プログラミング言語のためのものである。プロセスマネージャは、複数の量子プログラミング言語のうちの1つの量子プログラミング言語の命令を、受信するよう設定される。プロセスマネージャは、量子言語トランスレータのセットのうちの1つの量子言語トランスレータに、量子プログラミング言語の命令を送信するよう設定される。量子言語トランスレータは、量子プログラミング言語を処理するよう設定されており、量子コンピュータコンポーネントのデジタルモデル表現を出力する。プロセスマネージャは、量子言語トランスレータに、量子コンピュータコンポーネントのデジタルモデル表現を送信するよう設定されており、これにより、この量子言語トランスレータは、量子プログラミング言語の、処理のための命令を出力する。
【0008】
本開示の更に別の実施形態は、量子処理のための方法を提供する。量子コンピュータ向けのプロセスのためのターゲット量子プログラミングが、コンピュータシステムによって識別される。コンピュータシステムによって、複数のユニバーサルゲートセットから1つのユニバーサルゲートセットが、量子コンピュータのコンピュータタイプに基づいて選択され、ある特定の量子コンピュータにとって実行可能な処理は何でも、このユニバーサルゲートセット中のいくつかのゲートを使用して実行されうる。コンピュータシステムによって、ソース量子プログラミング言語の、プロセスのための命令が、量子言語トランスレータのセットのうちの1つのソース量子言語トランスレータに送信され、このソース量子言語トランスレータが、命令を使用してプロセスを実行するよう構成されている量子コンピュータコンポーネントのデジタルモデル表現を出力する。量子コンピュータコンポーネントのデジタルモデル表現、及び選択されたユニバーサルゲートセットは、コンピュータシステムによって、ターゲット量子言語トランスレータに送信され、これにより、このターゲット量子言語トランスレータは、量子コンピュータコンポーネントのデジタルモデル表現、及び量子コンピュータのコンピュータタイプに応じて選択されたユニバーサルゲートセットを使用して、ターゲット量子プログラミング言語の、処理のための命令を出力する。
【0009】
本開示の更に別の実施形態は、量子処理のためのコンピュータプログラム製品を提供する。このコンピュータプログラム製品は、コンピュータ可読記憶媒体に記憶された、第1プログラムコードと、第2プログラムコードと、第3プログラムコードと、第4プログラムコードとを含む。第1プログラムコードは、コンピュータシステムに、量子コンピュータ向けのプロセスのためのターゲット量子プログラミング言語を識別させるよう、このコンピュータシステムによって実行可能である。第2プログラムコードは、コンピュータシステムに、量子コンピュータのコンピュータタイプに基づいて、複数のユニバーサルゲートセットから1つのユニバーサルゲートセットを選択させるよう、このコンピュータシステムによって実行可能である。ある特定の量子コンピュータにとって実行可能な処理は何でも、ユニバーサルゲートセット中のいくつかのゲートを使用して実行されうる。第3プログラムコードは、コンピュータシステムに、ソース量子プログラミング言語の、プロセスのための命令を、量子言語トランスレータのセットのうちの1つのソース量子言語トランスレータに送信させるよう、このコンピュータシステムによって実行可能である。このソース量子言語トランスレータは、命令を使用してプロセスを実行するよう構成されている量子コンピュータコンポーネントのデジタルモデル表現を出力する。第4プログラムコードは、コンピュータシステムに、量子コンピュータコンポーネントのデジタルモデル表現、及び選択されたユニバーサルゲートセットを、ターゲット量子言語トランスレータに送信させるよう、このコンピュータシステムによって実行可能であり、これにより、このターゲット量子言語トランスレータは、量子コンピュータコンポーネントのデジタルモデル表現、及び量子コンピュータのコンピュータタイプに応じて選択されたユニバーサルゲートを使用して、ターゲット量子プログラミング言語の、処理のための命令を出力する。
【0010】
これらの特徴及び機能は、本開示の様々な実施形態で単独で実現可能であるか、又は、以下の説明及び図面を参照して更なる詳細を理解しうる更に別の実施形態において、組み合わされうる。
【0011】
例示的な実施形態の特性と考えられる新規な特徴は、付随する特許請求の範囲に明記されている。しかし、例示的な実施形態と共に、好ましい使用モード、その更なる目的及び特徴は、添付図面と併せて、本開示の例示的な実施形態についての以下の詳細説明を参照することによって、最もよく理解されよう。
【図面の簡単な説明】
【0012】
図1】例示的な実施形態が実装されうる、データ処理システムのネットワークの図解である。
図2】例示的な一実施形態による、量子コンピューティング環境のブロック図である。
図3】例示的な一実施形態による、量子言語トランスレータのブロック図の一例である。
図4】例示的な一実施形態による、デジタルモデル表現における量子コンピュータコンポーネントのブロック図の一例である。
図5】例示的な一実施形態による、ターゲット量子プログラミング言語の命令の生成についての図の一例 である。
図6】例示的な一実施形態による、量子処理のためのプロセスのフロー図の一例である。
図7】例示的な一実施形態による、量子処理のためのプロセスのフロー図の別の例である。
図8】例示的な一実施形態による、量子処理のためのプロセスのフロー図の更に別の例である。
図9】例示的な一実施形態による、量子コンピュータをベンチマーキングするためのプロセスのフロー図の一例である。
図10】例示的な一実施形態による、データ処理システムのブロック図の一例である。
【発明を実施するための形態】
【0013】
例示的な実施形態は、一又は複数の異なる検討事項を認識し考慮するものである。例えば、例示的な実施形態は、量子コンピュータにおいてプロセスを実装するための従来技術が、望まれているものよりも困難でありうることを、認識し考慮するものである。例えば、例示的な実施形態は、量子プログラムであって、その中では各プログラムが、特定の一コンピュータのためのプログラミング言語で、個別のスタック又はハードウェア内に存在している量子プログラムに関する、複数の命令のうちの個別の命令が、従来技術では手動で構築されることを、認識し考慮するものである。かかる実施形態は、上記の実装が複雑なせいで、エラーが起こりやすくなり、かつ時間がかかりうることを、認識し考慮するものである。
【0014】
例示的な実施形態は、量子コンピュータ向けの2つの異なるプログラムが同一のプロセスを別様に実装しうることも、認識し考慮するものである。かかる同一のプロセスの別様の実装は、評価されうる、異なるタイプの量子コンピュータの比較におけるベンチマーキングでの、不一致につながりうる。
【0015】
ここで図を、具体的には図1を参照するに、例示的な実施形態が実装されうるデータ処理システムのネットワークの図解が示されている。ネットワークデータ処理システム100は、例示的な実施形態が実装されうるコンピュータのネットワークである。ネットワークデータ処理システム100はネットワーク102を包含しており、ネットワーク102は、ネットワークデータ処理システム100内のひとまとめに接続された様々なデバイスとコンピュータとの間に、通信リンクを提供するために使用される媒体である。ネットワーク102は、有線若しくは無線の通信リンク、又は光ファイバケーブルといった、接続を含みうる。
【0016】
図示している例では、サーバコンピュータ104及びサーバコンピュータ106が、ストレージユニット108と共に、ネットワーク102に接続されている。加えて、クライアントデバイス110もネットワーク102に接続されている。図示しているクライアントデバイス110は、量子コンピュータ112、量子コンピュータ114、及びクライアントコンピュータ116を含む。クライアントデバイス110は、例えばコンピュータ、ワークステーション、又はネットワークコンピュータでありうる。図示している例では、サーバコンピュータ104は、情報(ブートファイル、オペレーティングシステム画像、及びアプリケーションなど)をクライアントデバイス110に提供する。更に、クライアントデバイス110は、その他のタイプのクライアントデバイス(携帯電話118、タブレットコンピュータ120、及びスマートグラス122など)も含みうる。この実施例では、サーバコンピュータ104、サーバコンピュータ106、ストレージユニット108、及びクライアントデバイス110は、ネットワーク102に接続しているネットワークデバイスであり、ネットワーク102は、これらのネットワークデバイスのための通信媒体である。クライアントデバイス110の一部又は全部が、「モノのインターネット(IoT)」を形成してよく、IoTにおいては、これらの物理的デバイスは、ネットワーク102に接続され、ネットワーク102を通じて互いに情報交換しうる。
【0017】
この例では、クライアントデバイス110はサーバコンピュータ104に対するクライアントである。ネットワークデータ処理システム100は、図示していない追加のサーバコンピュータ、クライアントコンピュータ、及びその他のデバイスを含むこともある。クライアントデバイス110は、有線の、光ファイバの、又は無線の接続のうちの少なくとも1つを利用して、ネットワーク102に接続されている。
【0018】
ネットワークデータ処理システム100内に配置されるプログラムコードは、コンピュータ記録可能記憶媒体に記憶されてよく、使用のために、データ処理システム又はその他のデバイスにダウンロードされうる。例えば、プログラムコードは、サーバコンピュータ104のコンピュータ記録可能記憶媒体に記憶されてよく、クライアントデバイス110で使用されるために、ネットワーク102を通じてクライアントデバイス110にダウンロードされうる。
【0019】
図示している例では、ネットワークデータ処理システム100は、ネットワーク102を伴うインターネットであり、これは、互いに通信するためのプロトコルであるTCP/IP(Transmission Control Protocol/Internet Protocol)スイートを使用する、ネットワーク及びゲートウェイの世界規模の集合体のことである。インターネットの中心部には、データ及びメッセージをルーティングする数千もの民間の、政府機関の、教育機関の、及びその他のコンピュータシステムからなる主要なノード又はホストコンピュータ間の、高速データ通信ラインのバックボーンがある。当然ながら、ネットワークデータ処理システム100は、いくつかの異なるタイプのネットワークを使用して実装されることもある。例えば、ネットワーク102は、インターネット、イントラネット、ローカルエリアネットワーク(LAN)、メトロポリタンエリアネットワーク(MAN)、又はワイドエリアネットワーク(WAN)、のうちの少なくとも1つで構成されうる。図1は一例を示すためのものであり、種々の例示的な実施形態に対するアーキテクチャ上の限定を意図するものではない。
【0020】
本書において、アイテムに関連して使用される場合の「いくつかの(a number of)」という語は、一又は複数のアイテムを意味する。例えば、「いくつかの異なるタイプのネットワーク」とは、一又は複数の異なるタイプのネットワークである。
【0021】
更に、列挙されたアイテムと共に使用される場合の、「~のうちの少なくとも1つ(at least one of)」という表現は、列挙されたアイテムのうちの一又は複数の種々の組み合わせが使用されうること、及び、列挙された各アイテムのうちの1つだけが必要とされることもあることを、意味している。換言すると、「~のうちの少なくとも1つ」とは、列挙された中から、アイテムの任意の組み合わせ及び任意の数のアイテムが使用されてよく、列挙されたアイテムの全てが必要とされるわけではないことを、意味している。アイテムとは、特定の対象物、物品、又はカテゴリでありうる。
【0022】
限定する訳ではないが例としては、「アイテムA、アイテムB、又はアイテムCのうちの少なくとも1つ」とは、「アイテムA」、「アイテムAとアイテムB」、又は「アイテムB」を含みうる。この例は、「アイテムA、アイテムB、及びアイテムC」、又は「アイテムB及びアイテムC」も含みうる。当然ながら、これらのアイテムの任意の組み合わせが存在しうる。一部の実施例では、「~のうちの少なくとも1つ」は、限定するわけではないが例としては、「2つのアイテムA」、「1つのアイテムB」、及び「10個のアイテムC」、「4つのアイテムBと7つのアイテムC」、又はその他の好適な組み合わせでありうる。
【0023】
この実施例では、量子コンピュータ112及び量子コンピュータ114は、量子アルゴリズムなどのプロセスを実行しうるクライアントデバイス110である。図示している量子コンピュータ112と量子コンピュータ114とは、異なるタイプの量子コンピュータである。換言すると、これらの量子コンピュータは、異なるタイプのアーキテクチャで構築されている。この実施例では、量子コンピュータ112は超伝導量子コンピュータである一方、量子コンピュータ114はイオントラップ量子コンピュータである。
【0024】
これら2つの量子コンピュータで量子プログラムが実行されてよく、これらのコンピュータのパフォーマンスが比較されうる。かかる比較は、量子コンピュータ112と量子コンピュータ114とを実装するのに使用される別々のハードウェアアーキテクチャのパフォーマンスを比較するための、ベンチマーキングプロセスの一部でありうる。このベンチマーキングプロセスでは、量子コンピュータ112と量子コンピュータ114のパフォーマンスを比較するための情報を取得するために、プログラムが、これらの量子コンピュータの両方で同一のプロセスを実行することが望ましい。
【0025】
更に、他の実施例では、これら2つの量子コンピュータは、処理タスクに利用可能でありうる。同一のタイプのタスクを処理するのに両方の量子コンピュータが用いられる場合、これらの量子コンピュータは、1つの共通のコンピューティングシステム又はグリッドコンピューティングシステムの一部でありうる。これら2つの量子コンピュータが問題解決のための分散処理に使用される場合、プログラムは、量子コンピュータ112と量子コンピュータ114に分散されてよく、量子コンピュータ112と量子コンピュータ114は、別々のプログラミング言語を使用して処理を実行する。かかるプログラミング言語は、量子コンピュータのコンピュータタイプに基づくものでありうる。
【0026】
この実施例では、サーバコンピュータ104内にプロセスマネージャ130が配置されている。図示しているプロセスマネージャ130は、プロセスを管理するよう動作しうる。例えば、プロセスマネージャ130は、量子コンピュータ112での量子プロセス132の実行、及び量子コンピュータ114で実行される量子プロセス134を管理しうる。
【0027】
この実施例では、量子プロセス132及び量子プロセス134は、一又は複数の量子処理言語の命令で構成される。図示している量子プロセス132のための命令136は、量子プロセス134のための命令138とは異なる量子プログラミング言語でありうる。
【0028】
量子プロセス132及び量子プロセス134の管理において、プロセスマネージャ130は、同一のプロセスをこれらの量子コンピュータに分散させうる。この同一のプロセスは、これらの量子コンピュータが同一のプロセスを実行するパフォーマンスを特定するという目的のために、これらの量子コンピュータで実行されうる。別の例としては、共有処理(例えばグリッドコンピューティング)に関するタスクを実行するために、同一のプロセスが使用されうる。
【0029】
しかし、同一のプロセスのための命令136と命令138とは、異なっていることがある。この別々の命令は、量子コンピュータ112と量子コンピュータ114における、別々のプログラミング言語又は別々のハードウェアコンポーネントの少なくとも一方により生じうる。
【0030】
この実施例では、プロセスマネージャ130は、プロセスのための処理を実行するよう構成されたハードウェアコンポーネントのデジタルモデル表現140を利用する。この実施例では、プロセスマネージャ130は、プロセスに関する複数のデジタルモデル表現140のうちの1つのデジタルモデル表現を命令136及び命令138に転換するために、トランスレータシステム142を使用しうる。この様態では、単一のプロセスが、別々のハードウェアシステム(例えば、別々のコンピュータタイプでありうる量子コンピュータ112と量子コンピュータ114)で実行される、複数の命令に変えられうる。
【0031】
一実施例では、プロセスは命令を使用して実現されうる。プロセスが複数のシステム(例えば量子コンピュータ112と量子コンピュータ114)に分配可能な状態である場合、命令は、プロセスマネージャ130によって、トランスレータシステム142内の量子プログラムトランスレータを使用してデジタルモデル表現に変えられうる。デジタルモデル表現は次いで、命令136及び命令138を生成するために使用されてよく、これらの命令はそれぞれ、実行のために、量子コンピュータ112と量子コンピュータ114に分配される。この様態では、別々の言語で又は別々の実装のために複数のプログラムを導出するための、複製作成の労力の必要性が低減されうる。更に、プロセスマネージャ130を有することで、常にプロセスマネージャ130を使用して命令を生成する場合に、統一資源の場合よりも、別々の言語で別々のハードウェアシステムに分配されたプロセスの全体的な品質が向上しうる。
【0032】
ここで図2を参照するに、例示的な一実施形態による、量子コンピューティング環境のブロック図が図示されている。この実施例では、量子コンピューティング環境200は、ハードウェア(例えば、図1のネットワークデータ処理システム100内に図示しているハードウェア)で実装されうるコンポーネントを含む。
【0033】
この実施例では、量子コンピューティング環境200における量子コンピュータ202は各々、プロセス204を実行しうる。量子コンピュータ202は、いくつかの異なる形態をとりうる。例えば、量子コンピュータ202は、互いと同じであるか又は互いとは異なる、コンピュータタイプ203を有しうる。換言すると、複数の量子コンピュータ202のうちの1つの量子コンピュータは、コンピュータタイプ203が異なる、複数の量子コンピュータ202のうちの他の量子コンピュータとは異なる、物理ハードウェア、アーキテクチャ、又は、処理がどのように実行されうるかについての制約条件を有しうるその他の特徴、のうちの少なくとも1つを有しうるこの実施例では、コンピュータタイプ203は、超伝導量子コンピュータ、イオントラップ量子コンピュータ、トポロジー量子コンピュータ、量子ドット量子コンピュータ、光格子量子コンピュータ、空洞量子電子力学量子コンピュータ、核磁気共鳴量子コンピュータ、窒素空孔ダイヤモンド量子コンピュータ、一又は複数のタイプの量子コンピュータを組み合わせたハイブリッド量子コンピュータ、又は他の何らかのタイプの量子コンピュータ、のうちの少なくとも1つから選択されうる。
【0034】
図示しているプロセス204は、量子アルゴリズム、サブルーチン、関数(function)、又は他の何らかのタイプのプロセス、のうちの少なくとも1つに関連して実行される処理でありうる。例えば、プロセス204は、単一の量子アルゴリズム若しくは複数の量子アルゴリズム、又はサブルーチンでありうる。
【0035】
この実施例では、量子コンピュータ202による量子処理は、量子処理システム208によって管理されうる。この実施例では、量子処理システム208は、コンピュータシステム210、量子言語トランスレータのセット212、及びプロセスマネージャ214を含む。
【0036】
本書において、アイテムに関連して使用される場合の「~のセット(a set of)」という語は、一又は複数のアイテムを意味する。例えば、「異なるタイプの量子言語トランスレータのセット212」とは、一又は複数の異なるタイプの量子言語トランスレータ212である。
【0037】
図示している量子言語トランスレータのセット212はコンピュータシステム210内にある。量子言語トランスレータのセット212は、量子プログラミング言語222の、処理220のための命令218を、処理220を実行するよう構成された量子コンピュータコンポーネント228のデジタルモデル表現226に変換するよう設定される。量子言語トランスレータのセット212は、デジタルモデル表現226の量子コンピュータコンポーネント228を、量子コンピュータ202で実行される、量子プログラミング言語222の、処理220のための命令218に変換するようにも設定される。量子コンピュータコンポーネント228は、この実施例では、プロセス204のための処理220を実行するよう動作する、量子コンピュータ202内のコンポーネントである。
【0038】
この実施例では、処理220は、プロセス204のために実行される処理である。
【0039】
この実施例では、量子言語トランスレータのセット212における量子言語トランスレータの各々は、複数の量子プログラミング言語222のうちのある特定の量子プログラミング言語のためのものである。図示しているデジタルモデル表現226内の量子コンピュータコンポーネント228は、量子コンピュータコンポーネント228の(それらの接続を含む)構成によりプロセス204のための処理220が実行されるように、互いに接続されている。
【0040】
この実施例では、デジタルモデル表現226は、プロセスマネージャ214によって使用されるデータ構造物である。他の実施例では、デジタルモデル表現226は、ディスプレイシステム234内のグラフィカルユーザインターフェース232で、作業人員230に対して表示されうる。
【0041】
ディスプレイシステム234は、物理ハードウェアシステムであり、グラフィカルユーザインターフェース232を表示しうる一又は複数のディスプレイデバイスを含む。このディスプレイデバイスは、発光ダイオード(LED)ディスプレイ、液晶ディスプレイ(LCD)、有機発光ダイオード(OLED)ディスプレイ、コンピュータモニタ、プロジェクタ、フラットパネルディスプレイ、ヘッドアップディスプレイ(HUD)、又は、情報を視覚的に提示するために情報を出力しうるその他の何らかの好適なデバイス、のうちの少なくとも1つを含みうる。
【0042】
作業人員230は、コンピュータシステム210の入力システム238によって生成されたユーザ入力236を通じて、グラフィカルユーザインターフェース232と相互作用しうる人員である。入力システム238は、物理ハードウェアシステムであり、かつ、マウス、キーボード、トラックボール、タッチスクリーン、スタイラス、モーションセンシング入力デバイス、ジェスチャ検出デバイス、サイバーグローブ、又はその他の何らかの好適なタイプの入力デバイス、のうちの少なくとも1つから選択されうる。ディスプレイシステム234と入力システム238とは、人間-機械インターフェース(HMI)240を形成する。
【0043】
図示しているプロセスマネージャ214は、ソフトウェア、ハードウェア、ファームウェア、又はこれらの組み合わせ、で実装されうる。ソフトウェアが使用される場合、プロセスマネージャ214によって実行される処理は、ハードウェア(プロセッサユニットなど)上で実行されるよう設定されたプログラムコードで実装されうる。ファームウェアが使用される場合、プロセスマネージャ214によって実行される処理は、プログラムコード及びデータで実装されてよく、永続的メモリに記憶されてプロセッサユニット上で実行されうる。ハードウェアが用いられる場合、このハードウェアは、プロセスマネージャ214において処理を実行するよう動作する、回路を含みうる。
【0044】
実施例では、ハードウェアは、回路システム、集積回路、特定用途向け集積回路(ASIC)、プログラマブルロジックデバイス、又は、いくつかの処理を実行するよう設定されたその他の何らかの好適なタイプのハードウェア、のうちの少なくとも1つから選択された、形態をとりうる。プログラマブルロジックデバイスを用いる場合、このデバイスは、いくつかの処理を実行するよう設定されうる。デバイスは後で再構成されても、いくつかの処理を実行するよう恒久的に構成されてもよい。プログラマブルロジックデバイスは、例えばプログラマブルロジックアレイ、プログラマブルアレイロジック、フィールドプログラマブルロジックアレイ、フィールドプログラマブルゲートアレイ、及びその他の好適なハードウェアデバイスを含む。加えて、プロセスは、無機コンポーネントと一体化された有機コンポーネントにおいて実装されてよく、かつ、全体が人間以外の有機コンポーネントで構成されてもよい。例えば、プロセスは、有機半導体における回路として実装されることもある。
【0045】
コンピュータシステム210は、物理ハードウェアシステムであり、一又は複数のデータ処理システムを含む。コンピュータシステム210内に1を上回る数のデータ処理システムが存在している場合、かかるデータ処理システムは、通信媒体を使用して互いに通信する。この通信媒体はネットワークでありうる。データ処理システムは、コンピュータ、サーバコンピュータ、タブレットコンピュータ、又は他の何らかの好適なデータ処理システム、のうちの少なくとも1つから選択されうる。
【0046】
稼働中、プロセスマネージャ214は、複数の量子プログラミング言語222のうちの1つの量子プログラミング言語242の命令218を、量子言語トランスレータのセット212のうちの1つの量子言語トランスレータ244に送信しうる。量子言語トランスレータ244は、量子プログラミング言語242を処理するよう設定されており、量子コンピュータコンポーネント228のデジタルモデル表現226を出力する。
【0047】
加えて、プロセスマネージャ214は、量子コンピュータコンポーネント228のデジタルモデル表現226を、量子言語トランスレータ244に送信してよく、これにより、量子言語トランスレータ244は、量子プログラミング言語242の、処理220のための命令218を出力する。
【0048】
この実施例では、量子処理システム208は、ユニバーサルゲートセット246も含みうる。ユニバーサルゲートセット246は、アダマールゲート、位相(S)ゲート、制御-X(CNOT)ゲート、及びトフォリゲート;アダマールゲート、位相(S)ゲート、π/8(T)ゲート、及び制御-X(CNOT)ゲート;バレンコ(Barenco)ゲート(B);ドイツゲート(D_θ)ゲート;回転ゲート R_x(θ),R_y(θ);回転ゲート R_x(θ),R_y(θ)、制御-Z(CZ)ゲート、又は他の何らかの好適なタイプのゲートセット、のうちの少なくとも1つから選択されうる。一部の実施例では、2つ以上のユニバーサルゲートセット246が組み合わされうる。かかるユニバーサルゲートセット246の組み合わせは、望ましい処理を実行するために使用されうるユニバーサルゲートセット246の組み合わせを取得するための数学演算(AND演算(intersection)及び合併集合演算(union)など)を使用して、実施されうる。
【0049】
複数のユニバーサルゲートセット246のうちの1つのユニバーサルゲートセット248は、種々のタイプのゲート250を含む。ユニバーサルゲートセット248が複数のゲート250を有することで、量子コンピュータ202のうちのある特定の量子コンピュータにとって実行可能な処理は何でも、複数のユニバーサルゲートセット246のうちの1つのユニバーサルゲートセット248のいくつかのゲート250を使用して、実行されうる。この実施例では、ゲート250の配列(order)は、プロセス204のための処理を実行するよう選択されうる。いくつかのゲート250は、ゲート250の順列シーケンスであってよく、この順列シーケンスは、プロセス204のための処理を実行するよう選択された、ゲート250の順次配列である。
【0050】
ユニバーサルゲートセット246が利用可能であることで、量子言語トランスレータ244は、デジタルモデル表現226、及びデジタルモデル表現226を使用して量子コンピュータ202のうちのある特定の量子コンピュータ向けに選択されたユニバーサルゲートセット248を使用して、量子プログラミング言語242の、処理220のための命令218を出力しうる。ユニバーサルゲートセット248の選択は、量子コンピュータ202のうちのある特定の量子コンピュータについての、複数のコンピュータタイプ203のうちのコンピュータタイプ252に基づくものでありうる。図示しているプロセスマネージャ214は、ハードウェアデータベース249を使用して、使用されるよう選択される複数のユニバーサルゲートセット246のうちの1つのユニバーサルゲートセット248を特定しうる。
【0051】
この実施例では、ハードウェアデータベース249は、量子コンピュータ202のコンピュータタイプ203に対するユニバーサルゲートセット246を識別する、情報を包含しうる。例えば、ハードウェアデータベース249は、ある特定のコンピュータタイプに適合する全てのユニバーサルゲートセットを識別しうる。別の例としては、ハードウェアデータベース249は、ある特定のコンピュータタイプに最適なユニバーサルゲートセットだけでなく、ある特定のコンピュータタイプによって完全にサポートされるわけではないユニバーサルゲートセットも識別しうる。ある特定のコンピュータタイプに最適なユニバーサルゲートセットは、スピード、精度、リソース使用、回路深度、ゲートパフォーマンス、ゲートエラー、又はその他のパフォーマンスパラメータ、のうちの少なくとも1つから選択される、パフォーマンスパラメータのセットに基づくものでありうる。その結果として、選択された一又は複数のパフォーマンスパラメータに応じて、特定のコンピュータタイプを有する量子コンピュータに使用される、異なるユニバーサルゲートセットが選択されうる。
【0052】
その結果として、ある特定の量子コンピュータに望ましいレベルのパフォーマンスを提供するよう、プロセスマネージャ214によって、ハードウェアデータベース249を使用してユニバーサルゲートセット248が選択されうる。パフォーマンスは、精度、スピード、ハードウェアサポート、回路深度、ノイズ率若しくはエラー率、ゲートパフォーマンス、又はその他のパフォーマンス因子、のうちの少なくとも1つから選択されうる。
【0053】
この実施例では、プロセスマネージャ214は、ユニバーサルゲートセット246の選択を、デジタルモデル表現226と共に、量子言語トランスレータ244に送信しうる。
【0054】
この実施例では、量子コンピュータコンポーネント228を包含するデジタルモデル表現226は、命令218を量子言語トランスレータ244に送信する以外の機構を使用して創出されうる。例えば、量子コンピュータコンポーネント228のデジタルモデル表現226は、人間-機械インターフェース240と相互作用する作業人員230によって生成されるユーザ入力236から創出されうる。デジタルモデル表現226の量子コンピュータコンポーネント228は、人間-機械インターフェース240を操作している作業人員230によって生成されたユーザ入力236に応答して、ディスプレイシステム234内のグラフィカルユーザインターフェース232に表示されうる。この様態では、視覚化されたデジタルモデル表現226が、グラフィカルユーザインターフェース232に表示されうる。
【0055】
更に、プロセスマネージャ214は、デジタルモデル表現226からのシミュレーション254も実行しうる。この様態では、作業人員230は、作業人員230がグラフィカルユーザインターフェース232でデジタルモデル表現226の量子コンピュータコンポーネント228の表示と相互作用する、視覚プロセスを通じて、プロセス204を実現しうる。
【0056】
ゆえに、この実施例では、プロセスマネージャ214は、従来技術を使用する場合よりも効率的かつ正確な量子コンピューティングを可能にするために、様々なモードで動作しうる。例えば、プロセスマネージャ214は、プロセス204を具現化するデジタルモデル表現226を使用して、シミュレーション254を実行しうる。この例では、シミュレーション254が実行される際に、更にシミュレーション254が完了した時にも、シミュレーション254の結果が、人間-機械インターフェース240を通じて表示されうる。デジタルシモデル表現226のミュレーション254により、作業人員230が、プロセス204で実装される量子アルゴリズムの挙動を検査することが可能になりうる。この様態では、作業人員230が、量子アルゴリズムが所望通りに動作するかどうかを判定しうる。シミュレーション254により、作業人員230が、デジタルモデル表現226を変更し、その変更を伴うシミュレーション254を再実行することが可能になる。その結果として、作業人員230は、作業人員230がデジタルモデル表現226のシミュレーション254の結果に満足するまで、デジタルモデル表現226を修正し、改良することが可能になる。
【0057】
デジタルモデル表現226が最終バージョンになると、このモデルが、量子言語トランスレータ212を使用して量子コンピュータのセット202向けの命令218を生成するために、使用されうる。量子言語トランスレータ212を使用することで、命令218の生成は、異なる量子コンピュータごとに別個にプログラムコードが生成される従来技術よりも、着実にかつ少ないエラーを伴って実行されうる。
【0058】
量子処理システム208では、最適な量子アルゴリズムの識別が、シミュレートされ、探求されうる。量子処理システム208におけるこの特徴は、ある物理システム(例えば、複数の量子コンピュータ202のうちの、ある特定の用途に望ましいパフォーマンスを提供する特定の量子コンピュータ)を識別するための、意思決定プロセスに役立ちうる。量子コンピュータ202の種々のコンピュータタイプに適する複数の命令218を単一のソース(例えばデジタルモデル表現226)から生成することによって、種々のコンピュータタイプの量子コンピュータ202向けの命令218を生成するのに必要な時間が削減されうる。更に、種々のコンピュータタイプの量子コンピュータ202向けに生成される命令218の品質が、従来技術と比較して向上しうる。
【0059】
次に図3を参照するに、例示的な一実施形態による量子言語トランスレータのブロック図の一例が図示されている。実施例では、1を上回る数の図において同一の参照番号が使用されていることがある。このように別々の図で繰り返し使用される参照番号は、かかる別々の図における同じ要素を表わしている。
【0060】
図示している量子言語トランスレータ244は、複数の量子プログラミング言語222のうちの1つの量子プログラミング言語242について、図2の命令218と図2のデジタルモデル表現226との間での転換を提供するよう設定されている。複数の量子言語トランスレータ212における量子言語トランスレータの各々は、複数の量子プログラミング言語222における異なる量子プログラミング言語のためのものでありうる。一部の例では、同一の量子言語のために、(特定の量子言語トランスレータの使用に応じて)1を上回る数の量子言語トランスレータが存在することもある。
【0061】
この実施例では、量子言語トランスレータ244は、いくつかの異なるコンポーネントを含みうる。図示している量子言語トランスレータ244は、トランスレータ入力部300とトランスレータ出力部302とを備えている。
【0062】
図示しているトランスレータ入力部300は、量子言語トランスレータ244向けの量子プログラミング言語242の命令218を受信するよう設定される。命令218を受信したことに応答して、トランスレータ入力部300は、量子コンピュータコンポーネント228を含むデジタルモデル表現226を出力する。量子コンピュータコンポーネント228は、ゲート、メモリ、オペレーション、サブルーチン、ステート情報、回路、メモリ、又はその他のハードウェア若しくはソフトウェアのコンポーネントでありうる。
【0063】
この実施例では、トランスレータ出力部302は、量子言語トランスレータ244に送信された、量子コンピュータコンポーネント228のデジタルモデル表現226を受信するよう設定される。トランスレータ出力部302は、デジタルモデル表現226を使用して、量子プログラミング言語242の、処理220のための命令218を出力する。更に、出力される命令218は、ユニバーサルゲートセット248を使用して実行されることもある。ユニバーサルゲートセット248は、プロセスマネージャ214によって行われた選択から受信されうる。他の実施例では、ユニバーサルゲートセット248は、量子言語トランスレータ244によって使用されるデフォルトゲートセットでありうる。
【0064】
次に図4を参照するに、例示的な一実施形態によるデジタルモデル表現の量子コンピュータコンポーネントのブロック図の一例が図示されている。この図は、図2のデジタルモデル表現226の一実行形態の一例を示している。
【0065】
図示しているデジタルモデル表現226は、モデル及びその他の情報によって定義される、いくつかの異なる量子コンピュータコンポーネントを含む。図示している、デジタルモデル表現226内の図2の量子コンピュータコンポーネント228は、モデル401内のゲートモデル400によって定義されうる。量子コンピュータコンポーネント228は、量子ビット(qubit)モデル402又はメモリモデル404のうちの少なくとも一方から選択されるモデル401によって定義されることもある。デジタルモデル表現226は、メモリステート406、量子プログラム408、又はその他の好適な情報、のうちの少なくとも1つから選択された情報も含みうる。
【0066】
この実施例では、ゲートモデル400が、ゲート412の形態の量子コンピュータコンポーネント228を定義する。この実施例では、ゲート412は、量子プロセスにおいて実行されうる処理を表わしている。ゲート412は、実施例では「ゲート(gates)」と称される量子ロジックゲートである。ゲートモデル400において定義されている各ゲートは、一又は複数の量子ビットに対して処理を実行しうる。
【0067】
ゲート412は、量子コンピュータコンポーネント228を表現するよう構成されうる。この構成はゲート412の互いに対する接続を含み、これにより、ゲート412の構成は、図2のプロセス204のための処理220が実行可能となる。ゲートモデル400によって定義されるゲート412の例は、アダマールゲート、パウリゲート、回転ゲート、制御‐Uゲート、位相ゲート、又はその他の好適なタイプのゲート、のうちの少なくとも1つを含む。
【0068】
加えて、ゲートモデル400は、スーパーゲート414を定義する、スーパーゲートモデル410のセットも含みうる。複数のスーパーゲート414内で定義された1つのスーパーゲートが、より複雑な処理を表現するために使用されうる。スーパーゲート414は、スーパーゲートモデル410によって定義される、ゲート構成である。例えば、スーパーゲートは、サブルーチン、関数、又は他の何らかの好適な構造体でありうる。スーパーゲートのセット414のうちの1つのスーパーゲートは、2つ以上のゲート412を含む。実施例では、この2つ以上のゲート412は順列シーケンスとなっている。換言すると、スーパーゲートはゲート間の接続を有する2つ以上のゲートの表現であり、これにより、スーパーゲートにおけるゲートのこの構成が、ルーチン、サブルーチン、関数に関する処理、又は、プロセス204におけるその他の処理を実行する。
【0069】
この実施例では、スーパーゲートモデル410は、面倒でエラーを引き起こしやすい操作を伴いうる命令の符号化を、除去するために用いられうる。更に、スーパーゲートモデル410の使用により、スーパーゲートとして表現されるプログラム命令又は回路構成の少なくとも一方の、サブルーチンユニットの再使用が可能になる。
【0070】
例えば、図2のプロセス204における量子アルゴリズムは、問題解決のために、より大きなアルゴリズム中の単一のステップとして量子位相推定(QPE)アルゴリズムを使用しうる。しかし、作業人員が命令を符号化するため、又はデジタルモデル表現226内の個々のゲートの使用を手配するために、量子位相推定アルゴリズムが必要とされるたびに、かかるアルゴリズムを実装することは、それ自体、より困難かつ時間がかかることになりうる。
【0071】
この実施例では、スーパーゲートは、サブルーチン(量子位相推定など)のために存在しうる。量子位相推定のためにスーパーゲートを有することで、作業人員は、単一の量子ビットユニタリゲートの量子ビットのサブセットに適用される量子位相推定の使用を迅速に特定することが可能になり、かつ、このスーパーゲートにより、量子位相推定のための命令が自動的に生成されうる。スーパーゲートとして実装されうるサブルーチンに関する他のタイプのプロセスの例は、量子フーリエ変換(QFT)、逆量子フーリエ変換、及びその他の好適なタイプのサブルーチン若しくはプロセス、を含む。
【0072】
この実施例では、量子ビットモデル402は、量子コンピュータで使用される量子ビット416を定義する。量子ビットは、量子コンピュータにおける情報の基本ユニットであり、種々の形態をとりうる。
【0073】
この実施例では、量子ビットモデル402は、量子コンピュータ内で使用されうる、一又は複数のタイプの量子ビット416を定義しうる。例えば、量子ビットモデル402は、理想(idealized)量子ビット、イオントラップ量子ビット、中性原子量子ビット、超伝導量子ビット、電子スピン量子ビット、光子偏光量子ビット、ドットスピン量子ビット、又はその他の何らかの好適なタイプの量子ビット、のうちの少なくとも1つから選択される、量子ビット416の量子ビットタイプを含みうる。
【0074】
メモリモデル404は、量子コンピュータで使用されるメモリ418を定義する。例えば、メモリモデルは、メモリのタイプ、メモリサイズ、又は、メモリ418についてのその他の情報、のうちの少なくとも1つを定義しうる。メモリ418は、情報(量子ビット416など)を記憶するために使用される。メモリ418は、メモリモデル404によって定義される、いくつかの異なる形態をとりうる。例えば、メモリ418は、補助メモリ、一時的メモリ、ワーキングメモリ、多ノイズメモリ(noisy memory)、重ね合わせステート、量子もつれあいステート、又はその他の好適なタイプの量子メモリ若しくは量子メモリの組み合わせ、のうちの少なくとも1つから選択されうる。
【0075】
図示しているメモリステート406は、種々の量子コンピュータコンポーネント(例えば量子コンピュータ内のメモリ)の初期状態を示す情報である。例えば、メモリステート406は、メモリ418内の量子ビットの初期状態を示しうる。更に、量子プログラム408は、量子コンピュータで実行されるべき処理220の集合を表現する、コンポーネントのデジタルモデル表現226で構成された情報のセットである。
【0076】
ゆえに、命令218は、プロセス204のための量子コンピュータのセット202であって、その内部に命令218が望ましい形態で(例えば、ある特定の量子プログラミング言語で)存在している、量子コンピュータのセット202によって実行されうる。換言すると、量子コンピュータのセット202における各量子コンピュータは、量子コンピュータのセット202のアーキテクチャが異質であっても、同一のプロセスを実行しうる。換言すると、量子コンピュータのセット202は、別々のハードウェアアーキテクチャを有してよく、別々の量子プログラミング言語をサポートしうる。プロセスマネージャ214を使用することで、別々の言語で独立的に又は別個にプロセスが実現されうる従来技術よりも効率的な様態で、単一のプロセスが、実現され、多数の量子コンピュータ及び量子コンピュータ202に分散されうる。プロセスマネージャ214が量子言語トランスレータ212を使用することで、プロセス204は、複数の量子コンピュータ202のうちの、異なるコンピュータタイプを有する別々の量子コンピュータに分散されうる。
【0077】
次に図5を参照するに、例示的な一実施形態による、ターゲット量子プログラミング言語の命令の生成についての図の一例が図示されている。この実施例では、命令500は、量子アセンブリ言語(QASM)のコード行である。命令500は、アダマール処理502及び制御-NOT処理504を含む。この実施例では、プロセスマネージャ214は、デジタルモデル表現506を取得するために、QASMのための量子言語トランスレータ244のトランスレータ入力部300を適用しうる。この実施例では、デジタルモデル表現506は、2つの量子コンピュータコンポーネント(アダマールゲート508及び制御-NOTゲート510)を含む。
【0078】
この例では、デジタルモデル表現506を、QASMのための量子言語トランスレータ244のトランスレータ出力部302に送信することによって、命令512が生成されうる。この例では、デジタルモデル表現506を取得するために命令500で使用されるユニバーサルゲートセットとは異なるユニバーサルゲートセットが選択される。この例では、命令500は、回転の形態のゲートのみを含むユニバーサルゲートセットを使用して、量子言語トランスレータによって処理される。その結果として、命令512は、コード行の各々が回転である、コードとなる。この実施例では、イオントラップコンピュータ向けにも共通のユニバーサルゲートセットが選択される。この選択は、量子コンピュータ(この量子コンピュータでは、命令512が、イオントラップハードウェアに{Rx,Ry}のユニバーサルゲートセットが使用されることを示すデータベース内の対応するエントリを用いて実行されることになっている)において、イオントラップハードウェアが使用されるという仕様を踏まえて、ハードウェアデータベース249を使用して行われうる。
【0079】
別の実施例では、回路配置コードが、図5のデジタルモデル表現506を使用して、回路配置に関して量子言語トランスレータによって生成されうる、別のタイプの出力の一例となる。この実施例では、命令は、処理を実行するための回路を定義する回路配置を定義するために使用される、回路配置コードに適した形態となる。回路配置コードは、回路シミュレーションプログラムためのものでありうるか、又は、処理を実行するために量子コンピュータで使用される実際の回路を選択するために使用されうる。命令の回路配置コード形態は、必ずしも、デジタルモデル表現に対して生成される命令におけるプログラムコードとの一対一の対応を有するわけではない。換言すると、命令は、プログラミング言語又は回路を定義するコードの少なくとも一方の、コードの形態をとりうる。
【0080】
図5のデータ構造の図は、命令がデジタルモデル表現に変換され、また命令に戻されうる一様態の、例として提示されている。この図は、他の実施例が実装される様態を限定することを意図するものではない。例えば、図5の命令500は、実施例では、命令とデジタルモデル表現の量子コンピュータコンポーネントとの間でデータが変換される様態についての説明を分かりにくくすることを避けるためだけに、2つのコード行を持つものとして表示されている他の実施例では、命令500内には数百又は数千のコード行が存在しうる。同様に、デジタルモデル表現506は、この実施例に表示されているよりもはるかに複雑なものでありうる。
【0081】
一実施例では、複数の量子コンピュータにおけるプロセスのために処理を実行するための量子処理に伴う技術的問題を克服する、一又は複数の技術的解決策が存在する。その結果として、一又は複数の技術的解決策は、従来技術よりも効率的かつ正確に、別々のハードウェアアーキテクチャを有する複数の量子コンピュータにプロセス(量子アルゴリズムなど)を分配することを可能にするという、技術的効果を提示しうる。
【0082】
コンピュータシステム210は、ソフトウェア、ハードウェア、ファームウェア、又はこれらの組み合わせを使用して、種々の実施例で説明しているステップ、処理、又はアクションのうちの少なくとも1つを実行するよう構成されうる。その結果として、コンピュータシステム210は、コンピュータシステム210におけるプロセスマネージャ214が、コンピュータシステム210内の量子コンピュータ202のパフォーマンスの向上を可能にする、特定用途コンピュータシステムとして動作する。詳細には、現在利用可能な、プロセスマネージャ214を有さない汎用コンピュータシステムと比較すると、プロセスマネージャ214が、コンピュータシステム210を特定用途コンピュータシステムに変換する。
【0083】
この実施例では、コンピュータシステム210におけるプロセスマネージャ214の使用により、プロセスが量子コンピューティングの実際応用に統合され、これにより、コンピュータシステム210のパフォーマンスが向上する。換言すると、コンピュータシステム210におけるプロセスマネージャ214は、コンピュータシステム210におけるプロセスマネージャ214にプロセスの実際応用が統合されるためのものであり、このことが、従来技術よりも着実かつ正確な様態で量子コンピュータ202向けの命令218を生成することを可能にする。この実施例では、コンピュータシステム210におけるプロセスマネージャ214は、異なる量子プログラミング言語間の変換を行うために、デジタルモデル表現及び量子言語トランスレータを使用する。こうすることで、1つのコンピュータが、従来技術よりも着実かつ再現可能な様態で、種々のハードウェアを有することが可能になる。コンピュータシステム210におけるプロセスマネージャ214は、この様態で、量子コンピュータのためのプロセスが、実現され、かつ、種々のコンピュータタイプを有する量子コンピュータのための命令に自動的に変換されうる、量子コンピューティングの実際応用を提供する。かかる命令は、プログラムコード又はプロセスのための回路配置を識別する回路コードの少なくとも一方を含みうる。
【0084】
実施例における種々の特徴は、従来技術よりも向上した精度及び整合性を伴って、種々のコンピュータタイプを有する量子コンピュータでプロセスを実行する能力を、提供する。この実施例では、プロセス(量子アルゴリズムに関するものなど)は、デジタルモデル表現にされうる。このデジタルモデル表現は、命令(例えばプログラムコード、又は量子コンピュータの種々のコンピュータタイプ向けの回路配置のコード)を自動的に生成するために使用されうる。換言すると、別々のコンピュータタイプは、別々の配置、及び、処理がどのように実行されうるかに関する別々の制約を有しうる。
【0085】
更に、一実施例では、プロセスにおける、ルーチン、サブルーチン、若しくは関数を形成する処理を迅速に実装すること、又は容易に実装することの少なくとも一方を可能にするために、スーパーゲートが使用されうる。スーパーゲートを使用することで、面倒でエラーを引き起こしやすい操作が除去されうるだけでなく、命令の再使用が可能になる。この実施例では、デジタルモデル表現として表現されるプロセスは、量子コンピュータ内の特定のタイプのハードウェアに対する命令の生成を可能にしうる。ある特定のタイプの量子コンピュータのためにユニバーサルゲートセットが選択されるプロセスの1つのデジタルモデル表現に対して、1つのユニバーサルゲートセットが特定されうる。この様態では、実施例において、デジタルモデル表現の変換は、量子言語トランスレータを使用して、特定のタイプの量子コンピュータのためにカスタマイズされうる。更に、この実施例では、量子言語トランスレータを使用することで、種々のコンピュータタイプを有する量子コンピュータ向けの命令を創出するのに必要とされるプログラム言語の変換の回数が削減されうる。
【0086】
図2の量子コンピューティング環境200の図は、例示的な一実施形態が実装されうる様態への、物理的な又はアーキテクチャ上の限定を示唆することを意図するものではない。図示しているコンポーネントに加えて、又はそれらに代えて、他のコンポーネントも使用されうる。一部のコンポーネントは、必要ではないこともある。また、一部の機能的コンポーネントを図示するためにブロックが提示されている。例示的な実施形態で実装される場合、これらのブロックのうちの一又は複数は、結合されても、異なるブロックになるよう分割されても、又は結合されて分割されてもよい。例えば、量子コンピュータ202は、コンピュータシステム210の外部の、別個のコンポーネントであることもある。
【0087】
次に図6を参照するに、例示的な一実施形態による、量子処理のためのプロセスのフロー図の一例が図示されている。図6のプロセスは、ハードウェア、ソフトウェア、又はその両方で実装されうる。プロセスは、ソフトウェアで実装される場合、一又は複数のコンピュータシステムにおける一又は複数のハードウェアデバイス内に配置された一又は複数のプロセッサユニットによって実行される、プログラムコードの形態をとりうる。例えば、プロセスは、図2のコンピュータシステム210におけるプロセスマネージャ214で実装されうる。
【0088】
プロセスは、量子コンピュータ向けのプロセスのための、ターゲット量子プログラミング言語を識別すること(処理600)によって始まる。プロセスは、量子コンピュータのコンピュータタイプに基づいて、複数のユニバーサルゲートセットから1つのユニバーサルゲートセットを選択する(処理602)。処理602において選択されるユニバーサルゲートセット中のいくつかのゲートを使用して、ある特定の量子コンピュータにとって実行可能な処理は何でも実行されうる。
【0089】
プロセスは、ソース量子プログラミング言語の、プロセスのための命令を、量子言語トランスレータのセットのうちの1つのソース量子言語トランスレータに送信する(処理604)。処理604におけるソース量子言語トランスレータは、命令を使用してプロセスを実行するよう構成されている量子コンピュータコンポーネントのデジタルモデル表現を出力する。
【0090】
プロセスは、量子コンピュータコンポーネントのデジタルモデル表現と、選択されたユニバーサルゲートセットとを、ターゲット量子言語トランスレータに送信し、これにより、この量子言語トランスレータは、量子コンピュータコンポーネントのデジタルモデル表現と、量子コンピュータのコンピュータタイプに応じて選択されたユニバーサルゲートセットとを使用して、ターゲット量子プログラミング言語の、処理のための命令を出力する(処理606)。プロセスはその後終了する。
【0091】
次に図7を参照するに、例示的な一実施形態による、量子処理のためのプロセスのフロー図の別の例が図示されている。図7のプロセスは、ハードウェア、ソフトウェア、又はその両方で実装されうる。プロセスは、ソフトウェアで実装される場合、一又は複数のコンピュータシステムにおける一又は複数のハードウェアデバイス内に配置された一又は複数のプロセッサユニットによって実行される、プログラムコードの形態をとりうる。例えば、プロセスは、図2のコンピュータシステム210におけるプロセスマネージャ214で実装されうる。
【0092】
プロセスは、量子コンピュータのセットで実行されるプロセスを識別すること(処理700)によって始まる。プロセスは、プロセスのデジタルモデル表現を生成する(処理702)。この実施例では、処理702で生成されるデジタルモデル表現は、いくつかの異なるやり方で生成されうる。
【0093】
例えば、プロセスは、量子言語トランスレータを使用してデジタルモデル表現に変換される、量子言語の命令の形態でありうる。別の実施例では、デジタルモデル表現は、人間-機械インターフェースから受信されたユーザ入力によって創出されうる。
【0094】
更に別の実施例では、デジタルモデル表現は、量子プログラミング言語の命令の変換によって創出された初期デジタルモデル表現から生成されうる。初期デジタルモデル表現は、量子コンピュータのセットで実行されるべきプロセスのデジタルモデル表現を創出するよう、人間-機械インターフェースへのユーザ入力を通じて修正されうる。
【0095】
プロセスは、量子コンピュータのセットから1つの量子コンピュータを選択する(処理704)。プロセスは、1つの量子プログラミング言語を識別する(処理706)。プロセスは、特定の量子コンピュータ及び量子プログラミング言語のための、1つのユニバーサルゲートセットを識別する(処理708)。
【0096】
プロセスは、デジタルモデル表現、量子プログラミング言語、及び使用されるよう選択されたユニバーサルゲートセットを使用して、量子コンピュータ向けの命令を生成する(処理710)。プロセスは、別の量子コンピュータであって、そのために命令が生成されていない量子コンピュータが存在するかどうか判定する(処理712)。別の量子コンピュータが存在する場合、プロセスは上述した処理704に戻る。存在しなければ、プロセスは終了する。
【0097】
次に図8を参照するに、例示的な一実施形態による、量子処理のためのプロセスのフロー図の別の例が図示されている。図8のプロセスは、ハードウェア、ソフトウェア、又はその両方で実装されうる。プロセスは、ソフトウェアで実装される場合、一又は複数のコンピュータシステムにおける一又は複数のハードウェアデバイス内に配置された一又は複数のプロセッサユニットによって実行される、プログラムコードの形態をとりうる。例えば、プロセスは、図2のコンピュータシステム210におけるプロセスマネージャ214で実装されうる。
【0098】
図8の処理は、図8のフロー図のプロセスと共に実行されうる、追加処理の例である。
【0099】
この例では、プロセスは、量子コンピュータのセットに命令を送信すること(処理800)によって始まる。プロセスは次いで、量子コンピュータのセットで命令を実行する(処理802)。
【0100】
プロセスは、量子コンピュータのセットにおける命令の処理により生じる結果を受信する(処理804)。プロセスはその後終了する。
【0101】
図8のフロー図の処理は、いくつかの異なる目的のために実行されうる。例えば、これらの処理は、ベンチマーキングプロセスのために実行されてよく、このベンチマークプロセスでは、種々の量子コンピュータで同一のプロセスのための複数の命令が実行される。このプロセスがベンチマーキングプロセスの一部である場合、命令はベンチマーキングテストのためのものでありうる。プロセスのための種々のパラメータは、プロセッサ実行時間、使用されるメモリ、使用されるプロセッサリソース、既知の手法と比較した精度、既知の手法と比較した正解法の確率、エラー、ノイズ、回路実行時間、又はその他の好適なパラメータ、のうちの少なくとも1つを含みうる。
【0102】
別の実施例では、問題の一部分を解決するために、量子コンピュータのセットに分散されたプロセスが、この量子コンピュータのセットで実行される。この例では、量子コンピュータは、量子コンピュータで実行されるプロセスが問題に対する解決策として結果を提供する、グリッドコンピューティングシステムの一部でありうる。
【0103】
ここで図9を参照するに、例示的な一実施形態による、量子コンピュータをベンチマーキングするためのプロセスのフロー図の一例が図示されている。図9のプロセスは、ハードウェア、ソフトウェア、又はその両方で実装されうる。プロセスは、ソフトウェアで実装される場合、一又は複数のコンピュータシステムにおける一又は複数のハードウェアデバイス内に配置された一又は複数のプロセッサユニットによって実行される、プログラムコードの形態をとりうる。例えば、プロセスは、図2のコンピュータシステム210におけるプロセスマネージャ214で実装されうる。
【0104】
図9のプロセスは、量子コンピュータのセットによって実行される、ベンチマーク問題のセットに関する命令のセットを生成するために使用されうる。ベンチマーク問題のセットは、実行形態に応じて、一又は複数のベンチマーク問題でありうる。このプロセスは、1つの量子コンピュータ又は複数の量子コンピュータをベンチマークするために実行されうる。コンピュータが1つの場合、結果は、先のベンチマークテストの結果と比較されうる。
【0105】
命令は、量子コンピュータ同士の比較の結果を取得するために実行されうる。この例では、ベンチマーク問題を実装するプロセスのデジタルモデル表現から量子コンピュータで実行される命令を生成するために、量子言語トランスレータのトランスレータ出力部が使用される。
【0106】
プロセスは、ベンチマーク問題のセットを受信すること(処理900)によって始まる。この実施例では、処理900のベンチマーク問題は、ベンチマーク最適化問題、量子化学現象問題、材料問題、最小固有値問題、又は、量子コンピュータで実行されうるその他の問題、のうちの少なくとも1つでありうる。プロセスは、ベンチマーキングテストのための、量子コンピュータのセットの識別情報も受信する(処理902)処理902において、量子コンピュータのセットが1を上回る数の量子コンピュータである場合、これらの量子コンピュータは、ハードウェアが異なる同一のコンピュータタイプであっても、異なるコンピュータタイプであっても、又はこれらの何らかの組み合わせであってもよい。
【0107】
プロセスは、ベンチマーク問題のセットにおける全てのベンチマーク問題が処理されたかどうかを判定する(処理904)。全てのベンチマーク問題が処理されたわけではない場合、プロセスは、未処理のベンチマーク問題を選択する(処理906)。プロセスは、このベンチマーク問題のデジタルモデル表現を生成する(処理908)。
【0108】
プロセスは次いで、量子コンピュータのセットにおける全ての量子コンピュータが処理されたかどうかを判定する(処理910)。全ての量子コンピュータが処理されていた場合、プロセスは処理904に戻る。処理されていなければ、プロセスは、処理のために、未処理の量子コンピュータを選択する(処理912)。プロセスは、この量子コンピュータ向けの量子言語トランスレータ、及び望ましいユニバーサルゲートセットを識別する(処理914)。この量子言語トランスレータは、ある特定の言語又は量子コンピュータのある特定のコンピュータタイプのための量子言語トランスレータである。
【0109】
例えば、量子言語トランスレータの選択は、ユニバーサルゲートセットと同様に、図2のハードウェアデータベース249を使用して行われうる。ハードウェアデータベース249は、ある種のタイプのイオントラップコンピュータをユニバーサルゲートセットと量子プログラミング言語の両方にマッピングする、エントリを含みうる。図示しているこの例では、回路配置が生成されると、ユニバーサルゲートセットがルックアップされ、使用されうる。デジタルモデル表現がプログラミング言語のコードに変換されるものである場合、量子コンピュータタイプのコンピュータタイプに関連付けられた量子プログラミング言語がルックアップされ、使用される。更に、このコンピュータシステムによってサポートされるプログラミング言語のリストが、選択のために利用可能になりうる。
【0110】
別の例では、作業人員は、ある特定のプログラミング言語の対応する命令を見たいと思うかもしれない。この場合、ハードウェアデータベース249が使用される代わりに、作業人員が、命令を出力するのに使用されるプログラミング言語を選択するユーザ入力を生成しうる。
【0111】
プロセスは、ベンチマーク問題のデジタルモデル表現を使用して量子コンピュータ向けの命令を生成するために、量子言語トランスレータを使用する(処理916)。この実施例では、命令は、プログラミング言語のプログラムコード又は回路を定義する回路設計コードの少なくとも一方でありうる。処理916において、量子言語トランスレータにユニバーサルゲートセットが入力されうる。
【0112】
プロセスは次いで、量子コンピュータに命令を送信する(処理918)。処理918において、量子コンピュータは、実際の物理コンピュータであっても、シミュレーションであってもよい。プロセスは、量子コンピュータでの命令の実行により生じた結果を受信する(処理920)。プロセスはこの結果を保存する(処理922)。プロセスは次いで、処理910に戻る。
【0113】
処理904を再度参照するに、全てのベンチマーキング問題が処理されていた場合、プロセスは、量子コンピュータでベンチマーク問題のセットに関する命令を実行した結果を解析する(処理924)。プロセスはその後終了する。
【0114】
図示している種々の実施形態におけるフロー図及びブロック図は、例示的な一実施形態における、装置及び方法のいくつかの実現可能な実行形態のアーキテクチャ、機能、及び処理を示している。これに関して、フロー図又はブロック図内の各ブロックは、モジュール、セグメント、機能、又は処理若しくはステップの一部分、のうちの少なくとも1つを表わしうる。例えば、ブロックのうちの一又は複数が、プログラムコード、ハードウェア、又はプログラムコードとハードウェアとの組み合わせとして実装されうる。ハードウェアで実装された場合、このハードウェアは、例えば、フロー図又はブロック図の一又は複数の処理を実行するよう製造又は構成されている、集積回路の形態をとりうる。プログラムコードとハードウェアとの組み合わせとして実装された場合、この実行形態は、ファームウェアの形態をとりうる。フロー図又はブロック図の各ブロックは、種々の処理、又は、専用ハードウェアとこの専用ハードウェアによって実行されるプログラムコードとの種々の組み合わせを実施する、専用ハードウェアシステムを使用して実装されうる。
【0115】
例示的な実施形態の一部の代替的な実行形態では、ブロックに記載された一又は複数の機能は、図に記載している順序から外れて行われることがある。例えば、場合によっては、関連機能に応じて、連続して示されている2つのブロックが実質的に同時に実施されても、時には、これらのブロックが逆順に実施されてもよい。また、フロー図又はブロック図に示しているブロックに加えて、他のブロックが追加されることもある。
【0116】
ここで図10を参照するに、例示的な一実施形態による、データ処理システムのブロック図の一例が図示されている。データ処理システム1000は、図1のサーバコンピュータ104、サーバコンピュータ106、クライアントデバイス110を実装するために使用されうる。データ処理システム1000は、図2のコンピュータシステム210を実装するためにも使用されうる。この実施例では、データ処理システム1000は通信フレームワーク1002を含む。通信フレームワーク1002は、プロセッサユニット1004と、メモリ1006と、固定記憶装置1008と、通信ユニット1010と、入出力(I/O)ユニット1012と、ディスプレイ1014との間の通信を提供する。この例では、通信フレームワーク1002はバスシステムの形態をとっている。
【0117】
プロセッサユニット1004は、メモリ1006にローディングされうるソフトウェア向けの命令を実行する役割を果たす。プロセッサユニット1004は一又は複数のプロセッサを含む。例えば、プロセッサユニット1004は、マルチコアプロセッサ、中央処理装置(CPU)、グラフィックス処理装置(GPU)、物理処理装置(PPU)、デジタル信号プロセッサ(DSP)、ネットワークプロセッサ、又はその他の何らかの好適なタイプのプロセッサ、のうちの少なくとも1つから選択されうる。更に、プロセッサユニット1004は、単一のチップ上に主要プロセッサと二次プロセッサとが共に存在する、一又は複数の異種プロセッサシステムを使用して実装されることもある。別の実施例としては、プロセッサユニット1004は、単一のチップ上に同一のタイプの複数のプロセッサが包含される、対称型マルチプロセッサシステムでありうる。
【0118】
メモリ1006及び固定記憶装置1008は、記憶デバイス1016の例である。記憶デバイスは、限定するわけではないが例としては、データ、関数形式のプログラムコード、又はその他の好適な情報、のうちの少なくとも1つといった情報を、一時的に、永続的に、又は一時的かつ永続的に、記憶することが可能な、任意のハードウェアである。記憶デバイス1016は、これらの実施例では、コンピュータ-可読記憶デバイスとも称されうる。これらの例では、メモリ1006は、例えばランダムアクセスメモリ、又は、他の任意の好適な揮発性若しくは不揮発性の記憶デバイスでありうる。固定記憶装置1008は、特定の実行形態に応じて、様々な形態をとりうる。
【0119】
例えば、固定記憶装置1008は、一又は複数のコンポーネント又はデバイスを包含しうる。例えば、固定記憶装置1008は、ハードドライブ、ソリッドステートドライブ(SSD)、フラッシュメモリ、書換可能光ディスク、書換可能磁気テープ、又は上記の何らかの組み合わせでありうる。固定記憶装置1008によって使用される媒体は、取り外し可能であることもある。例えば、取り外し可能なハードドライブが固定記憶装置1008に使用されうる
【0120】
これらの実施例では、通信ユニット1010が、他のデータ処理システム又はデバイスとの通信を提供する。これらの実施例では、通信ユニット1010は、ネットワークインタフェースカードである。
【0121】
入出力ユニット1012は、データ処理システム1000に接続されうる別のデバイスとの間のデータの入出力を可能にする。例えば、入出力ユニット1012は、キーボード、マウス、又は他の何らかの好適な入力デバイス、のうちの少なくとも1つを通じて、ユーザ入力のための接続を提供しうる。更に、入出力ユニット1012は、プリンタに出力を送信しうる。ディスプレイ1014は、ユーザに対して情報を表示するための機構を提供する。
【0122】
オペレーティングシステム、アプリケーション、又はプログラム、のうちの少なくとも1つに対する命令は、通信フレームワーク1002を通じてプロセッサユニット1004と通信する記憶デバイス1016内に配置されうる。種々の実施形態のプロセスは、メモリ(メモリ1006など)内に配置されうるコンピュータ実装命令を使用して、プロセッサユニット1004によって実行されうる。
【0123】
かかる命令は、プロセッサユニット1004内のプロセッサによって読み取られ、実行されうるプログラムコード、コンピュータ可用プログラムコード、又はコンピュータ可読プログラムコードと称される。種々の実施形態では、プログラムコードは、種々の物理的な又はコンピュータ可読の記憶媒体(メモリ1006や固定記憶装置1008など)で具現化されうる。
【0124】
プログラムコード1018は、選択的に取り外し可能なコンピュータ可読媒体1020に関数形式で配置され、かつ、プロセッサユニット1004によって実行されるように、データ処理システム1000にローディングされうるか、又は伝送されうる。これらの実施例では、プログラムコード1018とコンピュータ-可読媒体1020とは、コンピュータプログラム製品1022を形成する。この実施例では、コンピュータ可読媒体1020はコンピュータ可読記憶媒体1024である。
【0125】
これらの実施例では、コンピュータ-可読記憶媒体1024は、プログラムコード1018を伝播させるか又は送信する媒体というよりはむしろ、プログラムコード1018を記憶するために使用される物理的な又は有形の記憶デバイスである。本書において、コンピュータ可読記憶媒体1024とは、それ自体、電波若しくはその他の自由に伝播する電磁波、導波路若しくは他の伝送媒体を通って伝播する電磁波(光ファイバケーブルを通過する光パルスなど)といった一過性の信号であると解釈すべきではなく、又は、本書において、ワイヤを通じて伝送される電気信号は、それ自体、電波若しくはその他の自由に伝播する電磁波、導波路若しくは他の伝送媒体を通って伝播する電磁波(光ファイバケーブルを通過する光パルスなど)といった一過性の信号であるとも、ワイヤを通じて伝送される電気信号であるとも、解釈すべきではない。
【0126】
あるいは、プログラムコード1018は、コンピュータ-可読信号媒体を使用して、データ処理システム1000に送信されうる。コンピュータ可読信号媒体は、例えば、プログラムコード1018を包含する、被伝播データ信号でありうる。例えば、コンピュータ可読信号媒体は、電磁信号、光信号、又はその他の任意の好適なタイプの信号、のうちの少なくとも1つでありうる。かかる信号は、無線接続、光ファイバケーブル、同軸ケーブル、電線、又はその他の任意の好適なタイプの接続といった、接続を介して送信されうる。
【0127】
更に、本書で使用される場合、「コンピュータ可読媒体(computer-readable media)1020」は単数であることも、複数であることもある。例えば、プログラムコード1018は、単一の記憶デバイス又は記憶システムの形態のコンピュータ可読媒体1020内に配置されうる。別の例では、プログラムコード1018は、複数のデータ処理システムに分散されているコンピュータ可読媒体1020内に配置されうる。換言すると、プログラムコード1018中の命令の一部が1つのデータ処理システム内に配置されうる一方、プログラムコード1018中の他の命令は1つのデータ処理システム内に配置されうる。例えば、プログラムコード1018の一部分が、サーバコンピュータのコンピュータ可読媒体1020内に配置されうる一方、プログラムコード1018の別の部分は、クライアントコンピュータのセット内に配置されたコンピュータ可読媒体1020内に配置されうる。
【0128】
データ処理システム1000に関して図示している種々のコンポーネントは、種々の実施形態が実装されうる様態に対して、アーキテクチャ上の制限を設けることを意図するものではない。一部の実施例では、コンポーネントのうちの一又は複数が、別のコンポーネントに組み込まれることも、別のコンポーネントの一部分を別様に形成することもある。例えば、一部の実施例では、メモリ1006又はその一部分が、プロセッサユニット1004内に一体化されうる。データ処理システム1000に関して図示しているコンポーネントに追加される、又はかかるコンポーネントを代替するコンポーネントを含むデータ処理システムにおいて、種々の例示的な実施形態が実装されうる。図10に示しているその他のコンポーネントは、図示している実施例とは異なることがある。プログラムコード1018を実行することが可能な任意のハードウェアデバイス又はシステムを使用して、種々の実施形態が実装されうる。
【0129】
ゆえに、実施例は、量子コンピューティングのための方法、装置、システム、及びプログラムコードを提供する。一実施例では、量子処理のための方法がある。量子コンピュータ向けのプロセスのためのターゲット量子プログラミング言語は、コンピュータシステムによって識別される。量子コンピュータのコンピュータタイプに基づいて、コンピュータシステムによって、複数のユニバーサルゲートセットから1つのユニバーサルゲートセットが選択され、ある特定の量子コンピュータにとって実行可能な処理は何でも、このユニバーサルゲートセット中のいくつかのゲートを使用して実行されうる。ソース量子プログラミング言語の、プロセスのための命令が、コンピュータシステムによって、量子言語トランスレータのセットのうちの1つのソース量子言語トランスレータに送信され、このソース量子言語トランスレータは、命令を使用してプロセスを実行するよう構成されている量子コンピュータコンポーネントのデジタルモデル表現を出力する。コンピュータシステムによって、量子コンピュータコンポーネントのデジタルモデル表現、及び選択されたユニバーサルゲートセットが、ターゲット量子言語トランスレータに送信され、これにより、このターゲット量子言語トランスレータは、量子コンピュータコンポーネントのデジタルモデル表現、及び量子コンピュータのコンピュータタイプに応じて選択されたユニバーサルゲートセットを使用して、ターゲット量子プログラミング言語の、処理のための命令を出力する。
【0130】
実施例における種々の特徴は、従来技術よりも向上した精度及び整合性を伴って、種々のコンピュータタイプの量子コンピュータでプロセスを実行する能力を提供する。この実施例では、プロセス(量子アルゴリズムに関するものなど)が、デジタルモデル表現にされうる。このデジタルモデル表現は、命令(例えばプログラムコード、又は量子コンピュータの種々のコンピュータタイプ向けの回路配置のためのコード)を自動的に生成するために使用されうる。換言すると、別々のコンピュータタイプは、別々の配置、及び、処理がどのように実行されうるかに関する別々の制約を有しうる。
【0131】
更に、実施例は、プロセスにおけるルーチン、サブルーチン、又は関数の迅速かつ容易な実装を可能にする、スーパーゲートを含む。別の実施例では、デジタルモデル表現のプロセスの表現が、量子コンピュータにおける特定のタイプのハードウェア向けの命令の生成を可能にしうる。この実施例では、プロセスの1つのデジタルモデル表現のために1つのユニバーサルゲートセットが特定されうる。この様態では、実施例において、デジタルモデル表現の変換は、量子言語トランスレータを使用して、特定のタイプの量子コンピュータのためにカスタマイズされうる。
【0132】
種々の例示的な実施形態についての説明は、例示及び説明を目的として提示されており、網羅的であること、又は開示されている形態の実施形態に限定することを、意図するものではない。アクション又は処理を実行するコンポーネントは、種々の実施例によって説明されている。一実施例では、コンポーネントは、説明しているアクションや処理を実行するよう構成されうる。例えば、コンポーネントは、実施例においてコンポーネントにより実行されると説明しているアクション又は処理を実行する能力をこのコンポーネントに提供する、構成又は構造設計を有しうる。更に、「含む(ncludes/including)」、「有する(has)」、「包含する(contains)」という語、及び これらの変化形が本書で使用される限りにおいて、かかる語は、「備える/含む(comprises)」という語と同様に、いかなる追加の又はその他の要素も排除しないオープントランジション方式の語として、包括的であることが意図されている。
【0133】
更に本開示は、以下の条項による実施形態を含む。
【0134】
条項1.量子処理システム(208)であって、
コンピュータシステム(210)と、
コンピュータシステム(210)における量子言語トランスレータのセット(212)であって、量子プログラミング言語(222)の、処理(220)のための命令(218)を、処理(220)を実行するよう構成された量子コンピュータコンポーネント(228)のデジタルモデル表現(226)に変換すること、及び処理(220)を実行するよう構成された量子コンピュータコンポーネント(228)のデジタルモデル表現(226)を、量子コンピュータ(202)で実行される、量子プログラミング言語(222)の、処理(220)のための命令(218)に変換すること、を行うよう設定されており、量子言語トランスレータのセット(212)における量子言語トランスレータ(244)の各々は、複数の量子プログラミング言語(222)のうちのある特定の量子プログラミング言語のためのものである、量子言語トランスレータのセット(212)と、
複数のユニバーサルゲートセット(246)であって、ある特定の量子コンピュータにとって実行可能な処理は何でも、ユニバーサルゲートセット(246)のうちの1つのユニバーサルゲートセット(248)中のいくつかのゲート(250)を使用して実行されうる、ユニバーサルゲートセット(246)と、
コンピュータシステム(210)におけるプロセスマネージャ(214)であって、
量子言語トランスレータのセット(212)のうちの1つのソース量子言語トランスレータ(244)に、量子プログラミング言語(242)の命令(218)を送信することであって、量子言語トランスレータ(244)は、量子プログラミング言語(242)を処理するよう設定されており、かつ量子コンピュータコンポーネント(228)のデジタルモデル表現(226)を出力する、命令(218)を送信することと、
量子言語トランスレータ(244)に量子コンピュータコンポーネント(228)のデジタルモデル表現(226)を送信することであって、これにより、量子言語トランスレータ(244)が、特定の量子コンピュータのコンピュータタイプ(252)に応じて選択されたユニバーサルゲートセット(248)を使用して、量子プログラミング言語(242)の、処理(220)のための命令(218)を出力する、デジタルモデル表現(226)を送信することと、を行うよう設定されている、プロセスマネージャ(214)と、を備える、
量子処理システム(208)。
【0135】
条項2.プロセスマネージャ214が、選択された、複数のユニバーサルゲートセット(246)のうちの1つのユニバーサルゲートセット(248)を特定するよう設定されており、選択されているユニバーサルゲートセット(248)が、ある特定の量子コンピュータに望ましいレベルのパフォーマンスを提供する、条項1に記載の量子処理システム(208)。
【0136】
条項3.ユニバーサルゲートセット(248)の選択が、命令(218)と共に、量子言語トランスレータ(244)に送信される、条項1又は2に記載の量子処理システム(208)。
【0137】
条項4.ユニバーサルゲートセット(246)が、アダマールゲート、位相(S)ゲート、制御-X(CNOT)ゲート、及びトフォリゲート;アダマールゲート、位相(S)ゲート、π/8(T)ゲート、及び制御-X(CNOT)ゲート;バレンコゲート(B);ドイツゲート(D_θ)ゲート;回転ゲート R_x(θ),R_y(θ);回転ゲート R_x(θ),R_y(θ);又は制御-Z(CZ)ゲート、のうちの少なくとも1つから選択される、条項1から3のいずれか一項に記載の量子処理システム(208)。
【0138】
条項5.量子言語トランスレータ(244)が、
量子言語トランスレータのセット(212)のうちの量子言語トランスレータ(244)に送信された、量子プログラミング言語(242)の命令(218)を受信するよう、かつ、量子コンピュータコンポーネント(228)のデジタルモデル表現(226)を出力するよう、設定されたトランスレータ入力部(300)と、
量子言語トランスレータ(244)に送信された、量子コンピュータコンポーネント(228)のデジタルモデル表現(226)を受信するよう、かつ、量子プログラミング言語(242)の、処理(220)のための命令(218)を出力するよう、設定されたトランスレータ出力部(302)と、を備える、条項1から4のいずれか一項に記載の量子処理システム(208)。
【0139】
条項6.量子処理システム(208)であって、
コンピュータシステム(210)と、
コンピュータシステム(210)における量子言語トランスレータのセット(212)であって、量子プログラミング言語(222)の、処理(220)のための命令(218)を、処理(220)を実行するよう構成された量子コンピュータコンポーネント(228)のデジタルモデル表現(226)に変換すること、及び処理(220)を実行するよう構成された量子コンピュータコンポーネント(228)のデジタルモデル表現(226)を、量子コンピュータ(202)で実行される、量子プログラミング言語(222)の、処理(220)のための命令(218)に変換すること、を行うよう設定されており、量子言語トランスレータのセット(212)における量子言語トランスレータの各々は、複数の量子プログラミング言語(222)のうちのある特定の量子プログラミング言語のためのものである、量子言語トランスレータのセット(212)と、
コンピュータシステム(210)におけるプロセスマネージャ(214)であって、
複数の量子プログラミング言語(222)のうちの1つの量子プログラミング言語(242)の命令(218)を受信することと、
量子言語トランスレータのセット(212)のうちの1つの量子言語トランスレータ(244)に、量子プログラミング言語(242)の命令(218)を送信することであって、量子言語トランスレータ(244)は、量子プログラミング言語(242)を処理するよう設定されており、かつ量子コンピュータコンポーネント(228)のデジタルモデル表現(226)を出力する、命令(218)を送信することと、
量子言語トランスレータ(244)に量子コンピュータコンポーネント(228)のデジタルモデル表現(226)を送信することであって、これにより、量子言語トランスレータ(244)は、量子プログラミング言語(242)の、処理(220)のための命令(218)を出力する、デジタルモデル表現(226)を送信することと、を行うよう設定されている、プロセスマネージャ(214)と、を備える、
量子処理システム(208)。
【0140】
条項7.
複数のユニバーサルゲートセット(246)であって、ある特定の量子コンピュータにとって実行可能な処理は何でも、ユニバーサルゲートセット(246)のうちの1つのユニバーサルゲートセット(248)中のいくつかのゲート(250)を使用して実行されうる、ユニバーサルゲートセット(246)を更に備える、条項6に記載の量子処理システム(208)。
【0141】
条項8.プロセスマネージャ214が、複数のユニバーサルゲートセット(246)のうちの1つのユニバーサルゲートセット(248)を選択するよう設定されており、選択されたユニバーサルゲートセット(248)が、ある特定の量子コンピュータに望ましいレベルのパフォーマンスを提供する、条項7に記載の量子処理システム(208)。
【0142】
条項9.選択されたユニバーサルゲートセット(248)の識別情報が、命令(218)と共に、量子言語トランスレータに送信される、条項8に記載の量子処理システム(208)。
【0143】
条項10.ユニバーサルゲートセット(246)が、アダマールゲート、位相(S)ゲート、制御-X(CNOT)ゲート、及びトフォリゲート;アダマールゲート、位相(S)ゲート、π/8(T)ゲート、及び制御-X(CNOT)ゲート;バレンコゲート(B);ドイツゲート(D_θ)ゲート;回転ゲート R_x(θ),R_y(θ);回転ゲート R_x(θ),R_y(θ);又は制御-Z(CZ)ゲート、のうちの少なくとも1つから選択される、条項7に記載の量子処理システム(208)。
【0144】
条項11.プロセスマネージャ(214)は、処理(220)を実行するよう構成された量子コンピュータコンポーネント(228)のデジタルモデル表現(226)の処理をシミュレートするよう設定される、条項6から10のいずれか一項に記載の量子処理システム(208)。
【0145】
条項12.量子言語トランスレータ(244)が、
量子言語トランスレータのセット(212)のうちの1つの量子言語トランスレータ(244)に送信された、量子プログラミング言語(242)の命令(218)を受信するよう、かつ、量子コンピュータコンポーネント(228)のデジタルモデル表現(226)を出力するよう、設定されたトランスレータ入力部(300)と、
量子言語トランスレータ(244)に送信された、量子コンピュータコンポーネント(228)のデジタルモデル表現(226)を受信するよう、かつ、量子プログラミング言語の、処理(220)のための命令(218)を出力するよう、設定されたトランスレータ出力部(302)と、を備える、条項6から11のいずれか一項に記載の量子処理システム(208)。
【0146】
条項13.量子コンピュータコンポーネント(228)がゲート(250)を含む、条項6から12のいずれか一項に記載の量子処理システム(208)。
【0147】
条項14.量子コンピュータコンポーネント(228)が、量子ビットモデル(402)、メモリモデル(404)、メモリステート(406)、又は量子プログラミング(408)、のうちの少なくとも1つを更に含む、条項13に記載の量子処理システム(208)。
【0148】
条項15.ゲート(250)がいくつかのスーパーゲート(414)を含む、条項13に記載の量子処理システム(208)。
【0149】
条項16.量子コンピュータが、超伝導量子コンピュータとイオントラップ量子コンピュータの一方から選択される、条項6から15のいずれか一項に記載の量子処理システム(208)。
【0150】
条項17.命令(218)が、アプリケーション、プログラム、及びサブルーチンのうちの1つのためのものである、条項6から16のいずれか一項に記載の量子処理システム(208)。
【0151】
条項18.量子処理のための方法であって、
コンピュータシステム(210)によって、量子コンピュータ向けのプロセス(204)のためのターゲット量子プログラミング言語を識別すること(600)と、
コンピュータシステム(210)によって、量子コンピュータのコンピュータタイプ(252)に基づいて、複数のユニバーサルゲートセット(246)から1つのユニバーサルゲートセット(248)を選択すること(602)であって、ある特定の量子コンピュータにとって実行可能な処理は何でも、ユニバーサルゲートセット(248)中のいくつかのゲートを使用して実行されうる、ユニバーサルゲートセット(248)を選択すること(602)と、
コンピュータシステム(210)によって、量子言語トランスレータのセット(212)のうちの1つのソース量子言語トランスレータに、ソース量子プログラミング言語の、プロセス(204)のための命令(218)を送信すること(604)であって、このソース量子言語トランスレータが、命令(218)を使用してプロセス(204)を実行するよう構成されている量子コンピュータコンポーネント(228)のデジタルモデル表現(226)を出力する、命令(218)を送信すること(604)と、
コンピュータシステム(210)によって、ターゲット量子言語トランスレータに、量子コンピュータコンポーネント(228)のデジタルモデル表現(226)、及び選択されたユニバーサルゲートセット(248)を送信すること(606)であって、これにより、量子言語トランスレータは、量子コンピュータコンポーネント(228)のデジタルモデル表現(226)、及び量子コンピュータのコンピュータタイプ(252)に応じて選択されたユニバーサルゲートセット(248)を使用して、ターゲット量子プログラミング言語の、プロセス(204)のための処理(220)のための命令(218)を出力する、送信すること(606)と、を含む、
方法。
【0152】
条項19.量子コンピュータのコンピュータタイプ(252)に基づいて、複数のユニバーサルゲートセット(246)から1つのユニバーサルゲートセット(248)を選択することが、
コンピュータシステム(210)によって、量子コンピュータのコンピュータタイプ(252)に望ましいレベルのパフォーマンスを提供する、複数のユニバーサルゲートセット(246)のうちの1つのユニバーサルゲートセット(248)を選択することを含む、条項18に記載の方法。
【0153】
条項20.ユニバーサルゲートセット(246)が、アダマールゲート、位相(S)ゲート、制御-X(CNOT)ゲート、及びトフォリゲート;アダマールゲート、位相(S)ゲート、π/8(T)ゲート、及び制御-X(CNOT)ゲート;バレンコゲート(B);ドイツゲート(D_θ)ゲート;回転ゲート R_x(θ),R_y(θ);回転ゲート R_x(θ),R_y(θ);又は制御-Z(CZ)ゲート、のうちの少なくとも1つから選択される、条項18又は19に記載の方法。
【0154】
条項21.
コンピュータシステム(210)によって、量子コンピュータで、ターゲット量子プログラミング言語の命令(218)を実行することを更に含む、条項18から20のいずれか一項に記載の方法。
【0155】
条項22.量子言語トランスレータ(244)が、
量子言語トランスレータのセット(212)のうちの量子言語トランスレータ(244)に送信された、量子プログラミング言語(242)の命令(218)を受信するよう、かつ、量子コンピュータコンポーネント(228)のデジタルモデル表現(226)を出力するよう、設定されたトランスレータ入力部(300)と、
量子言語トランスレータ(244)に送信された、量子コンピュータコンポーネント(228)のデジタルモデル表現(226)を受信するよう、かつ、量子プログラミング言語(242)の、処理(220)のための命令(218)を出力するよう、設定されたトランスレータ出力部(302)と、を備える、条項18から21のいずれか一項に記載の方法。
【0156】
条項23.量子コンピュータコンポーネント(228)がゲート(250)を含む、条項18から22のいずれか一項に記載の方法。
【0157】
条項24.量子コンピュータコンポーネント(228)が、量子ビットモデル(402)、メモリモデル(404)、メモリステート(406)、又は量子プログラミング(408)、のうちの少なくとも1つを更に含む、条項23に記載の方法。
【0158】
条項25.ゲート(250)がいくつかのスーパーゲート(414)を含む、条項23に記載の方法。
【0159】
条項26.量子コンピュータが、超伝導量子コンピュータとイオントラップ量子コンピュータの一方から選択される、条項18から25のいずれか一項に記載の方法。
【0160】
条項27.命令(218)が、アプリケーション、プログラム、及びサブルーチンのうちの1つのためのものである、条項18から26のいずれか一項に記載の方法。
【0161】
条項28.量子処理のためのコンピュータプログラム製品(1022)であって、
コンピュータ-可読記憶媒体(1024)と、
コンピュータシステム(210)に、量子コンピュータ向けのプロセス(204)のためのターゲット量子プログラミング言語を識別させるよう、コンピュータシステム(210)によって実行可能な、コンピュータ-可読記憶媒体に記憶された第1プログラムコードと、
コンピュータシステム(210)に、量子コンピュータのコンピュータタイプ(252)に基づいて、複数のユニバーサルゲートセット(246)から1つのユニバーサルゲートセット(248)を選択させるよう、コンピュータシステム(210)によって実行可能な、コンピュータ-可読記憶媒体(1024)に記憶された第2プログラムコードであって、ある特定の量子コンピュータにとって実行可能な処理は何でも、ユニバーサルゲートセット(248)中のいくつかのゲートを使用して実行されうる、第2プログラムコードと、
コンピュータシステム(210)に、ソース量子プログラミング言語の、プロセス(204)のための命令(218)を、量子言語トランスレータのセット(212)のうちの1つのソース量子言語トランスレータに送信させるよう、コンピュータシステム(210)によって実行可能な、コンピュータ-可読記憶媒体(1024)に記憶された第3プログラムコードであって、このソース量子言語トランスレータが、命令(218)を使用してプロセス(204)を実行するよう構成されている量子コンピュータコンポーネント(228)のデジタルモデル表現(226)を出力する、第3プログラムコードと、
コンピュータシステム(210)に、量子コンピュータコンポーネント(228)のデジタルモデル表現(226)、及び選択されたユニバーサルゲートセット(248)を、ターゲット量子言語トランスレータに送信させることであって、これにより、ターゲット量子言語トランスレータ(244)が、量子コンピュータコンポーネント(228)のデジタルモデル表現(226)、及び量子コンピュータのコンピュータタイプ(252)に応じて選択されたユニバーサルゲートセット(248)を使用して、ターゲット量子プログラミング言語の、プロセス(204)のための処理(220)のための命令(218)を出力する、送信させることを実行させるよう、コンピュータシステム(210)によって実行可能な、コンピュータ-可読記憶媒体(1024)に記憶された第4プログラムコードと、を備える
コンピュータプログラム製品(1022)。
【0162】
条項29.第2プログラムコードが、
コンピュータシステム(210)に、量子コンピュータのコンピュータタイプ(252)に望ましいレベルのパフォーマンスを提供する、複数のユニバーサルゲートセット(246)のうちの1つのユニバーサルゲートセット(248)を選択させるよう、コンピュータシステム(210)によって実行可能な、コンピュータ可読記憶媒体(1024)に記憶されたプログラムコードを含む、条項28に記載のコンピュータプログラム製品(1022)。
【0163】
条項30.ユニバーサルゲートセット(246)が、アダマールゲート、位相(S)ゲート、制御-X(CNOT)ゲート、及びトフォリゲート;アダマールゲート、位相(S)ゲート、π/8(T)ゲート、及び制御-X(CNOT)ゲート;バレンコゲート(B);ドイツゲート(D_θ)ゲート;回転ゲート R_x(θ),R_y(θ);回転ゲート R_x(θ),R_y(θ);又は制御-Z(CZ)ゲート、のうちの少なくとも1つから選択される、条項28又は29に記載のコンピュータプログラム製品(1022)。
【0164】
当業者には、多くの修正例及び変形例が自明となろう。更に、種々の例示的な実施形態によって、他の望ましい実施形態とは異なる特徴が提供されうる。選択された一又は複数の実施形態は、実施形態の原理、実際の応用を最もよく説明するように、かつ、他の当業者が、様々な実施形態の開示内容と共に想定される特定の用途に適した様々な修正について理解しうるように、選択され、説明されている。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10