(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2023-10-25
(54)【発明の名称】並列量子コンピューティングのための方法及び装置
(51)【国際特許分類】
G06F 9/50 20060101AFI20231018BHJP
G06N 10/00 20220101ALI20231018BHJP
【FI】
G06F9/50 150B
G06N10/00
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2023546569
(86)(22)【出願日】2021-09-17
(85)【翻訳文提出日】2023-04-10
(86)【国際出願番号】 GB2021052419
(87)【国際公開番号】W WO2022079406
(87)【国際公開日】2022-04-21
(32)【優先日】2020-10-12
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】523134060
【氏名又は名称】リバーレーン リミティド
(74)【代理人】
【識別番号】100099759
【氏名又は名称】青木 篤
(74)【代理人】
【識別番号】100123582
【氏名又は名称】三橋 真二
(74)【代理人】
【識別番号】100092624
【氏名又は名称】鶴田 準一
(74)【代理人】
【識別番号】100114018
【氏名又は名称】南山 知広
(74)【代理人】
【識別番号】100153729
【氏名又は名称】森本 有一
(74)【代理人】
【識別番号】100151459
【氏名又は名称】中村 健一
(72)【発明者】
【氏名】ジェイムズ クルーズ
(72)【発明者】
【氏名】トム パークス
(57)【要約】
コンピューティングシステムは、古典-量子ハイブリッドアルゴリズムを実行するように構成され得る。コンピューティングシステムは、古典-量子ハイブリッドアルゴリズムの1つ以上の古典的に実行可能なノードを備える古典的コンピュータと、量子プロセッサユニットを備える量子コンピュータとを備える。量子コンピュータは、古典的コンピュータに動作可能に結合されている。1つ以上の古典的に実行可能なノードは、第1の回路及び第2の回路を、評価のために量子コンピュータに送信するように構成される。量子コンピュータは、第1の回路及び第2の回路を受信することと、量子プロセッサユニットを使用して、第1の回路を評価して第1回路評価を決定することと、第1回路評価を古典的コンピュータに送信することと、を行うように構成される。1つ以上の古典的に実行可能なノードは、第1回路評価を受信することと、第1の時間間隔中に第1回路評価を処理することと、を行うように構成される。量子コンピュータは、量子プロセッサユニットを使用して、第1の時間間隔中に少なくとも部分的に、第2の回路を評価して第2回路評価を決定することと、第2回路評価を古典的コンピュータに送信することと、を行うように構成される。
【特許請求の範囲】
【請求項1】
古典-量子ハイブリッドアルゴリズムの1つ以上の古典的に実行可能なノードを備える古典的コンピュータを制御するためのコンピュータ実装方法であって、前記古典的コンピュータが、量子コンピュータに動作可能に結合されており、前記方法が、
前記1つ以上の古典的に実行可能なノードによって、第1の回路を、評価のために前記量子コンピュータに送信することと、
前記第1の回路の第1回路評価を前記量子コンピュータから受信することと、
前記1つ以上の古典的に実行可能なノードによって、第1の時間間隔中に前記第1回路評価を処理することと、
前記1つ以上の古典的に実行可能なノードによって、前記第1の時間間隔中に少なくとも部分的に、第2の回路を、前記量子コンピュータによる評価のために前記量子コンピュータに送信することと、
前記第2の回路の第2回路評価を、前記1つ以上の古典的に実行可能なノードによる処理のために、前記量子コンピュータから受信することと、を含む、コンピュータ実装方法。
【請求項2】
前記1つ以上の古典的に実行可能なノードによって、第2の時間間隔中に前記第2回路評価を処理することと、
前記1つ以上の古典的に実行可能なノードによって、第3の回路を、前記第1の時間間隔及び/又は前記第2の時間間隔中に少なくとも部分的に、前記量子コンピュータによる評価のために、前記量子コンピュータに送信することと、
前記第3の回路の第3回路評価を、前記1つ以上の古典的に実行可能なノードによる処理のために、前記量子コンピュータから受信することと、を更に含む、請求項1に記載の方法。
【請求項3】
前記古典-量子ハイブリッドアルゴリズムが、
前記1つ以上の古典的に実行可能なノードから形成される頂点と、
前記第1の回路と前記第2の回路とを備える複数の量子回路から形成されるエッジと、を有する、有向非巡回グラフに対応する構造を有する、請求項1又は請求項2に記載の方法。
【請求項4】
前記1つ以上の古典的に実行可能なノードが、
第1のノードであって、
前記第1の回路を前記量子コンピュータに送信することと、
前記量子コンピュータから前記第1回路評価を受信することと、
前記第1の時間間隔中に前記第1回路評価を処理することと、を行うように構成されている、第1のノードと、
前記第1のノードとは異なる第2のノードであって、前記第2のノードが、
前記第2の回路を、前記第1の時間間隔中に少なくとも部分的に、評価のために前記量子コンピュータに送信することと、
前記量子コンピュータから前記第2回路評価を受信することと、
前記第2回路評価を処理することと、を行うように構成されている、第2のノードと、を備える、請求項1~3のいずれか一項に記載の方法。
【請求項5】
前記第1の回路に、
前記1つ以上の古典的に実行可能なノードのうちの、前記第1の回路を送信する第1のノードを一意に識別する第1ノード一意識別子と、
前記第1回路評価のための前記第1のノードの要求を一意に識別する第1要求一意識別子と、をタグ付けすることと、
前記第1ノード一意識別子及び前記第1要求一意識別子を有する前記第1回路評価を受信することと、
前記第1回路評価及び前記第1要求一意識別子を、処理のために前記第1のノードに送信することと、を含む、請求項1~4のいずれか一項に記載の方法。
【請求項6】
前記第1の回路に第1回路反復カウントをタグ付けすることと、
前記第1の回路を、前記第1回路反復カウントに従って複数回、評価のために前記量子コンピュータに送信することと、
複数の第1回路評価を受信及び処理することと、を含む、請求項1~5のいずれか一項に記載の方法。
【請求項7】
前記第1の回路及び前記第2の回路を備える複数の量子回路を前記古典的コンピュータの回路バッファに送信することと、
前記複数の量子回路のうちの量子回路を選択することと、
バッファカウンタの値が閾値を満たす場合、前記選択された量子回路を、
固定長バッファへの記憶、及び
前記量子コンピュータによる評価のために、前記量子コンピュータに送信することと、
前記バッファカウンタの値を1増分することと、を含む、請求項1~6のいずれか一項に記載の方法。
【請求項8】
前記第1の回路の前記第1回路評価を前記量子コンピュータから受信することと、
前記バッファカウンタの値を1減分することと、
更なる量子回路について前記回路バッファをチェックすることと、を含む、請求項7に記載の方法。
【請求項9】
前記バッファカウンタの値は、前記固定長バッファの容量未満である、前記固定長バッファ内に存在する量子回路の数に前記バッファカウンタの値が対応する場合、前記閾値を満たす、請求項7または8に記載の方法。
【請求項10】
前記量子回路の前記選択が、
それぞれのパーティションの各それぞれの回路ごとに、1つ以上の古典的に実行可能なノードのその共通の起点ノードを識別することに基づいて、前記複数の量子回路を分割することと、
各それぞれのパーティション内に存在する回路の数を決定することと、
前記量子回路が、最小数の回路を有するパーティションに属することを決定することと、を含む選択ポリシーに基づく、請求項7~9のいずれか一項に記載の方法。
【請求項11】
前記第1回路評価及び/又は前記第2回路評価に基づいて、前記古典-量子ハイブリッドアルゴリズムの前記1つ以上の古典的に実行可能なノードに1つ以上の新しいノードを追加することを含む、請求項1~10のいずれか一項に記載の方法。
【請求項12】
前記古典-量子ハイブリッドアルゴリズムが、変分量子固有値ソルバー、最適化アルゴリズム、及び量子プロセッサベンチマークアルゴリズムのうちの1つ以上である、請求項1~11のいずれか一項に記載の方法。
【請求項13】
量子プロセッサユニットを備える量子コンピュータを制御するためのコンピュータ実装方法であって、前記方法が、
古典-量子ハイブリッドアルゴリズムの1つ以上の古典的に実行可能なノードから複数の量子回路を受信することであって、前記複数の量子回路が、第1の回路と第2の回路とを備える、受信することと、
前記量子プロセッサユニットを使用して、前記第1の回路を評価して第1回路評価を決定することと、
前記第1回路評価を、第1の時間間隔中に処理するために、前記少なくとも1つ以上の古典的に実行可能なノードに送信することと、
前記量子プロセッサユニットを使用して、前記第2の回路を評価して第2回路評価を提供することであって、前記第2の回路の前記評価が、前記第1の時間間隔中に少なくとも部分的に行われる、提供することと、
前記第2回路評価を、第2の時間間隔中に処理するために、前記少なくとも1つ以上の古典的に実行可能なノードに送信することと、を含む、コンピュータ実装方法。
【請求項14】
前記複数の量子回路のうちの第3の回路を前記1つ以上の古典的に実行可能なノードから受信することと、
前記量子プロセッサユニットを使用して、前記第3の回路を評価して、第3回路評価を提供することであって、前記第3の回路の前記評価が、前記第1の時間間隔及び/又は前記第2の時間間隔中に少なくとも部分的に行われる、提供することと、
前記第3回路評価を、処理のために前記少なくとも1つ以上の古典的に実行可能なノードに送信することと、を含む、請求項13に記載の方法。
【請求項15】
前記第1の回路が、前記1つ以上の古典的に実行可能なノードのうちの第1のノードから受信され、前記第2の回路が、前記1つ以上の古典的に実行可能なノードのうちの第2のノードから受信され、前記第1のノードが、前記第2のノードとは異なる、請求項13または14に記載の方法。
【請求項16】
前記1つ以上の古典的に実行可能なノードのうちの第1のノードから、
第1のノードを一意に識別する第1ノード一意識別子と、
前記第1回路評価のための前記第1のノードの要求を一意に識別する第1要求一意識別子と、を有する前記第1の回路を受信することと、
前記第1ノード一意識別子と、前記第1要求一意識別子とを有する前記第1回路評価を、処理のために前記1つ以上の古典的に実行可能なノードに送信することと、を含む、請求項13~15のいずれか一項に記載の方法。
【請求項17】
第1回路反復カウントを有する前記第1の回路を受信することと、
前記第1の回路を、前記第1回路反復カウントに従って、複数回評価することと、
複数の第1回路評価を、処理のために前記少なくとも1つ以上の古典的に実行可能なノードに送信することと、を含む、請求項13~16のいずれか一項に記載の方法。
【請求項18】
前記複数の量子回路を前記量子コンピュータの回路バッファに記憶することと、
選択ポリシーに基づいて、前記複数の量子回路のうちの量子回路を選択することと、
前記選択された量子回路を評価して、選択された量子回路評価を決定することと、
前記選択された量子回路評価を、処理のために前記少なくとも1つ以上の古典的に実行可能なノードに送信することと、を含む、請求項13~17のいずれか一項に記載の方法。
【請求項19】
前記選択ポリシーが、
それぞれのパーティションの各それぞれの回路ごとに、1つ以上の古典的に実行可能なノードのその共通の起点ノードを識別することに基づいて、前記複数の量子回路を分割することと、
各それぞれのパーティション内に存在する回路の数を決定することと、
前記量子回路が、最小数の回路を有するパーティションに属することを決定することと、を含む、請求項18に記載の方法。
【請求項20】
古典-量子ハイブリッドアルゴリズムを実行するためのコンピューティングシステムであって、前記コンピューティングシステムが、
前記古典-量子ハイブリッドアルゴリズムの1つ以上の古典的に実行可能なノードを備える古典的コンピュータと、
量子プロセッサユニットを備える量子コンピュータであって、前記量子コンピュータが、前記古典的コンピュータに動作可能に結合されている、量子コンピュータと、を備え、
前記1つ以上の古典的に実行可能なノードが、第1の回路及び第2の回路を、評価のために前記量子コンピュータに送信するように構成され、
前記量子コンピュータが、
前記第1の回路及び前記第2の回路を受信することと、
前記量子プロセッサユニットを使用して、前記第1の回路を評価して第1回路評価を決定することと、
前記第1回路評価を前記古典的コンピュータに送信することと、を行うように構成され、
前記1つ以上の古典的に実行可能なノードが、
前記第1回路評価を受信することと、
第1の時間間隔中に前記第1回路評価を処理することと、を行うように構成され、
前記量子コンピュータが、
前記量子プロセッサユニットを使用して、前記第1の時間間隔中に少なくとも部分的に、前記第2の回路を評価して第2回路評価を決定することと、
前記第2回路評価を前記古典的コンピュータに送信することと、を行うように構成されている、コンピューティングシステム。
【発明の詳細な説明】
【背景技術】
【0001】
本開示は、古典-量子ハイブリッドアルゴリズムの並列処理のための装置、システム、及び方法に関する。
【発明の概要】
【0002】
本開示の第1の態様によれば、古典-量子ハイブリッドアルゴリズムの1つ以上の古典的に実行可能なノードを備える古典的コンピュータを制御するためのコンピュータ実装方法であって、古典的コンピュータが、量子コンピュータに動作可能に結合されている、コンピュータ実装方法、が提供される。方法は、1つ以上の古典的に実行可能なノードによって、第1の回路を、評価のために量子コンピュータに送信することと、第1の回路の第1回路評価を量子コンピュータから受信することと、1つ以上の古典的に実行可能なノードによって、第1の時間間隔中に第1回路評価を処理することと、1つ以上の古典的に実行可能なノードによって、第2の回路を、第1の時間間隔中に少なくとも部分的に、量子コンピュータによる評価のために、量子コンピュータに送信することと、第2の回路の第2回路評価を、1つ以上の古典的に実行可能なノードによって処理するために、量子コンピュータから受信することと、を含む。
【0003】
任意選択で、方法は、1つ以上の古典的に実行可能なノードによって、第2の時間間隔中に第2回路評価を処理することと、1つ以上の古典的に実行可能なノードによって、第3の回路を、第1の時間間隔及び/又は第2の時間間隔中に少なくとも部分的に、量子コンピュータによる評価のために、量子コンピュータに送信することと、第3の回路の第3回路評価を、1つ以上の古典的に実行可能なノードによって処理するために、量子コンピュータから受信することと、を含み得る。
【0004】
任意選択で、古典-量子ハイブリッドアルゴリズムは、1つ以上の古典的に実行可能なノードから形成される頂点と、第1の回路と第2の回路とを備える複数の量子回路から形成されるエッジと、を有する、有向非巡回グラフに対応する構造を有し得る。
【0005】
任意選択で、1つ以上の古典的に実行可能なノードは、第1のノードであって、第1の回路を量子コンピュータに送信することと、量子コンピュータから第1回路評価を受信することと、第1の時間間隔中に第1回路評価を処理することと、を行うように構成されている、第1のノードと、第1のノードとは異なる第2のノードであって、第2の回路を、第1の時間間隔中に少なくとも部分的に、評価のために量子コンピュータに送信することと、量子コンピュータから第2回路評価を受信することと、第2回路評価を処理することと、を行うように構成されている、第2のノードと、を備え得る。
【0006】
任意選択で、方法は、第1の回路に、1つ以上の古典的に実行可能なノードのうちの、第1の回路を送信する第1のノードを一意に識別する第1ノード一意識別子と、第1回路評価のための第1のノードの要求を一意に識別する第1要求一意識別子とをタグ付けすることと、第1ノード一意識別子と、第1要求一意識別子とを有する第1回路評価を受信することと、第1回路評価及び第1要求一意識別子を、処理のために第1のノードに送信することと、を含み得る。
【0007】
任意選択で、方法は、第1の回路に第1回路反復カウントをタグ付けすることと、第1の回路を、第1回路反復カウントに従って複数回評価するために、量子コンピュータに送信することと、複数の第1回路評価を受信及び処理することと、を含み得る。
【0008】
任意選択で、方法は、第1の回路と第2の回路とを備える複数の量子回路を古典的コンピュータの回路バッファに送信することと、複数の量子回路のうちの量子回路を選択することと、バッファカウンタの値が閾値を満たす場合、選択された量子回路を、固定長バッファ内への記憶、及び量子コンピュータによる評価のために、量子コンピュータに送信することと、バッファカウンタの値を1増分することと、を含み得る。
【0009】
任意選択で、方法は、量子コンピュータから第1の回路の第1回路評価を受信することと、バッファカウンタの値を1減分することと、を含み得る。
【0010】
任意選択で、方法は、更なる量子回路について回路バッファをチェックすることを含み得る。
【0011】
任意選択で、バッファカウンタの値は、バッファカウンタの値が、固定長バッファの容量未満である、固定長バッファ内に存在する量子回路の数に対応する場合、閾値を満たす。
【0012】
任意選択で、量子回路の選択は、それぞれのパーティションの各それぞれの回路ごとに、1つ以上の古典的に実行可能なノードのその共通の起点ノードを識別することに基づいて、複数の量子回路を分割することと、各それぞれのパーティション内に存在する回路の数を決定することと、量子回路が、最小数の回路を有するパーティションに属することを決定することと、を含む選択ポリシーに基づく。
【0013】
任意選択で、方法は、第1回路評価及び/又は第2回路評価に基づいて、古典-量子ハイブリッドアルゴリズムの1つ以上の古典的に実行可能なノードに、1つ以上の新しいノードを追加することを含み得る。
【0014】
任意選択で、古典-量子ハイブリッドアルゴリズムは、変分量子固有値ソルバー、最適化アルゴリズム、及び量子プロセッサベンチマークアルゴリズムのうちの1つ以上であり得る。
【0015】
本開示の更なる態様によれば、量子プロセッサユニットを備える量子コンピュータを制御するためのコンピュータ実装方法が、提供される。方法は、古典-量子ハイブリッドアルゴリズムの1つ以上の古典的に実行可能なノードから複数の量子回路を受信することであって、複数の量子回路が、第1の回路と第2の回路とを備える、受信することと、量子プロセッサユニットを使用して、第1の回路を評価して第1回路評価を決定することと、第1回路評価を、第1の時間間隔中に処理するために、少なくとも1つ以上の古典的に実行可能なノードに送信することと、量子プロセッサユニットを使用して、第2の回路を評価して第2回路評価を提供することであって、第2の回路の評価が、第1の時間間隔中に少なくとも部分的に行われる、提供することと、第2回路評価を、第2の時間間隔中に処理するために、少なくとも1つ以上の古典的に実行可能なノードに送信することと、を含む。
【0016】
任意選択で、方法は、1つ以上の古典的に実行可能なノードから複数の量子回路のうちの第3の回路を受信すること、量子プロセッサユニットを使用して、第3の回路を評価して第3回路評価を提供することであって、第3の回路の評価が、第1の時間間隔及び/又は第2の時間間隔中に少なくとも部分的に行われる、提供すること、第3回路評価を、処理のために少なくとも1つ以上の古典的に実行可能なノードに送信すること、を含み得る。
【0017】
任意選択で、第1の回路は、1つ以上の古典的に実行可能なノードのうちの第1のノードから受信され、第2の回路は、1つ以上の古典的に実行可能なノードのうちの第2のノードから受信され、第1のノードは、第2のノードとは異なる。
【0018】
任意選択で、方法は、1つ以上の古典的に実行可能なノードのうちの第1のノードから、第1のノードを一意に識別する第1ノード一意識別子と、第1回路評価のための第1のノードの要求を一意に識別する第1要求一意識別子とを有する第1の回路を受信することと、第1ノード一意識別子と、第1要求一意識別子とを有する第1回路評価を、処理のために、1つ以上の古典的に実行可能なノードに送信することと、を含み得る。
【0019】
任意選択で、方法は、第1回路反復カウントを有する第1の回路を受信することと、第1回路反復カウントに従って複数回、第1の回路を評価することと、複数の第1回路評価を、処理のために、少なくとも1つ以上の古典的に実行可能なノードに送信することと、を含み得る。
【0020】
任意選択で、方法は、複数の量子回路を量子コンピュータの回路バッファに記憶することと、選択ポリシーに基づいて、複数の量子回路のうちの量子回路を選択することと、選択された量子回路を評価して、選択された量子回路評価を決定することと、選択された量子回路評価を、処理のために、少なくとも1つ以上の古典的に実行可能なノードに送信することと、を含み得る。
【0021】
任意選択で、選択ポリシーは、それぞれのパーティションの各それぞれの回路ごとに、1つ以上の古典的に実行可能なノードの共通のその起点ノードを識別することに基づいて、複数の量子回路を分割することと、各それぞれのパーティション内に存在する回路の数を決定することと、量子回路が、最小数の回路を有するパーティションに属することを決定することと、を含む。
【0022】
本開示の更なる態様によれば、古典-量子ハイブリッドアルゴリズムを実行するためのコンピューティングシステムが提供され、該コンピューティングシステムは、古典-量子ハイブリッドアルゴリズムの1つ以上の古典的に実行可能なノードを備える古典的コンピュータと、量子プロセッサユニットを備える量子コンピュータと、を備え、量子コンピュータは、古典的コンピュータに動作可能に結合されている。1つ以上の古典的に実行可能なノードは、第1の回路及び第2の回路を、評価のために量子コンピュータに送信するように構成され、量子コンピュータは、第1の回路及び第2の回路を受信することと、量子プロセッサユニットを使用して、第1の回路を評価して第1回路評価を決定することと、第1回路評価を古典的コンピュータに送信することと、を行うように構成され、1つ以上の古典的に実行可能なノードは、第1回路評価を受信することと、第1の時間間隔中に第1回路評価を処理することと、を行うように構成され、量子コンピュータは、量子プロセッサユニットを使用して、第1の時間間隔中に少なくとも部分的に、第2の回路を評価して第2回路評価を決定することと、第2回路評価を古典的コンピュータに送信することと、を行うように構成されている。
【0023】
本開示の更なる態様によれば、1つ以上のプロセッサによって実行されたとき、装置に、少なくとも、本明細書に開示されるいずれかの方法のステップを実行させる1つ以上の命令の1つ以上のシーケンスを含む、コンピュータプログラム製品、又はコンピュータ可読メモリ媒体が、提供される。
【0024】
本開示は、様々な修正及び代替形態を受け入れる余地があるが、それらの具体例が、例として図面に示されており、詳細に説明される。しかしながら、記載された特定の実施形態を超える他の実施形態も、同様に可能であることを理解されたい。添付の特許請求の範囲の主旨及び範囲内の全ての修正、等価物、及び代替の実施形態も、同様に対象となる。
【0025】
上記の考察は、現在又は将来の請求項セットの範囲内の全ての例示的な実施形態又は全ての実装例を表すことを意図するものではない。以下の図及び詳細な説明もまた、様々な例示的な実施形態を例示する。様々な例示的な実施形態は、添付の図面と関連させて、以下の詳細な説明を考慮すると、より完全に理解され得る。
【図面の簡単な説明】
【0026】
ここで、添付の図面を例示としてのみ参照して、1つ以上の実施形態を説明する。
【0027】
【
図1】量子コンピュータに動作可能に結合された古典的コンピュータの例示的な一実施形態を示す。
【
図2】古典-量子ハイブリッドアルゴリズムを実行するためのシリアル処理スキームの一例を示す。
【
図3】データフローグラフ構造を有する古典-量子ハイブリッドアルゴリズムの例示的な一実施形態を示す。
【
図4】古典-量子ハイブリッドアルゴリズムの並列実行のための方法のフローチャートの例示的な一実施形態を示す。
【
図5】古典-量子ハイブリッドアルゴリズムを実行するための並列処理スキームの例示的な一実施形態を示す。
【
図6】古典-量子ハイブリッドアルゴリズムの並列処理のために構成された古典的コンピュータ及び量子コンピュータの例示的な一実施形態を示す。
【
図7】非有界回路バッファ(unbounded circuit buffer)を有する古典的コンピュータ及び固定長バッファを有する量子コンピュータの例示的な一実施形態を示す。
【
図8】コンピュータプログラム製品の例示的な一実施形態を示す。
【発明を実施するための形態】
【0028】
量子処理ユニット(QPU)は、現在の古典的コンピューティングシステムの範囲を超える問題に取り組むための加速を提供するために、高性能コンピューティング設備を含む様々なコンピューティングプラットフォームに統合されるであろう。いつか近い将来に、純粋な量子コンピュータが存在する可能性は低く、メモリ及び長期データストレージに関する問題が、これを比較的長期的な見通しにしている。したがって、近い将来、QPUを利用する全てのアルゴリズムは、本質的にハイブリッドであり、古典的計算と、量子計算との混合物を備えると予想される。本開示は、ハイブリッド古典-量子コンピュータシステムのための改善されたオペレーティングシステムを提供することによって、QPUベースのシステムの動作を根本的に改善するそのようなハイブリッド古典-量子アルゴリズムの並列処理のための方法及び装置を提供する。
【0029】
QPU上の計算は、有限のキュービットコヒーレンス時間に起因して、データが、QPUのキュービット内で記憶及び操作され得る非常に短い時間スケールのために、他の計算ユニット(グラフィカル処理ユニット[GPU]、フィールドプログラマブルゲートアレイ[FPGA]、及び古典的コンピュータ中央処理ユニット[CPU]など)とは根本的に異なる。これは、計算が、データをキュービットにロードすることと、キュービット上で計算を実行することと、キュービットを測定することとを含む、回路と呼ばれることの多い離散ユニット内で実行されなければならないことを意味する。これは、計算が、ストリーミング及びインターリーブされた様式で実行され得る、すなわち、計算タスクが、分割及び一時停止され得る、他の形態の計算ユニットとは対照的である。したがって、QPU上で実行される計算の制御は、他の計算技術とは異なり、したがって、異なるアイデアを必要とする。回路という用語は、QPU上で実行されるこれらの計算ブロックのうちの1つを指すために使用され、QPUはまた、少量の古典的計算ゲート、例えば、測定ベースの量子ゲートを含み得る。
【0030】
ハイブリッドアルゴリズムは、古典的計算の実行と、QPU上の回路の実行とをインターリーブする。とりわけ、化学、最適化、及びQPUベンチマークなどの分野における多くの問題に取り組むための広範囲のそのような量子アルゴリズムが、存在する。
【0031】
図1は、QPU104に接続されたCPU102を備えるハイブリッド古典-量子コンピューティングシステム100を示す。CPU102とQPU104との間の接続106は、例えば、PCIeレーンからイーサネットリンク、並びに、例えば、クラウドシステム内のインターネットリンクまで、多くの形態をとり得る。
【0032】
これは、広範なレイテンシ、すなわち、QPU104からCPU102に、又はその逆にデータを転送する時間をもたらす。何故なら、CPU102とQPU104との間の通信時間が、100μsから数秒まで変化するからである。いくつかのキュービット技術では、これは、回路を実行するのに必要な時間よりも桁違いに長いことに留意されたい。
【0033】
超伝導キュービットの場合、現在の回路実行時間は、5μs程度であり得る。非誤り訂正レジーム内では、回路実行時間は、現在、キュービットのデコヒーレンス時間によって上限が定められる。
【0034】
現在のシステムでは、古典的計算は、CPU102上で実行され、回路実行は、QPU104上で行われる。
【0035】
図2は、適応アルゴリズムを実行するためのシリアル処理スキーム200を示す。そのようなアルゴリズムでは、古典的計算202は、各回路の実行間に完了される必要がある。これにより、第1の回路の実行204からのデータを解析し、次いで、量子処理ユニットで実行される第2の回路206のパラメータを調整するか、又は実行される第2の回路206の性質を変更することが、可能になる。これには、各回路の実行間に、QPUからCPUへのデータの転送208、及び戻し210が、必要である。
【0036】
回路実行が5μsであり、単一のトリップレイテンシが100μsであると仮定すると、単一の回路及び更新ステップには、少なくとも205μsかかる。この時間のうち、QPUは、5μsしか利用されておらず、これにより、わずか2.5%のキュービット利用率がもたらされる。したがって、QPUは、97.5%の時間、アイドル状態にあり、リソースの非常に低い利用率、及びアルゴリズムを実行する時間の増加をもたらす。
【0037】
変分量子固有値ソルバー(VQE)のオリジナル仕様などの多くのハイブリッドアルゴリズムは、実行された何百回、又は更には何千回に対して、同じ回路を必要とする。これにより、回路実行のバッチ処理、すなわち、数個(場合により、多数)の「ショット」(回路実行)ごとに一回だけ、QPUとCPUとの間でデータを転送することが、可能になる。この設定では、レイテンシ時間は、全ての回路実行間で共有され、そのため、キュービット利用数にはほとんど影響しない。しかしながら、より近代的なアルゴリズムは、このパラダイムを破り、アルゴリズム性能を向上させて、キュービットハードウェアを限界まで押し上げる能力を向上させることができる。
【0038】
レイテンシの問題は、古典的ハードウェアで発生するが、QPU上の作業実行(回路)の離散ユニットは、計算におけるレイテンシに取り組む際に、従来のアプローチとは異なるアプローチを必要とする。以下に開示されるソリューションは、ソリッドステートデータストレージ及び並列コンピューティングからのデータへのアクセスなど、古典的計算における広範囲の領域から引き出される。しかしながら、それらをマージし、量子コンピューティングの文脈でこのレイテンシ問題に取り組むためには、予期しないステップが必要である。
【0039】
量子コンピューティングプラットフォーム用に特別に設計されているいくつかのクラウドコンピューティングプラットフォームに、キューイング手順を実装することができる。しかしながら、このキューイング手順は、本開示とは全く異なる問題に対処するように設計されている。これらの手順は、前述のバッチ処理動作を自然に提供するアルゴリズム用に設計されているので、多数の異なるユーザ間で少数のQPUを共有することが可能なように実装される。これらのシステムに提供される言語及びランタイムは、個々のアルゴリズム内での並列性の露出を可能にしない。更に、それらは、実行のための回路のストリームを提供する古典的部分の並列実行を可能にするインフラストラクチャを提供しない。
【0040】
本開示は、一緒になって、ハイブリッドアルゴリズムのためのQPUからCPUへのリンクのレイテンシの問題に取り組むことを可能にする、2つの部分を含む。第1の部分は、アルゴリズム内で固有の、しかし予期しない並列性を露出させるハイブリッドアルゴリズムを書くための方法論、すなわち並列抽出である。第2の部分は、レイテンシボトルネックを軽減するために、この並列性を利用するためのインフラストラクチャ、すなわち、回路スケジューリングを開示する。
【0041】
ハイブリッド量子アルゴリズムは、並列に実行され得る多くの部分、例えば、VQE内の異なるPauli演算子の期待値の推定と本質的に高度に並行し得る。しかしながら、QPUの費用を考慮すると、この並列性がランタイムに露出されなかったことを明らかにすることに利益はなかった。
【0042】
しかしながら、本開示は、利用可能な並行性を使用して、複数のQPUにわたる並列性以外の技術的問題を解決することができることを示す。並行性を使用して、QPUの未使用時間を低減することができる。これにより、(a)QPU上で動作する回路をパイプライン化すること、及び(b)回路実行を重複させること並びに古典的処理による技術的利点が、提供される。
【0043】
アルゴリズムをデータフロー表現に変換することにより、アルゴリズム内に存在する並行性が、露出される。これは、ユーザによって、又は自動的に行われ得る。データフロープログラムは、有向エッジによって接続された実行可能ノードからなる。コードノードは、計算を表し、エッジは、ノードの、前のノードの結果に対する依存性を表す。プログラムは、全体として、有向非巡回グラフ(DAG)を形成する。この形態では、古典的アルゴリズムは、ノード(DAGの頂点に対応する)に分解され、QPU上で実行される全ての回路は、エッジとして表される(エッジは、回路実行を伴うノード間の古典的データの伝送も含み得る)。データフロープログラムは、(a)コードノードがいつ実行すべきか、及び(b)要求された回路がQPUに送信される順序を決定するランタイム上で実行する。ノードは、全ての関連するインバウンドエッジの結果が受信されたときに、実行され得る。同様に、先行ノードが終了したときに、回路エッジが、QPU上で実行され得る。
【0044】
データフローグラフは、固定又は動的であり得る。固定グラフでは、コードノード及びリンクのセットは、実行前に固定される。動的グラフでは、コードノードは、(関数呼び出しを介して)追加のエッジ及びノードをグラフに追加させることができる。データフローグラフ表現は、ノード及びエッジが並列に実行され得るため、回路レベルの並行性をランタイムに露出させる。この並列性は、実行時に、適格なノード及びエッジのセットの形態でランタイムに露出され、レイテンシボトルネックの緩和を可能にする。本開示は、これにより、IOバウンド通信を管理するための技術を回路ディスパッチモデルと組み合わせる。
【0045】
本開示は、アクセラレータモデルを採用する既存の方法(例えば、TensorFlow Quantum(登録商標)、又はPennyLane(登録商標))とは根本的に異なる。このモデルでは、回路は、カーネルディスパッチレイテンシが、カーネル実行時間と比較して軽微である古典的なアクセラレータカーネルと同等とみなされる。量子コンピューティングに使用される多くのハイブリッドアルゴリズムでは、ディスパッチレイテンシは、回路実行時間よりも桁違いに長い可能性があり、そのため、この関係は、一般的なハイブリッド古典-量子アルゴリズムには存在しない。
【0046】
データフローグラフの概念を使用して、ハイブリッド古典-量子アルゴリズムの並列性を露出させることができる。グラフは、暗黙的に又は明示的に、のいずれかで構築され得る。グラフは、ランタイム内に、グラフストレージフォーマットのグラフとして明示的に、又はランタイムが実行するタスクのシーケンスとして暗黙的に、のいずれかで存在し得る。コンパイラ又は前処理ステップは、データフロー表現を抽出し得、ランタイムは、現在実行中のプログラムを記憶して、回路レベルの並列性の可用性を最大化することができる。
【0047】
可能な実装形態は、データフローグラフが、「futures」と呼ばれる言語のfeatureを使用する量子アルゴリズムの実装から自動的に抽出され得ることである。Futuresは、他の実装ではpromises又はasync関数とも呼ばれる。Futuresは、関数呼び出しの戻り値を、その呼び出しの最終的な値を表すfutureオブジェクトで置き換える。futureを返す関数を呼び出した後、ランタイムは、(a)この呼び出しが、タスクとして将来実行されるべきであることを記録し、(b)呼び出す側の関数に、最終的な呼び出しによって記入される一意のオブジェクトを提供する。このメカニズムを使用して回路レベルの並行性を露出させるために、QPU上で実行される回路を要求する関数は、futureを返す非同期関数として、ランタイムによって提供されるべきである。QPU上で実行される回路を要求する関数は、QPU実行関数と呼ばれ得る。QPU実行関数の呼び出しには、(a)評価する回路、及び、任意選択で、(b)同じ回路の反復測定を効率的に実行するための反復カウントの2つの引数が、必要である。
【0048】
この実行の一部として、ランタイムは、要求の一意の識別子を生成し、識別子を使用してfutureオブジェクトを構築して、futureオブジェクトを、要求された回路に関連付けるであろう。次に、ランタイムは、QPU実行の呼び出しの直後に開始するアルゴリズムを直ちに再開し得る。次に、アルゴリズムは、3つの可能な演算のうちの1つを実行し得る。
1. アルゴリズムは、QPU実行の更なる呼び出しを行うように進み得、更なるfutureオブジェクトの作成をもたらす。
2. アルゴリズムは、既存のデータに対して古典的処理を実行し得、これにより、同じ古典的計算ノードの一部が、形成されるであろう。アルゴリズムデザイナは、QPU実行の呼び出しが必要であることがわかったら直ちにQPU実行の呼び出しを行うことを選択して、できるだけ早く並行性を露出させるか、又はアルゴリズム設計を簡素化することができる。
3. アルゴリズムは、future値に対して古典的処理を実行し得る。これは、この処理が実行され得る前に回路futureを解かなければならないので、単一のデータフローノードの終了を示す。
【0049】
別の可能な実装形態は、ユーザが、アルゴリズムのデータフローグラフを明示的に構築することができるときに生じる。ユーザは、グラフオブジェクトを作成する。ユーザは、ノードを、そのノードを実装する関数(ノード本体関数)を提供することによって、グラフオブジェクトに追加することができる。ユーザはまた、入力及び出力エッジに関する構造情報を提供して、明示的なグラフを形成することができる。
【0050】
ユーザは、以下の方法で、構造情報を提供し得る。グラフにノードを追加するために、ユーザは、関数(graph_add)を呼び出して、ノードで実行されたに対する関数と、その関数が要求する個別の回路の数とをパスするであろう。要求される回路の数は、作成されるそれらの回路への参照を可能にするために必要である。このgraph-add関数は、回路要求の数に等しい数の、要求された回路の参照(出ていくエッジの参照)の配列をユーザに返すであろう。これらの参照をgraph_addに対するfuture呼び出しに使用して、ノードが使用することができる、入ってくる回路を指定することができる。回路要求(エッジ)への参照を利用することにより、アルゴリズムが実行される前に、アルゴリズムの完全なデータフローグラフが、定義され得る。
【0051】
データに依存する制御フローを可能にするために、ノードはまた、graph-add関数を呼び出すことができ得る。これにより、以前の回路評価の結果に依存するノードを追加することが可能になり、加速VQEなどの適応アルゴリズムが可能になる。構築により、ノードは、回路エッジによってのみ互いに参照することができるため、データフローグラフが有向非巡回グラフであることが、これにより確実になる。参照は、エッジをトリガするノードがグラフに追加された後にのみ利用可能であるため、プログラマがループを作成することはできない。グラフが有向非巡回グラフであることを確実にすることは、ランタイムが、プログラムの実行を進めることが常に可能であることを意味する。このグラフが明示的に作成されると、このグラフは、以前のようにランタイムによって実行され得る。
【0052】
以下のテキストは、例示的なコード及びコンパイル抽出を示す。
【数1】
【0053】
上記のコードは、量子アルゴリズムが、データフローグラフ様式などの非同期関数を使用して、どのように表現されているかを示す。生成されるデータフローグラフは、非同期関数呼び出しのサブセットであり、QPU実行呼び出しのみが、グラフ内のエッジに対応することに留意することが重要である。
【0054】
図3は、第1のVQEブロック300から開始して、各Pauliについて、サンプルブロックのチェーンのセットが作成されることを示し、具体的には、この例では、第1のPauli(P1)は、2つのサンプル302を含む一方、第2のPauli(P2)は、1つのサンプル304を含み、その結果が、第2のVQEブロック306に送信される。各「await QPU.run」呼び出しが、このグラフで新しいエッジを生成する。一般に、異なるPauliは、任意の数のサンプルを有し得ることが理解されるであろう。
【0055】
ここで、回路スケジューリングの概念が、詳細に開示され、重要なアイデアは、QPU上で実行される回路が常に存在するように、古典的コードの並列実行を可能にすることである。これは、古典的CPUを制御する方法の観点から、又はQPUを制御する方法の観点から、又はCPUとQPUとの両方を備える複合コンピューティングシステムの観点から定義され得ることが理解されるであろう。
【0056】
図4は、古典-量子ハイブリッドアルゴリズムの1つ以上の古典的に実行可能なノードを備える古典的コンピュータを制御するためのコンピュータ実装方法のフローチャート400を示す。古典的に実行可能なノードは、古典的CPU上で実行され得るコードモジュールである。古典的CPUは、情報が、CPUとQPUとの間でいずれかの方向に送信され得るように、量子コンピュータに動作可能に結合される。
【0057】
方法は、古典的に実行可能なノードのいずれかによって、第1の回路を、評価のために量子コンピュータに送信することによって、第1のブロック402から始まる。第2のブロック404において、関連する古典的に実行可能なノードは、量子コンピュータから第1の回路の第1回路評価を受信する。第3のブロック406において、古典的コンピュータは、関連する古典的に実行可能なノードを使用して、第1の時間間隔中に第1回路評価を処理する。
【0058】
第4のブロック408において、方法は、古典的に実行可能なノードによって、第2の回路を、評価のために量子コンピュータに送信し始める。これは、第1の回路を送信したものと同じ古典的に実行可能なノードであってもよく、又は異なるノードであってもよい。重要なことに、第2の回路は、第1の時間間隔中に少なくとも部分的に、量子コンピュータによる評価のために送信される。したがって、第2の回路の送信時間は、古典的コンピュータが第1の回路を処理している時間と(少なくとも部分的に)重複する時間に、量子コンピュータが、第2の回路を評価していることが可能であるように、第1の時間間隔の終了前の任意の時間に発生し得る。最後に、第5のブロック410において、古典的コンピュータは、量子コンピュータから第2の回路の第2回路評価を、第2回路評価を要求した関連する古典的に実行可能なノード(又は複数のノード)による処理のために、受信する。
【0059】
量子コンピュータの観点から、上記の回路評価タスクを実行する量子コンピュータを制御するためのコンピュータ実装方法が、開示される。量子コンピュータは、それ自体が、量子回路を評価することができる複数のキュービットを備える量子プロセッサユニットを含む。
【0060】
この方法は、量子コンピュータが適切に接続されている古典的コンピュータ上で実行されている古典-量子ハイブリッドアルゴリズムの1つ以上の古典的に実行可能なノードから複数の量子回路を受信することを含む。複数の量子回路は、第1の回路と、第2の回路とを含み得る。次いで、量子コンピュータは、第1の回路を評価して第1回路評価を決定し、第1回路評価を、第1回路評価を要求した古典的コンピュータ上の古典的に実行可能なノードに送り返す。第1回路評価は、第1回路評価が、第1の時間間隔中に処理され得るように、古典的コンピュータに送信される。古典的計算に関連付けられた時間間隔は、古典的プロセッサと量子プロセッサとの間の通信時間を含むことを理解することが重要である。この時間間隔を利用して、古典的プロセッサ及び量子プロセッサの両方で処理を実行することにより、システム全体の性能を劇的に向上させることができる。
【0061】
次いで、量子コンピュータは、第2の回路を評価して、第2回路評価を提供する。重要なことに、第2の回路の評価は、第2回路評価の量子処理と、第1回路評価の古典的処理との間に少なくとも部分的な時間的重複があるように、第1の時間間隔中に少なくとも部分的に、行われる。それぞれの古典的プロセッサ及び量子プロセッサで行われるこの同時処理が、上記で言及した性能の利点を提供する。次いで、第2回路評価が、第1の時間間隔の後に続いてもよい第2の時間間隔中に処理するために、関連する古典的に実行可能なノードに送信される。
【0062】
これらの方法は、量子コンピュータが、100%の時間で、又はそれに近い時間で使用され得るように、任意の数の量子回路及びそれらのそれぞれの回路評価の処理に直接一般化され得ることが理解されるであろう。
【0063】
図5は、3つの異なる回路が処理される必要がある場合の処理スキームを示す。アルゴリズムの一部として実行され得る、作業の3つの並列ストリームがある場合、方法は、ストリーム1に関連付けられた回路(第1の量子回路502)を実行することによって開始し、評価の結果504をCPUに返す。次いで、ストリーム2の回路(第2の量子回路506)を実行して、結果508を返すことが可能で、次いで、ストリーム3(第3の量子回路510)についても同様である。第3の量子回路は、第1及び/又は第2回路評価が古典的に処理されているのと同じ時間間隔中に少なくとも部分的に、量子評価に供され得る。これらの3つの回路が(タイミングに依存して)実行されると、ストリーム1の更新ステップ512が完了し、このストリームの次の回路514が、実行される準備ができているであろう。同時処理は、1つには、QPUからCPUに回路評価を転送するために必要な転送時間を生産的に利用するという理由で、性能の向上を提供する。次いで、このプロセスが、3つのストリーム全てを処理するために必要な回数繰り返され得る。
【0064】
図6は、ハイブリッド古典-量子コンピューティングシステムの概略図を示す。本開示の方法を容易にするために、インフラストラクチャの2つの重要な部分、(a)回路キュー602及び関連付けられたインプリメンタ604、並びに(b)古典的計算のためのリザルトレシーバ606が、使用され得る。回路キュー及びインプリメンタは、QPU又はCPUのいずれかと統合され得るが、最大の利益を得るために、QPUとともに位置付けられる少量の古典的計算ハードウェア上に実装され得る。QPUは、キュービット608を備える一方、CPUは、古典的に実行可能なノード610を備えることが理解されるであろう。以下の開示は、CPU及びQPUに対する回路キュー602及びインプリメンタ604の可能な状況に関する異なる選択肢を提供する。
【0065】
古典的コードブロック612(古典的に実行可能なノードの一例である)が、QPU上で計算を実行する必要がある場合、古典的コードブロック612は、問題の回路をキュー602に追加し、回路が実行されるのを待ちながら一時停止する。バッチ処理を可能にするために、この回路が実行されるべき回数(第1回路反復カウントの一例である)を、この回数が1でない場合に、アペンドすることができる。
【0066】
キュービット608上での回路評価が完了すると、第一に、インプリメンタ604をトリガして、実行される次の回路を選択する。第二に、測定結果をキュービット608からリザルトレシーバ606にパスする。
【0067】
インプリメンタ604の役割は、キュービット608上で実行される量子回路のスケジューリングである。キュービット608が回路評価を完了するとすぐに、インプリメンタ604が、キュービット608上で実行される次の回路をキュー602から選択する。これは、ランタイムにあらかじめ指定された所与のサービス規律を通して行われる。これは、先入れ先出し(FIFO)、又は回路数に依存するノードの数を考慮したより複雑なサービス規律(例えば、以下で更に考察されるバックプレッシャー)のいずれかであり得る。
【0068】
キュービット608から結果を受信すると、レシーバ606は、測定結果を、CPU内の要求している古典的コンピュータノード612及びその測定値を同様に要求した任意の他のノードにパスするであろう。更に、レシーバ606は、古典的な計算を実行できるようになった任意のノードを一時停止解除するであろう。
【0069】
リザルトレシーバ606は、CPU上に実装された単一ピースのインフラストラクチャであり得る。回路要求(同じ回路の複数のショットであり得ることに留意されたい)がキュービット608上で完了すると、結果が、アペンドされた回路要求一意識別子及び要求ノード一意識別子とともに、CPUに送り返される。キュービット608から結果を受信すると、リザルトレシーバ606は、ノード一意識別子を使用して、要求ノードを識別する。リザルトレシーバ606は、次に、回路要求一意識別子を使用して、識別されたノードが、要求ノードであることを確認する。この識別が完了すると、リザルトレシーバ606は、受信した結果をこのノードにパスし、このノードから一次停止状態を除去し、このノードは、実行を継続することができる。
【0070】
本開示は、QPU上での回路実行、及び並列性を通してQPUに継続的な要求を提供するようにオーケストレーションされ得る古典的コンピュータ上で完了される並列作業の制御に焦点を当てる。本開示のいくつかの有利な特徴を、以下に提供する。
【0071】
古典的計算は、(a)以前のノードによりブロックされていないか、又は(b)QPUからの回路実行結果を待っているかのいずれかである、データフローグラフからのノードを実行するローカルランタイムによってオーケストレーションされ得る。ここでは、任意の古典的計算が、即座に、古典的計算を実行するためのリソースを割り当てられるように、任意の量の古典的計算能力が存在すると仮定する。これは、データフローグラフのノードにわたって優先順位を付ける必要がないことを意味する。古典的計算が制限されている、すなわち、全ての可能なノードを同時に実行するのに十分な古典的計算がない場合、優先順位付けを実装して、アルゴリズムの性能を向上させることができる。可能な優先順位付けには、ランダムな優先順位付け、回路実行を含むノードに与えられる優先順位、又は更なるノードをブロック解除するノードに与えられる優先順位が含まれる。並列実行のためのメモリ制御は、従来の並列コンピューティング及びHPCからの確立されたアイデアを使用し得る。
【0072】
「並列性を露出させること」に関して上述したように、QPU.run関数は、実行される回路と、必要なショットの反復数をランタイムにパスする。次いで、このノードは、結果待ちをマークされて、一時停止される。ランタイムは、この要求に、要求ノードの一意識別番号(第1ノード一意識別子の一例である)、及びこの要求の一意識別番号(第1要求一意識別子の一例である)をアペンド(又はタグ付け)する。この要求の一意識別番号は、結果がQPUから返されると、その結果が、要求ノードに返された正しい結果であることを、要求ノードが確認できるように、ノードに戻される。
【0073】
この4つの情報(すなわち、実行される回路、ショットの数、要求ノードの一意識別番号、及び要求の一意識別番号)のリストは、回路要求キューに加わる回路要求として、QPUに送信される。キューが現在空でない場合、このリストは、キューに追加されるだけである。キューが空である場合、キュービットの状態が、(インプリメンタについて以下の段落で説明されるように)直ちにチェックされ得るが、キュービットが現在アイドル状態である場合、受信された回路が、直ちにプッシュされてキュービット上で実行される。そうでない場合、要求された回路が、キューが空でないかのように、キューに追加される。インプリメンタジのジョブは、回路要求キューから作業を取り出して、QPU上で実行することである。回路がQPU上で完了されると、インプリメンタが常に呼び出され、測定値が、次のセクションで考察される結果配信インフラストラクチャにパスされる。
【0074】
インプリメンタが呼び出されると、インプリメンタは、キューの状態をチェックする。キューが空の場合、インプリメンタは、キュービットをアイドル状態であるとしてマークし得る。キューが空でない場合、インプリメンタは、実装されるキューの要素のうちの1つを選択する。
【0075】
この開示の最も基本的なバージョンでは、インプリメンタによって使用されるサービス規律は、優先順位付けのない先入れ先出しである。代替のサービス規律は、必要に応じて実装され、ランタイムにデベロッパによって要求され得る。デベロッパは、要求ノードの優先順位に基づいた優先度レベル、又はバックプレッシャーポリシーを実装することによって、要求を増強することができる。バックプレッシャーポリシーは、それぞれのパーティションの各それぞれの回路ごとに、1つ以上の古典的に実行可能なノードのその共通の起点ノードを識別することに基づいて、複数の量子回路を分割することと、各それぞれのパーティション内に存在する回路の数を決定することと、量子回路が、最小数の回路を有するパーティションに属すると決定することとによって、実装され得る。量子回路評価の数が、他のノードに必要な数よりも少ないので、これにより、ノードが古典的計算を再開することを可能にする最も迅速な方法が、有利に提供され得る。
【0076】
QPU内のローカル計算が、このインフラストラクチャを完全にサポートできない場合、このインフラストラクチャは、QPU及びCPUの両方にわたって、又はCPU上に完全に実装され得る。CPU内に完全に実装される場合、インプリメンタ及びキューは、上記のように動作するであろうが、このときインプリメンタは、回路をQPUにストリーミングし、QPUは、入ってくる回路を、それらが実行されるまでバッファするであろう。これは、インプリメンタが、継続的に動作し、キューが空でない間、所定のレートでQPUにストリーミングすることを意味する。
【0077】
図7は、QPU702及びCPU704にわたって分割された回路キュー700の実装例を示し、ここで、コンポーネントは、以下の調整を用いて複製される。
【0078】
第一に、QPU702上の、固定長バッファの一例であるキュー706は、所定の最大数の要求を有するように制限された長さを有する。所定の最大数の要求は、QPU702に記憶され得る最大数の要求であるべきである。
【0079】
第二に、CPU704上のインプリメンタ708は、現在実行されている回路を含む、現在QPU702上に存在する回路要求の数のカウントを保持する。インプリメンタ708はこれを、インプリメンタ708がQPU702に回路要求を送信すると、カウンタを1増分し、測定値がQPU702から受信されると、カウンタを1減少させる/減分することによって、行う。このカウンタは、バッファカウンタの一例である。回路の実行が完了すると、QPUインプリメンタ712は、次いで、次の回路を、評価のためにキュービットに送信し得る。
【0080】
ここで、CPUベースのインプリメンタ708は、QPU702から結果を受信して前のように動作すると、又は空のキューへの要求を受信すると、トリガされる。後者の場合、CPUベースのインプリメンタ708は、アイドルフラグのチェックの代わりにカウンタを使用し、カウンタが、QPU上の最大キュー長さ+1を下回る場合、回路要求は、直ちにQPU702ベースのキューに送信され、そうでなければ、回路要求は、CPUベースのキュー710に記憶される。別の回路をQPU702に送信するかどうかを決定することは、バッファカウンタの値が閾値を満たす場合に、決定され得る。バッファカウンタの値は、固定長バッファ706の容量未満である、固定長バッファ706に存在する量子回路の数に、バッファカウンタの値が対応する場合、閾値を満たし得る。
【0081】
図8は、実行されると、
図1に説明されるような装置に、少なくとも、上記のいずれかの方法のステップを実行させる命令を含む例示的なコンピュータプログラム製品800を示す。同様に、コンピュータプログラム製品800に対応するコンピュータ可読メモリ媒体も、提供され得る。
【0082】
上記の開示を通して、ハードウェア上で単一のプログラムが実行されている状況に焦点が当てられてきたが、このインフラストラクチャは、QPUへのアクセスを共有する複数のプログラムの並行実行を即座にサポートする。全てのプログラムによって共有される単一のキュー及びインプリメンタを有することが可能であり、ノードの一意識別子は、プログラムだけでなくシステム全体にわたって一意であるように作成される。先に考察したように、優先順位付けが、インプリメンタによって実装され得るか、又は先入れ先出しのような単一のサービス規律が、利用され得る。
【国際調査報告】