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

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

▶ インターナショナル・ビジネス・マシーンズ・コーポレーションの特許一覧

特許7481075階層型ストレージを使用したコンピュータ上の量子回路のシミュレーション
<>
  • 特許-階層型ストレージを使用したコンピュータ上の量子回路のシミュレーション 図1
  • 特許-階層型ストレージを使用したコンピュータ上の量子回路のシミュレーション 図2
  • 特許-階層型ストレージを使用したコンピュータ上の量子回路のシミュレーション 図3
  • 特許-階層型ストレージを使用したコンピュータ上の量子回路のシミュレーション 図4
  • 特許-階層型ストレージを使用したコンピュータ上の量子回路のシミュレーション 図5
  • 特許-階層型ストレージを使用したコンピュータ上の量子回路のシミュレーション 図6
  • 特許-階層型ストレージを使用したコンピュータ上の量子回路のシミュレーション 図7
  • 特許-階層型ストレージを使用したコンピュータ上の量子回路のシミュレーション 図8
  • 特許-階層型ストレージを使用したコンピュータ上の量子回路のシミュレーション 図9
  • 特許-階層型ストレージを使用したコンピュータ上の量子回路のシミュレーション 図10
  • 特許-階層型ストレージを使用したコンピュータ上の量子回路のシミュレーション 図11
  • 特許-階層型ストレージを使用したコンピュータ上の量子回路のシミュレーション 図12
  • 特許-階層型ストレージを使用したコンピュータ上の量子回路のシミュレーション 図13
  • 特許-階層型ストレージを使用したコンピュータ上の量子回路のシミュレーション 図14
  • 特許-階層型ストレージを使用したコンピュータ上の量子回路のシミュレーション 図15
  • 特許-階層型ストレージを使用したコンピュータ上の量子回路のシミュレーション 図16
  • 特許-階層型ストレージを使用したコンピュータ上の量子回路のシミュレーション 図17
  • 特許-階層型ストレージを使用したコンピュータ上の量子回路のシミュレーション 図18
  • 特許-階層型ストレージを使用したコンピュータ上の量子回路のシミュレーション 図19
  • 特許-階層型ストレージを使用したコンピュータ上の量子回路のシミュレーション 図20
  • 特許-階層型ストレージを使用したコンピュータ上の量子回路のシミュレーション 図21
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-04-30
(45)【発行日】2024-05-10
(54)【発明の名称】階層型ストレージを使用したコンピュータ上の量子回路のシミュレーション
(51)【国際特許分類】
   G06N 10/80 20220101AFI20240501BHJP
【FI】
G06N10/80
【請求項の数】 5
(21)【出願番号】P 2022167975
(22)【出願日】2022-10-19
(62)【分割の表示】P 2020549603の分割
【原出願日】2019-04-15
(65)【公開番号】P2022191443
(43)【公開日】2022-12-27
【審査請求日】2022-10-19
(31)【優先権主張番号】15/974,326
(32)【優先日】2018-05-08
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレーション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
【住所又は居所原語表記】New Orchard Road, Armonk, New York 10504, United States of America
(74)【代理人】
【識別番号】100112690
【弁理士】
【氏名又は名称】太佐 種一
(74)【代理人】
【識別番号】100120710
【弁理士】
【氏名又は名称】片岡 忠彦
(72)【発明者】
【氏名】エドウィン ピーター ドーソン ペノール
(72)【発明者】
【氏名】ジャコモ ナニッチーニ
(72)【発明者】
【氏名】ジョン グンネルス
(72)【発明者】
【氏名】リオル ホレッシュ
【審査官】青木 重徳
(56)【参考文献】
【文献】米国特許出願公開第2015/0186587(US,A1)
【文献】米国特許出願公開第2015/0339417(US,A1)
【文献】国際公開第2017/078734(WO,A1)
【文献】ZHAO-YUN CHEN; ET AL,64-QUBIT QUANTUM CIRCUIT SIMULATION,ARXIV.ORG,CORNELL UNIVERSITY LIBRARY,2018年02月20日,P.1-16,http://dx.doi.org/10.1016/j.scib.2018.06.007
【文献】ANDERSON AVILA; ET AL,OPTIMIZING D-GM QUANTUM COMPUTING BY EXPLORING PARALLEL AND DISTRIBUTED QUANTUM ,2016 IEEE CONGRESS ON EVOLUTIONARY COMPUTATION (CEC),IEEE,2016年07月,PAGE(S):5146 - 5153,http://dx.doi.org/10.1109/CEC.2016.7748342
【文献】PEDNAULT, Edwin,Breaking the 49-Qubit Barrier in the Simulation of Quantum Circuits,arXiv:1710.05867v1,2017年10月16日,[検索日:2022年7月27日],インターネット<URL:https://arxiv.org/pdf/1710.05867v1.pdf>
【文献】柴田 章博 ほか,量子計算の並列シミュレーションにおける通信量削減手法,電子情報通信学会論文誌 D,日本,社団法人電子情報通信学会,2010年,Vol.J93-D, No.3,pp.253-264
(58)【調査した分野】(Int.Cl.,DB名)
G06N 10/80
JSTPlus/JMEDPlus/JST7580(JDreamIII)
IEEE Xplore
THE ACM DIGITAL LIBRARY
(57)【特許請求の範囲】
【請求項1】
プロセッサに動作可能なように結合されたデバイスによって、量子回路の機械可読の仕様を含んでいる入力量子回路をシミュレートすることを含んでいるコンピュータ実装方法であって、前記シミュレートすることが、
テンソル・スライシングのために識別された量子ビットの少なくとも2つのグループに基づいて、前記入力量子回路をメタ部分回路に分割することであって、前記メタ部分回路のうちの少なくとも1つのメタ部分回路のメモリ容量が、単一のプロセッサのメモリ容量を超える、前記分割することと、
メタ部分回路を単一のプロセッサの前記メモリ容量内に収まる下位部分回路にさらに分割することと、
前記下位部分回路に対してテンソルを計算することと、
テンソル・スライシングによって、前記テンソルをテンソル・スライスに縮小させることと
を含んでいる、前記コンピュータ実装方法。
【請求項2】
前記デバイスによって、別の部分回路のゲートを前記テンソル・スライスに適用して、量子状態データを表す更新されたテンソル・スライスを取得することと、前記更新されたテンソル・スライスを二次ストレージに格納することとをさらに含んでいる、請求項1に記載のコンピュータ実装方法。
【請求項3】
前記デバイスによって、前記更新されたテンソル・スライスを前記二次ストレージから取り出すことと、さらに他の部分回路のゲートを前記更新されたテンソル・スライスに適用して、さらに更新されたテンソル・スライスを取得することとをさらに含んでいる、請求項2に記載のコンピュータ実装方法。
【請求項4】
前記二次ストレージが、1つまたは複数のディスク・デバイスを備えており、メタ・スライスを微小スライスに構造化することをさらに含んでおり、前記微小スライスのサイズが、前記二次ストレージの少なくとも2つのディスク・セクタにわたり、前記更新されたテンソル・スライスを前記二次ストレージに前記格納することが、前記微小スライスを格納することを含んでいる、請求項2又は3に記載のコンピュータ実装方法。
【請求項5】
量子回路の機械可読の仕様を含んでいる入力量子回路を含む量子回路をシミュレートするためのコンピュータ・プログラムであって、前記デバイスに、請求項1ないし4のいずれか1項に記載の方法を実行させるためのコンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、一般に、量子コンピューティングに関連しており、より詳細には、量子回路をシミュレートすることに関連している。量子情報処理(量子コンピューティング)は、従来の機械計算では解決困難な特定のカテゴリの数学的問題を解決する可能性がある。量子コンピュータは、情報をエンコードするために量子ビット(quantum bits)(量子ビット(qubits))を採用し、ここで、量子ビットは量子情報の基本単位である。量子回路は、量子ビットの重ね合わせおよび量子ビットのもつれなどの、量子力学的現象に基づく。
【背景技術】
【0002】
量子コンピューティングの潜在的利益にもかかわらず、量子回路は、構築するのが困難であり、高額な費用を要し、スケーリングおよび量子デコヒーレンスなどのさまざまな問題を抱えている。したがって、回路の忠実性を定量化し、測定された結果に対して量子状態の振幅を計算する能力に基づく正しさ、性能、およびスケーリングを評価することなどのために、市販されている従来の(非量子)コンピュータを使用した量子回路のシミュレーションが採用されている。しかし、量子ビットの数と共に振幅の数が指数関数的に増大するため、既存の手法を使用して、測定された結果に対して量子状態の振幅を計算することは、急速に解決困難になり、強力なスーパーコンピュータ上でさえ、使用可能なコンピューティング・リソースを圧倒する。実際、1つの最近の公開文献であるBOIXO, et al., "Characterizing quantum supremacy in near-termdevices," ARTICLES, Nature Physics (2018), doi:10.1038/s41567-018-0124-xでは、「7×7の量子ビットおよび約40サイクルの深さを有する回路の出力振幅の計算は、現在実行不可能である」と述べられている。したがって、量子回路シミュレーションは、比較的少数の量子ビットおよび浅い回路の深さを有する回路に制限されてきた(回路の深さは、任意の特定の層で、多くても1つのゲートが特定の1量子ビットに作用するような方法で回路を分割できる、層の数である)。
【先行技術文献】
【特許文献】
【0003】
【文献】米国特許出願第15/713,323号
【非特許文献】
【0004】
【文献】BOIXO, et al., "Characterizing quantum supremacy in near-term devices," ARTICLES, Nature Physics(2018),doi:10.1038/s41567-018-0124-x
【文献】Thomas Haner and Damian S Steiger, “0.5 petabyte simulation of a 45-qubit quantum circuit,” arXiv preprint arXiv:1704.01127, (2017)
【文献】Riling Li, Bujiao Wu, Mingsheng Ying, Xiaoming Sun, and Guangwen Yang, “Quantum Supremacy Circuit Simulation on Sunway Taihu Light,”arXiv preprintarXiv:1804.04797, (2018)
【発明の概要】
【発明が解決しようとする課題】
【0005】
本発明は、量子回路をシミュレートすることを目的とする。
【課題を解決するための手段】
【0006】
以下に、本発明の1つまたは複数の実施形態の基本的理解を可能にするための概要を示す。この概要は、主要な要素または重要な要素を特定するように意図されておらず、また本発明の特定の実施形態の任意の範囲または特許請求の範囲の任意の範囲を正確に説明するように意図されていない。この概要の唯一の目的は、後で提示されるより詳細な説明のための前置きとして、概念を簡略化された形態で提示することである。
【0007】
本発明の一実施形態によれば、システムは、量子回路の機械可読の仕様を含んでいる入力量子回路を、テンソル・スライシング(tensor slicing)のために識別された量子ビットの少なくとも2つのグループに基づいて部分回路に分割する、分割コンポーネントを備え、これらの部分回路は、テンソル・スライシングに使用される量子ビットの関連付けられたセットを含む。シミュレーション・コンポーネントは、部分回路に基づく各段内の入力量子回路を、1つの部分回路につき1つの段ずつ、シミュレートされた量子状態テンソル(quantum state tensor)にシミュレートし、部分回路に関連付けられた量子ビットのセットが、入力量子回路に対してシミュレートされた量子状態テンソルを量子状態テンソル・スライス(quantum state tensor slices)に分割するために使用され、その部分回路内の量子ゲートが、量子状態テンソル・スライスを更新された量子状態テンソル・スライスに更新するために使用される。読取り/書込みコンポーネントは、シミュレートされた量子状態テンソルの更新された量子状態テンソル・スライスを、微小スライスとして二次ストレージに格納する。
【0008】
読取り/書込みコンポーネントは、二次ストレージの少なくとも2つのディスク・セクタにわたるサイズを有する微小スライスを書き込んでよい。読取り/書込みコンポーネントは、更新された量子状態テンソル・スライスを二次ストレージからさらに取り出してよく、シミュレーション・コンポーネントは、別の部分回路を他の部分回路テンソル(sub-circuit tensors)に処理し、二次ストレージから取り出された更新された量子状態テンソル・スライスを使用して、他の部分回路テンソルをさらに更新された量子状態テンソル・スライスに更新してよい。
【0009】
本発明の一実施形態によれば、コンピュータ実装方法が、量子回路の機械可読の仕様を含んでいる入力量子回路を処理することを含む。この処理することは、テンソル・スライシングのために識別された量子ビットの少なくとも2つのグループに基づいて、入力量子回路を部分回路のグループに分割することを含み、これらの部分回路のグループは、テンソル・スライシングに使用される量子ビットの関連付けられたセットを含む。入力量子回路をシミュレートされた量子状態テンソルにシミュレートすることは、1つの部分回路につき1つの段ずつ、部分回路のグループに基づく各段内で発生し、部分回路に関連付けられた量子ビットのセットが、入力量子回路に対してシミュレートされた量子状態テンソルを量子状態テンソル・スライスに分割するために使用され、部分回路内の量子ゲートが、量子状態テンソル・スライスを更新された量子状態テンソル・スライスに更新するために使用される。この方法は、シミュレートされた量子状態テンソルの更新された量子状態テンソル・スライスを、微小スライスとして二次ストレージに格納することを含む。
【0010】
1つまたは複数の実施形態によれば、量子回路の機械可読の仕様を含んでいる入力量子回路を含む量子回路をシミュレートするためのコンピュータ・プログラム製品が提供される。この製品は、コンピュータ可読ストレージ媒体と、ストレージ媒体に格納されたプログラム命令とを備える。これらのプログラム命令は、プロセッサに、テンソル・スライシングのために識別された量子ビットの少なくとも2つのグループに基づいて入力量子回路を部分回路のグループに分割させるために、処理コンポーネントによって実行可能であり、これらの部分回路のグループは、テンソル・スライシングに使用される量子ビットの関連付けられたセットを含む。さらに命令は、部分回路のグループに基づく各段内の入力量子回路を、1つの部分回路につき1つの段ずつ、シミュレートされた量子状態テンソルにシミュレートし、部分回路に関連付けられた量子ビットのセットが、入力量子回路に対してシミュレートされた量子状態テンソルを量子状態テンソル・スライスに分割するために使用され、部分回路内の量子ゲートが、量子状態テンソル・スライスを更新された量子状態テンソル・スライスに更新し、入力量子状態回路に対してシミュレートされた量子状態テンソルの更新された量子状態テンソル・スライスを微小スライスとして二次ストレージに格納するために使用される。
【0011】
さらに命令は、別の部分回路を他の部分回路テンソルに処理することと、更新された量子状態テンソル・スライスを二次ストレージから取り出すことと、二次ストレージから取り出された更新された量子状態テンソル・スライスを使用して他の部分回路テンソルをさらに更新された量子状態テンソル・スライスに更新することとを含んでよい。シミュレートされた量子状態テンソルの更新された量子状態テンソル・スライスを微小スライスとして二次ストレージに格納することは、微小スライスを二次ストレージの少なくとも2つのディスク・セクタに格納することを含んでよい。
【0012】
1つまたは複数の実施形態によれば、少なくとも2つのプロセッサに動作可能なように結合されたデバイスによって実行可能なコンピュータ実装方法が、量子回路の機械可読の仕様を含んでいる入力量子回路をシミュレートすることを含む。このシミュレートすることは、テンソル・スライシングのために識別された量子ビットの少なくとも2つのグループに基づいて、入力量子回路をメタ部分回路(meta sub-circuits)に分割することを含み、これらのメタ部分回路のうちの少なくとも1つのメタ部分回路のメモリ容量が、単一のプロセッサのメモリ容量を超える。この方法は、メタ部分回路を単一のプロセッサのメモリ容量内に収まる下位部分回路にさらに分割することと、下位部分回路に対してテンソルを計算することと、テンソル・スライシングによって、テンソルをテンソル・スライスに縮小させることとを含む。
【0013】
この方法は、別の部分回路のゲートをテンソル・スライスに適用して、量子状態データを表す更新されたテンソル・スライスを取得することと、更新されたテンソル・スライスを二次ストレージに格納することとをさらに含んでよい。この二次ストレージは、1つまたは複数のディスク・デバイスを備えることができ、この方法は、量子状態データを微小スライスに構造化することをさらに含んでよく、この微小スライスのサイズは、二次ストレージの少なくとも2つのディスク・セクタにわたる。
【0014】
1つまたは複数の実施形態によれば、量子回路の機械可読の仕様を含んでいる入力量子回路を含む量子回路をシミュレートするためのコンピュータ・プログラム製品が提供される。この製品は、コンピュータ可読ストレージ媒体と、ストレージ媒体に格納されたプログラム命令とを備える。これらのプログラム命令は、プロセッサに、テンソル・スライシングのために識別された量子ビットの少なくとも2つのグループに基づいて、入力量子回路をメタ部分回路に分割させるために、処理コンポーネントによって実行可能であり、これらのメタ部分回路のうちの少なくとも1つのメタ部分回路のメモリ容量が、単一のプロセッサのメモリ容量を超える。これらのプログラム命令は、メタ部分回路を単一のプロセッサのメモリ容量内に収まる下位部分回路にさらに分割し、下位部分回路に対してテンソルを計算し、テンソル・スライシングによって、テンソルをテンソル・スライスに縮小させる。
【図面の簡単な説明】
【0015】
図1】本発明の一実施形態に従って、本明細書に記載された技術に基づいて量子回路のシミュレーションを実装するためのコンポーネントのブロック図である。
図2】本発明の一実施形態に従って、本明細書に記載された技術に基づいて量子回路をシミュレートするためのフロー図である。
図3】本発明の一実施形態に従って、単一のプロセッサのメモリに広がる量子状態データのテンソル・スライスを含んでおり、さらなるテンソル・スライシングおよび処理のために、単一のプロセッサのメモリ容量内に収まる下位部分回路に分割された対応するメタ部分回路を含んでいる、メタ・スライスの表現である。
図4】本発明の一実施形態に従う、ランダムに生成された量子回路のクラスに通常は属する深さ55の49量子ビットの量子回路の表現である。
図5】本発明の一実施形態に従う、量子回路シミュレーションのために分割された深さ55の49量子ビットの量子回路の表現である。
図6】本発明の一実施形態に従う、量子回路シミュレーションのために分割された深さ83の49量子ビットの量子回路の表現である。
図7】本発明の一実施形態に従う、量子回路シミュレーションのために分割された深さ83の49量子ビットの量子回路の表現である。
図8】本発明の一実施形態に従う、量子回路シミュレーションのために分割された深さ111の49量子ビットの量子回路の表現である。
図9】本発明の一実施形態に従う、量子回路シミュレーションのために分割された深さ111の49量子ビットの量子回路の表現である。
図10】本発明の一実施形態に従う、量子回路分割動作のフロー図である。
図11】本発明の一実施形態に従う、一連の量子回路分割動作のフロー図である。
図12】本発明の一実施形態に従う、図11の量子回路分割動作の追加の詳細のフロー図である。
図13】本発明の一実施形態に従う、量子回路の事前分割最適化の図である。
図14】本発明の一実施形態に従う、量子回路の事前分割最適化の図である。
図15】本発明の一実施形態に従う、量子回路の事前分割最適化の図である。
図16】本発明の一実施形態に従う、量子回路実行動作のフロー図である。
図17】本発明の一実施形態に従う、図16の量子回路実行動作の追加の詳細のフロー図である。
図18】本明細書に記載された技術のさまざまな態様を実装するためのシステムのブロック図である。
図19】本明細書に記載された技術のさまざまな態様を実装するためのコンピュータ実装方法のブロック図である。
図20】本明細書に記載された技術のさまざまな態様を実装するための別のコンピュータ実装方法のブロック図である。
図21】本明細書に記載された本発明の1つまたは複数の実施形態を容易にすることができる動作環境のブロック図である。
【発明を実施するための形態】
【0016】
以下の詳細な説明は、単に例にすぎず、本発明の実施形態、または本発明の実施形態の適用もしくは使用、あるいはその両方を制限するように意図されていない。さらに、先行するセクションまたは「発明を実施するための形態」のセクションで提示された、いずれかの明示されたか、または暗示された情報によって制約されるという意図はない。
【0017】
ここで、図面を参照して本発明の1つまたは複数の実施形態が説明され、図面全体を通じて、類似する参照番号が、類似する要素を参照するために使用されている。以下の説明では、説明の目的で、本発明の実施形態を十分に理解できるように、多数の特定の詳細が示されている。しかし、これらの特定の詳細がなくても、さまざまな事例において、本発明の実施形態が実践され得るということは明らかである。
【0018】
さらに、本発明は特定の例示的なアーキテクチャに関して説明されるが、本発明の範囲内で、他のアーキテクチャ、構造、または動作、あるいはその組合せに変更できるということが理解されるべきである。
【0019】
本明細書において説明されているように、従来のコンピュータ上でシミュレートされる「入力量子回路」が、実際には量子回路の機械可読の仕様のことを指すということが、理解されるべきである。量子ビットなどの要素が別の要素に結合されているか、または接続されていると見なされる場合、その要素は他の要素に直接結合または接続されているか、あるいは存在することがある1つまたは複数の介在する要素によって、他の要素に間接的に結合または接続されている可能性があるということも理解されるであろう。これに対して、ある要素が「直接」結合または接続されていると見なされる場合、およびそのように見なされるときにのみ、介在する要素が存在せず、すなわち、ある要素が別の要素に「直接接続されている」か、または「直接結合されている」と見なされる場合、およびそのように見なされるときにのみ、介在する要素が存在しない。
【0020】
本明細書における本原理の「1つの実施形態」または「一実施形態」およびその他のそれらの変形への言及は、実施形態に関連して説明される特定の特徴、構造、特性などが、本発明の少なくとも1つの実施形態に含まれることを意味している。したがって、本明細書全体のさまざまな場所に現れる「1つの実施形態では」または「一実施形態では」という語句、あるいは任意のその他の変形は、必ずしもすべてが同じ実施形態を参照しているわけではない。
【0021】
既存の量子回路シミュレーションに伴う問題は、量子回路をシミュレートするために大量のメモリが必要になるということであり、メモリ制限のため、通常、49量子ビットを超えるのは不可能であるか、または少なくとも実用的ではないと考えられている。より詳細には、量子ビットの7×7配列は、49量子ビットの可能性のある状態を表すために249個のメモリ値を必要とし、2つの8バイト浮動小数点値を使用して(複素数の)量子ビット状態情報を格納する場合、8ペタバイトのストレージが必要であり、56量子ビット回路は1エクサバイトのストレージを必要とする。
【0022】
本明細書では、テンソル・スライシング手法と共に、量子シミュレーションにおいて量子状態を表すためにテンソルを使用することが説明されており、これによって、メイン・メモリ内で量子状態全体を具体化することを必要とせずに、スライス内で回路の量子状態を計算できるようにする。本明細書では、計算が相対的に大きいテンソル・スライスに構造化されることが、さらに説明される。なおさらに、理解されるように、量子状態をメモリ内の妥当な回路の深さまで計算した後に、二次ストレージが使用され、ここで、相対的に大きいテンソル・スライスのため、二次ストレージの使用が効率的になり得る。さらに、本明細書では、量子回路分割における選択をデータ構造化の選択と組み合わせることに基づいて、二次ストレージの効率的使用が説明され、この効率的使用によって、二次ストレージに対する全体的な読取り/書込みサイクルの数、ならびに読取りおよび書込みが実行される効率を同時に最適化する。
【0023】
「二次ストレージ」(または階層型ストレージ)が、本明細書において説明されているように、少なくとも1つのレベルの二次ストレージを含むということに注意するべきである。理解されるように、本明細書に記載されたフレームワークは、1つ(二次)または複数のレベルのストレージに対処するように一般化され得る。任意のそのようなストレージ・レベルは、それ自身の容量およびアクセス特性を含むことができ、これらが、シミュレーション計算およびストレージ割当てにおいて考慮され得る。したがって、本明細書に記載された技術は、どの物理的ハードウェアまたはストレージ・デバイスの種類にも限定されず、データを微小スライスに構造化するための、データをハードウェア・デバイス間でブロック単位で転送できるようにする任意のデバイスまたはデバイスの組合せを使用することができる。
【0024】
本明細書において使用されるとき、(例えば、量子部分回路に関して)「シミュレートする」および「実行する」という用語は、(何かの現実の単なる近似である多くのシミュレーションとは対照的に)本明細書で開示された量子回路シミュレーション手法が、現実の計算的に有効な結果をもたらすという点において、基本的に同義語である。本明細書において使用されるとき、「インデックス変数」または同様の語句は、目的のデータまたはメモリ位置あるいはその両方にアクセスすることをもたらす任意の種類のメモリ・アドレス指定またはインデックス付与のことを指す。
【0025】
本明細書で開示された本発明の実施形態の少なくとも一部は、通常仮定されるメモリより少ないメモリを使用して量子回路がシミュレートされてよいということを認識する。例えば、本明細書で開示された本発明の実施形態の少なくとも一部は、X量子ビットを含んでいる量子回路を表してシミュレートするために必要なメモリを、2個の複素数値からその量のごく一部に縮小する。より詳細には、本明細書で開示された本発明の実施形態の少なくとも一部は、量子回路素子を部分回路のうちの2つ以上にもつれさせることによって、量子回路が部分回路に分割されてよいということを認識する。本明細書で開示された本発明の実施形態の少なくとも一部は、一部の部分回路のシミュレーション結果がスライス内で計算されてよく、そうすることによって、量子回路全体をシミュレートするために必要な作業メモリを、従来の予想と異なり、大幅に削減できるということをさらに認識する。
【0026】
ここで、類似する番号が同じ要素または類似する要素を表している各図面を参照すると、図1は、本明細書に記載された技術が実装され得る一般的なシステム100を示している。図1の例では、プロセッサ102、メモリ104、および二次ストレージ106が、従来の(非量子)コンピュータ(スーパーコンピュータであってよい)の形態で提供されている。分割コンポーネント108は、入力量子回路(すなわち、シミュレーション用の量子回路の機械可読の仕様)を処理して、入力量子回路を、本明細書において説明されているように、テンソル(配列)として表されたメモリ104内の部分回路に分割する。
【0027】
テンソル・スライシング・コンポーネント110は、メモリ104内のテンソルをスライスし、シミュレーション・コンポーネント112は、例えばゲートを適用して、各段内の入力量子回路を、1つの部分回路につき1つの段ずつシミュレートし、入力量子状態回路のシミュレートされた量子状態テンソルを提供する。二次ストレージ(との)読取り/書込みコンポーネント114は、入力量子状態回路のシミュレートされた量子状態テンソルのスライスを二次ストレージに格納し、入力量子状態回路のシミュレートされた量子状態テンソルのスライスを二次ストレージ106から取り出し、テンソル・スライシングに使用される結合された量子ビットに従って、二次ストレージを微小スライスに構造化し、量子ビットの特定のセットのスライスが、複数の微小スライスとして格納され、取り出される。
【0028】
図2は、図1のコンポーネントの例示的な動作を要約している。動作202は、入力量子回路(の機械可読の仕様)を受信することを表している。動作204は、入力量子回路を解析して、テンソル・スライシングに使用される量子ビットの少なくとも2つのグループを識別する。動作206は、量子ビットのグループに基づいて、入力量子回路を複数の部分回路に分割し、このようにして結果として得られたすべての部分回路は、テンソル・スライシングに使用される量子ビットの関連付けられたセットを含む。
【0029】
動作208は、各段内の入力量子回路を、1つの部分回路につき1つの段ずつシミュレートすることを表している。部分回路に関連付けられた量子ビットのセットが、入力量子状態回路のシミュレートされた量子状態テンソルをスライスに分割するために使用され、その部分回路内の量子ゲートが、スライスを更新するために適用される。
【0030】
動作210は、入力量子状態回路のシミュレートされた量子状態テンソルのスライスを二次ストレージ106(図1)に格納することを表している。動作212は、入力量子状態回路のシミュレートされた量子状態テンソルのスライスを二次ストレージ106から取り出すことを表している。動作214は、テンソル・スライシングに使用される量子ビットの結合されたセットに従って、二次ストレージを微小スライスに構造化することを表しており、量子ビットの特定のセットのスライスが、微小スライスのセットとして格納され、取り出される。
【0031】
本明細書において説明されているように、二次ストレージのコストを最小限に抑えるために、計算が、「メタ」スライスと呼ばれるかなり大きいテンソル・スライスに構造化される。一般に、テンソル・スライスが大きくなるほど、二次ストレージに対する必要な読取り/書込みサイクルが少なくなる。図3に表されているように、「メタ」スライス330は、集合体メイン・メモリ104内に収まることができる必要があるが、必ずしも、単一のプロセッサ(処理ノード)のメモリ(例えば、プロセッサ1 302(1)の場合、プロセッサ1のメモリ304(1))内に収まる必要はない。各「メタ」部分回路内のゲートを適用する際の通信を最小限に抑えるために、各下位部分回路をプロセッサ間スライシングに使用して、既知のテンソル・スライシング戦略(図1のテンソル・スライシング・コンポーネント110の部分のインスタンス334(1)~344(n))を適用できるように、次に、対応する「メタ」部分回路332が、(例えば、図1の分割コンポーネント108によって)下位部分回路334(1)~344(n)にさらに分割される。
【0032】
例えば、計算において、1つの公開されている方法(Thomas Hanerand Damian S Steiger, “0.5petabyte simulation of a 45-qubit quantum circuit,” arXiv preprint arXiv:1704.01127, (2017))を適用できる。この参考文献では、部分回路内のすべてのゲートを適用して、処理ノード間で量子状態情報を通信せずにスライスごとに量子状態テンソルを更新できるように、回路が分割される。この参考文献では、回路分割およびテンソル・スライシングに関して、「グローバル」量子ビットが、スライスされているテンソル・インデックスに対応する処理ノード全体にインデックスを付与するために使用され、「ローカル」量子ビットが、各処理ノードに格納されたテンソル・スライスにインデックスを付与するために使用されているテンソル・インデックスに対応する。部分回路内のすべての非対角ゲート(non-diagonal gates)が「ローカル」量子ビットのみに適用されている場合、通信なしでの更新が可能である。事実上、回路は、「ローカル」量子ビットの異なるサブセットを選択し、対応する部分回路を生成するためにどのゲートを適用できるかを解析することによって、分割される。シミュレーション中に、シミュレーションがある部分回路から別の部分回路に切り替わるときにのみ、処理ノード間で通信が発生する。これらの通信フェーズの間に、次にシミュレートされる部分回路の必要性に従って、処理ノード全体に「グローバルに」インデックスを付与し、一方、個々のノードのメモリ内で「ローカルに」インデックスを付与するために、インデックスの新しいサブセットが使用されるように、量子状態テンソルのメモリ・レイアウトが再編成される。
【0033】
これに対して、本明細書では回路分割が説明され、この回路分割では、結果として得られたテンソルが二次ストレージに格納され、結果として得られたテンソルの「メタ」スライスを使用可能な集合体メモリに読み込み、部分回路のゲートをこれらのメタ・スライスに適用し、その後、更新されたメタ・スライスを二次ストレージに再び書き込むことによって、量子状態が部分回路ごとに更新される。それにもかかわらず、メタ・スライスの対応するサブスライスが個々のプロセッサのメモリ内に収まるように、各部分回路を下位部分回路にさらに分割することによって、前述の公開された方法が、ある程度、活用され得る。
【0034】
本明細書において図10図17を参照して説明される回路分解方法は、初めて二次ストレージに書き込むことが必要になる前に、完全にメモリ内で量子状態を妥当な深さまで計算することによって、プロセス全体をブートストラップするために使用され得る。例として、図5は、回路の深さ27まで49量子ビットをシミュレートするための分割(例えば、2017年9月22日に出願された米国特許出願第15/713,323号において説明されているように)を回路の深さ55に拡張できる方法を、ストレージの1読取り/書込みサイクルで表している。下で説明される図6および図7は、回路の深さ27まで49量子ビットをシミュレートするための分割を回路の深さ83に拡張できる方法を、ストレージの2読取り/書込みサイクルで表しており、図8および図9は、回路の深さ27まで49量子ビットをシミュレートするための分割を回路の深さ111に拡張できる方法を、ストレージの3読取り/書込みサイクルで表しているなどのように、任意の深さまで同様に拡張可能である。
【0035】
図4の例は、通常は、ランダムに生成された量子回路のクラスに属する49量子ビット、深さ55の量子回路を示している。この例では、量子ビットが7×7配列に配置されている。特定の7×7の正方形は、時間のスライス、および量子ビットに適用されるゲート(例えば、各レベルで適用されるゲート)を表している(左端に、レベル(例えば、0、9、17、…49)が示されている)。レベル0は、初期化レベルである。黒い点の対(各対が、灰色の背景に囲まれている)は、制御Z(CZ:controlled-Z)ゲートを表している。白い背景を有する他の灰色の点は、さまざまな単一量子ビット・ゲートを表している。
【0036】
図5は、図4に示されている回路の部分回路への分割およびスライシングを示しており、これによって、量子回路を、現在使用可能なコンピューティング・システム上でシミュレートできるようにする。理解されるように、本明細書において説明されているように、複数のレベルの粒度(例えば、テンソルのメタ・スライスから微小スライスまで)が、任意の回路の深さまでのシミュレーションを可能にする。
【0037】
図5の分割方式では、特定の正方形は、7×7量子ビットの配列の時間のスライス、および量子ビットに適用されるゲート(例えば、各レベルで適用されるゲート)を表している(左端に、レベル(例えば、0、9、17、…49)が示されている)。レベル0は、初期化レベルである。
【0038】
図5のこの例では、量子回路の量子ビット(ゲートに対応する)には、1~4の番号でラベルが付けられている。番号「1」(濃い灰色の背景の上)で識別される量子ビットは、1つの部分回路に属するゲートを表し、番号「2」(非常に薄い灰色の背景を有する)で識別される量子ビットは、別の部分回路に属するゲートを表し、番号「3」(中間の灰色から濃い灰色までの背景を有する)で識別される量子ビットは、第3の部分回路に属するゲートを表し、番号「4」(薄い灰色から中間の灰色までの背景を有する)で識別される量子ビットは、第4の部分回路に属するゲートを表す。部分回路(例えば、1および2によって識別される)をもつれさせることができ、ここで、ブリッジ・ゲートは、制御Z(CZ)ゲートである(ここで、量子ビットのうちの1つが、パウリZ演算が他の量子ビットに適用されるかどうかを決定する)。例えば、回路をシミュレートする能力に影響を与えることなく、これらのCZゲートを、いずれかの部分回路に割り当てることができ、例えば図5に示されているように、最下部の部分回路に任意に割り当てることができる。
【0039】
量子ビット番号付けは(陰影付けと共に)、テンソルの縮小およびスライシングのために部分回路間でゲートを分割する1つの方法を示している。一般に、このプロセスは、最初に深さ27まで動作し、量子ビットの最後の7行の値にわたってループして、計算を適用する。図5の例では、レベル27を超えて広がるために、二次ストレージが使用される。すなわち、分割は、3として識別された量子ビット/ゲートに適用され、その後、4として識別された量子ビット/ゲートに適用される。
【0040】
より詳細には、図5の例では、部分回路1および2のテンソルが、既知の方法で計算される。7量子ビットの最下部の行をスライスすることによって、2つの結果として得られたテンソルが64TBのスライスに縮小される。2のラベルが付けられた量子ビットに対応する量子ビットの最下部の行が、第1のフェーズ(フェーズ1)でスライスされる(強調するために、2のラベルが付けられた量子ビットの最後の行は、ラベル付きの行541である)。3のラベルが付けられた量子ビットに対応する量子ビットの最上部の行が、第2のフェーズ(フェーズ2)でスライスされる(強調するために、3のラベルが付けられた量子ビットの最上部の行は、ラベル付きの行542である)。
【0041】
部分回路3内のゲートが各スライスに適用されるが、この場合、部分回路3が深さ27を超えて深さ55まで広がり、更新されたスライスがストレージに送信される。部分回路4の場合、最上部の7量子ビットをスライスして、64TBのスライスがストレージから取り出され、更新されたスライスがストレージに返送される。
【0042】
図6図9に関しては、部分回路5の場合、最下部の7量子ビットが再度スライスされ、ストレージから取り出された64TBのスライスを生成し、その後、更新されたスライスがストレージに返送される。図6および図7(回路の深さ83)では、量子ビットの最下部の行も、第3のフェーズ(フェーズ3)でスライスされる(最後の行に、643のラベルが付けられている)。部分回路6の場合、最上部の7量子ビットがスライスされて、ストレージから64TBのスライスを取り出し、更新されたスライスが処理されるか、またはストレージに再び返送される。図8および図9(回路の深さ111)では、量子ビットの最下部の行が第3のフェーズ(フェーズ3)でスライスされ、量子ビットの最上部の行が第4のフェーズ(フェーズ4)でスライスされる(最上部の行に、744のラベルが付けられている)。
【0043】
したがって、本明細書に記載された技術は、二次ストレージを活用することによって、7×7量子ビット、深さ27のランダムな回路の分割をより大きい深さに拡張すると同時に、読取り/書込みサイクルの数を最小限に抑えることを可能にする。この分割方式を使用して、既知の方法で生成された7×7量子ビット、深さ55のランダムな回路を、1読取り/書込みサイクル(図5)のみを使用してシミュレートすることができ、7×7量子ビット、深さ583のランダムな回路を、2読取り/書込みサイクル(図6および図7)のみを使用してシミュレートすることができるなどのように、少なくとも深さ111(図8および図9)までシミュレートすることができる。
【0044】
深さ55の回路の場合、部分回路1および2のテンソルが最初に計算され、結果として得られたテンソルの対が、一度に1スライスずつ、縮小される。スライシングは、部分回路1のテンソルを使用して縮小を実行する前に、量子ビット43~49の可能性のある値にわたってループし、これらの値に対して部分回路2のテンソルをスライスすることによって進む。次に、128個の結果として得られた縮小スライスごとに、図5の部分回路3に属するゲートが縮小結果に適用され、結果として得られた更新されたスライスが、二次ストレージに転送される。スライスし、縮小し、ゲートを適用し、そして二次ストレージへ結果を送信することというこのプロセスが、この例では128回(量子ビット43~49の128個の可能性のある値ごとに1回)繰り返される。
【0045】
深さ55のシミュレーションを完了するために、図5の部分回路4に属する深さ55までのゲートが、二次ストレージに転送された中間結果に適用される。これらのゲートの適用は、今回は量子ビット1~7に対してスライスする各スライスにおいて、同様に実行され得る。二次ストレージからの取り出しが確実に効率的に実行されることを保証するために、データを、量子ビット1~7および43~49の値によってインデックス付けされた214個の微小スライスとして、二次ストレージ内で構造化することができ、各微小スライスは、量子ビット8~42に対応する235個の複素振幅を含む。したがって、部分回路3内のゲートを適用する前述したフェーズでは、スライスされている量子ビット43~49の128個の値ごとに、量子ビット1~7の128個の可能性のある値に対応する128個の微小スライスが、二次ストレージに書き込まれる。部分回路4内のゲートを適用する現在のフェーズでは、スライスされている量子ビット1~7の128個の値ごとに、量子ビット43~49の128個の可能性のある値に対応する128個の微小スライスが、二次ストレージから読み取られる。振幅のこれらの128個の微小スライスがメモリに読み込まれた後に、次に、部分回路4内のゲートが適用され得る。同様に、これらのゲートが適用された後に、次に、更新された各スライスをストレージに再び書き込むことができ、代替として、最終的な振幅を、スライスごとにメモリ内で処理することができる。図1に示されている二次ストレージ(との)読取り/書込みコンポーネント114は、採用されているコンピュータ・クラスタ内の二次ストレージ要素の物理的分散およびそのクラスタの通信ネットワークの特性を考慮することによって、ならびに微小スライスの読取りおよび書込みにおいて、および処理ノードとストレージ要素の間の微小スライスの通信において並列性の機会を利用することによって、微小スライスの読取りおよび書込みを最適化するように実装され得る。例えば、各微小スライスは、並列性の恩恵を受けるために、複数の物理的ディスク・ドライブにわたって分散される方法で格納されてよく、データ転送速度を最適化するために、各ディスク上の連続的なセクタにわたってデータがストライプ化される。
【0046】
深さ83(図6および図7)までシミュレーションを続行するために、部分回路4内のゲートが深さ83まで適用され、更新されたスライスが二次ストレージに再び書き込まれる。部分回路4のシミュレーションにおいて、すべてのスライスについて、このプロセスが完了した後に、シミュレーションが、図6および図7に示されている部分回路5に対して、深さ83まで残りのゲートを引き続きシミュレートする。部分回路4の場合と同じ方法でプロセスが進むが、今回は、現在スライスされている量子ビット43~49の128個の値ごとに、量子ビット1~7の128個の可能性のある値に対応する128個の微小スライスが、二次ストレージから読み込まれる。
【0047】
同様に、深さ111(図8および図9)までシミュレーションを続行するために、部分回路5内のゲートが深さ111まで適用され、更新されたスライスが二次ストレージに再び書き込まれる。部分回路5のシミュレーションにおいて、すべてのスライスについて、このプロセスが完了した後に、シミュレーションが、図8および図9に示されている部分回路6に対して、深さ111まで残りのゲートを引き続きシミュレートする。部分回路5の場合と同じ方法でプロセスが進むが、今回は、現在スライスされている量子ビット1~7の128個の値ごとに、量子ビット43~49の128個の可能性のある値に対応する128個の微小スライスの論理ファイルが、二次ストレージから読み込まれる。
【0048】
本発明の1つまたは複数の実施形態に従って、一般に、全体的な読取り/書込みサイクルの数を最小限に抑えることは、二次ストレージの効率的な使用を保証しない。より詳細には、二次ストレージを使用する際に、データは通常、ブロック(ディスク・セクタ)単位で読み取られ、書き込まれるため、ブロック内の単一のデータ項目を更新することは、ブロック全体の読取りおよび再書込みを必要とし、そのため、読取りおよび書込みの総量は、全体的な読取り/書込みサイクル中に更新される必要のあるブロックの数によって決定される。全体的な読取り/書込みサイクルの数と、読取りおよび書込みが実行される効率の両方を同時に最適化するために、回路分割における選択を、データ構造化の選択と組み合わせることができる。
【0049】
ディスクに格納された量子状態データは、「微小」スライスに構造化される。「メタ」スライスを構築するために特定のフェーズにおいてスライスされたすべての量子ビットの結合が、ディスクに対する読取りおよび書込みの際に、データを「微小」スライスに構造化するためのスライシングに使用される。例えば、上で単に提示された例では、一部のフェーズで量子ビット1~7がスライスされ、一方、他のフェーズで量子ビット43~49がスライスされており、各フェーズで異なる「メタ」スライスが得られる。次に、これらのスライスされた量子ビット(すなわち、量子ビット1~7、43~49)の結合が、「微小」スライスを作成するために使用される。したがって、計算のフェーズ中の各「メタ」スライスは、複数の「微小」スライスに対応する。したがって、「メタ」スライスの読取りおよび書込みは、「微小」スライスの冗長な読取りおよび書込みが行われないように、「微小」スライス・レベルでアトミックになる。
【0050】
各「微小」スライスのサイズが複数のディスク・セクタにわたることを保証することによって、非冗長なディスク・アクセスが実現される。ファイル・システムの特性も、「微小」スライスの最適なサイズに影響を与える可能性がある。したがって、どのフェーズの間にどの量子ビットを回路分割のためにスライスするべきかを選択するための最適化プロセスは、適切なサイズの「微小」スライスを生成するように考慮され得る。
【0051】
図11を参照すると、量子回路分割方法900は、微小スライスにインデックスを付与するために使用されるグローバル量子ビットのセットを、空のセットになるように初期化すること(動作902)から開始する。その後の動作は、このグローバル量子ビットのセットに追加する。そのような量子ビットの数は、二次ストレージ上の微小スライスのサイズを決定し、したがって、効率的な二次ストレージのアクセスを可能にするほど十分に微小スライスが大きくなるように、微小スライスにインデックスを付与するために使用されるグローバル量子ビットの数に、制限が課される。
【0052】
方法900は、微小スライスにインデックスを付与するためのグローバル量子ビットの現在のセットと一致する部分回路を識別して選択すること(動作904)を進める。この文脈では、一致は、選択された部分回路に関連付けられたグローバル量子ビットが、微小スライスにインデックスを付与するために使用されるグローバル量子ビットの現在のセットに追加された場合に、微小スライスにインデックスを付与するために使用されるグローバル量子ビットの結果として得られたセットが、効率的な二次ストレージのアクセスを実現するために必要なそのような量子ビットの最大数を超えることを引き起こさないということを意味する。動作904の後に、選択された部分回路のグローバル量子ビットを、微小スライスにインデックスを付与するために使用されるグローバル量子ビットのセットに追加し(動作906)、次に、選択された部分回路内のゲートを入力回路から削除すること(動作908)が続く。その後、更新された入力回路が調べられて、任意の残りのゲートが入力回路に現れるかどうかを判定し(動作910)、現れる場合、量子回路分割方法900が動作904に戻り、次の部分回路を識別して選択する。ゲートが残っていない場合、識別されて選択された部分回路の実行順序を決定して(動作912)、回路分割が終了する。
【0053】
図12は、動作904の例を示している。この例は、現在の入力回路内の各ゲートが適用されるために依存するローカル量子ビットのセットを計算することと(動作1002)、微小スライスにインデックスを付与するためのグローバル量子ビットの現在のセットと一致し、使用可能な集合体メモリを前提として適用できるゲートの数を最大化する、ローカル量子ビットのセットを識別することと(動作1004)、識別されたローカル量子ビットを前提として適用できるゲートの部分回路を識別し、選択することと(動作1006)を含む。動作1004では、一致は、識別されたローカル量子ビットに含まれないグローバル量子ビットを、微小スライスにインデックスを付与するために使用されるグローバル量子ビットの現在のセットに追加することが、微小スライスにインデックスを付与するために使用されるグローバル量子ビットの結果として得られたセットが、効率的な二次ストレージのアクセスを実現するために必要なそのような量子ビットの最大数を超えることを引き起こさないということを意味する。
【0054】
図11の動作904の例は、本明細書において図10図20を参照して説明され、米国特許出願第15/713,323号において説明されている、初めて二次ストレージに書き込むことが必要になる前に、完全にメモリ内で量子状態を妥当な深さまで計算することによって、プロセス全体をブートストラップするための回路分解方法を含んでもよい。
【0055】
図10を参照すると、量子回路分割方法800は、初期段の量子ビットごとに部分回路を作成することと(動作802)、その後の段のゲートを部分回路に追加することと(動作804)、すべての関連するゲートが割り当てられたかどうかを判定し(動作806)、割り当てられた場合、実行順序を決定することと(動作808)を含む。
【0056】
動作810は、関連するすべてのゲートが割り当てられるまで、ブリッジ・ゲートを選択することを表す。動作812は、ブリッジされる部分回路をもつれさせるかどうかを判定し、もつれさせない場合、ブリッジされる部分回路を閉じ(動作814)、もつれさせる場合、ブリッジ・ゲートをもつれさせる部分回路のうちの1つに追加する(動作816)ことを表す。量子回路の動作800は、従来のコンピュータおよび関連するストレージを使用して量子回路をシミュレートするために必要なリソースを削減するか、または最小限に抑えることができる方法で、量子回路の分割を可能にする。
【0057】
初期段の量子ビットごとに部分回路を作成すること(動作802)は、量子回路によって(少なくとも最初に)必要とされる量子ビットの数を決定することと、量子回路によって必要とされる量子ビットごとに部分回路を定義するために、データ構造を初期化することとを含むことができる。その後の段のゲートを部分回路に追加すること(動作804)は、部分回路に現在割り当てられている量子ビットからの入力のみを必要とする、未割当ての次の段のゲートを各部分回路に追加することを含むことができる。この追加動作は、部分回路に割り当てられた量子ビットの残りのすべての未割当てのゲートが対角ユニタリ・ゲート(diagonal-unitary gates)であるかどうかを判定し、対角ユニタリ・ゲートである場合、その部分回路を閉じることと、閉じられた部分回路と同じ割り当てられた量子ビットを含む新しい部分回路を作成することと、この新しい部分回路に、残りのすべての未割当てのゲートが対角ユニタリ・ゲートである割り当てられた量子ビットをスライスする目的で作成されているとしてマークを付けることとを、含むこともできる。部分回路を閉じることは、この部分回路への他のゲートの追加を防ぐために、この部分回路に完了としてマークを付けることを含むことができる。
【0058】
すべてのゲートが割り当てられたかどうかを判定すること(動作806)は、未割当てのゲート数または何らかのその他の指標が、すべてのゲートが部分回路に割り当てられたことを示しているかどうかを判定することを含むことができる。ブリッジ・ゲートを選択すること(動作810)は、部分回路に現在割り当てられている少なくとも1つの量子ビット、および部分回路に現在割り当てられていない1つまたは複数の量子ビットからの入力を必要とする、未割当ての次の段のゲートを選択することを含むことができる。言い換えると、ブリッジ・ゲートは、現在作成されているように複数の部分回路からの入力を必要とするゲートである。
【0059】
ブリッジされた部分回路をもつれさせるかどうかを判定すること(動作812)は、ブリッジされた部分回路をもつれさせるという決定が行われるシナリオと、もつれさせないという決定が行われるシナリオとの選択肢のリソース・コストを推定し、各決定に関連付けられたリソース・コストを比較し、その後、最もコストの低い選択肢を選択することを含むことができる。ブリッジされた部分回路を閉じること(動作814)は、ブリッジされた部分回路への他のゲートの追加を防ぐために、部分回路に完了としてマークを付けることを含むことができる。ブリッジ・ゲートを新しい部分回路に割り当てること(やはり動作814の一部である)は、新しい部分回路を作成することと、閉じられているブリッジされた部分回路の量子ビットをこの新しい部分回路に割り当てることと、ブリッジ・ゲートをこの新しい部分回路に割り当てることとを含むことができる。
【0060】
ブリッジ・ゲートを、もつれさせる部分回路のうちの1つに追加すること(動作816)は、ブリッジ・ゲートを、部分回路に含まれているゲートのリストに追加することを含むことができる。この追加動作は、最初にブリッジ・ゲートをゲートの等価な組合せに置き換えることを含むこともでき、ここで、この新しいブリッジ・ゲートは対角ユニタリになる。一例は、図16および図17に示されているように、CNOTゲート(図13図15)をCZゲートとアダマール・ゲートの組合せに置き換えることである。これによって、図18に示されているように、CNOTゲートをこのゲートの等価な組合せに置き換えることができる。このような置換が行われた場合、新しいブリッジ・ゲートが、ブリッジされる部分回路のうちの1つに割り当てられ、それらの部分回路に割り当てられた量子ビットに従って、この書き換えにおいて導入されることのある任意の単一量子ビット・ゲートが、部分回路に割り当てられる。例えば、CNOTゲートをCZゲートに置き換える特定の事例では、動作804に関連して前述した、その後の段のゲートを部分回路に追加するためのルールに従うために、導入されたアダマール・ゲートが、対応する量子ビットが割り当てられている部分回路に割り当てられる。一方、CZゲートは、もつれさせられる部分回路のいずれかに割り当てられ得る。
【0061】
図13図18が、量子回路の1つの特定の例を最適化する1つの例を示す概略図であるということに注意するべきである。本発明の一部の実施形態では、ゲートの置換(回路の書き換えとしても知られる)は、本明細書で開示された技術の範囲内のさまざまな時点で実施されてよい。例えば、図16および図17に示されている書き換えなどの回路の書き換えは、ステップ816(図10)と共に実行され得る。より詳細には、ブリッジCNOTゲートをCZゲートおよびアダマール・ゲートの等価な構成に置き換えることは、対応する部分回路をもつれさせるときに導入されるもつれたインデックスの数を減らすことができ、これはさらに、結果として得られるもつれた部分回路をシミュレートするために必要とされるメモリ量を減らす効果がある。
【0062】
したがって、図10は、例えば、上記の使用事例および本明細書に記載された技術のその他の可能性のある使用事例の各々で、浮動小数点演算の数を最小限に抑える回路分割を見つけるために使用され得る、例示的なフロー図を示している。例として、深さ優先探索、幅優先探索、反復深化深さ優先探索、ダイクストラのアルゴリズム、およびA探索が挙げられる。
【0063】
例えば、深さ優先再帰的最適化プロセスとして図10に示されている動作を実装することは、可能性のある決定の選択肢にわたってループするために決定点でのループを導入することと、次に、それらのループ内で、可能性のある選択肢に関して、それらの点から前方に、図10に示されている動作を再帰的に呼び出すことと、ループの終了時に、目的のコスト基準を最適化する選択肢を返すこととを含むことができる。これらの決定点は、割当て可能なブリッジ・ゲートを選択するための動作810と、部分回路をもつれさせるかどうかを選択するための動作812と、ブリッジ・ゲートを部分回路に割り当てるための動作816と、部分回路の実行順序を決定するための動作808とを含むことができる。これらの点での一部の決定は、代わりに、経験則を適用することによって行うことができ、一方、他の決定は、深さ優先探索の一部として含まれ得る。最小化される目的のリソース・コスト基準は、最大メモリ要件、振幅を計算するための浮動小数点演算の総数、または単一の振幅を計算するための浮動小数点演算の総数、あるいはその組合せを含むことができる。目的の制約に違反している場合に選択肢を破棄するために、条件付きテストも導入され得る。目的の制約は、シミュレーションのための合計メモリ要件が指定された制限内にとどまることを含むことができる。目的の制約は、深さ優先プロセス自体によって消費される合計実行時間に対する制限を含むこともできる。深さ優先プロセスは、実行時間制限が課されているなどの場合に、完全な探索が実行される前に深さ優先プロセスが終了した場合でも、実行した深さ優先プロセスから恩恵がなお得られるように、目的のリソース・コスト基準に従ってこれまで検出された、現在の最も良い選択肢のセットの記録を保持するように実装され得る。
【0064】
深さ優先探索プロセスは、可能性のある一連の決定の選択肢のツリーを、それによって生じる回路分割と共に効果的に生成する。幅優先探索は、一度に1レベルずつ、このツリーを調べる。幅優先探索は、反復深化深さ優先探索として実装することができ、この実装では、行われる決定の数に制限が課され、この制限を超えると、探索ツリーの分岐が破棄される。探索の深さに制限を課すことができ、または代替として、動作812でもつれさせる選択肢を選択できる回数に制限を課すことができる。
【0065】
図16は、本明細書において示された本発明の少なくとも1つの実施形態に従う、量子回路実行のフロー図である。量子回路実行動作は、順序付けられた量子部分回路のセットを受信することと(動作1202)、個別のインデックス変数を割り当てることと(動作1204)、インデックス変数を伝搬することと(動作1206)、各量子部分回路を実行することと(動作1208)を含む。例示された量子回路の動作は、部分回路に分割された量子回路の実行を可能にすることができる。
【0066】
順序付けられた量子部分回路のセットを受信すること(動作1202)は、包含されたゲートを含んでいる各量子部分回路を定義するオブジェクトまたはデータ構造へのポインタの順序付けられたリストを受信することを含むことができる。本発明の1つの実施形態では、各量子部分回路の定義は、基本的に、図10に示されている実行計画に類似する部分回路実行計画である。個別のインデックス変数を割り当てること(動作1204)は、個別のインデックス変数を、すべての量子ビットの初期状態、およびすべての非対角ユニタリ・ゲートの出力に割り当てることを含むことができる。
【0067】
インデックス変数を伝搬すること(動作1206)は、対角ユニタリ・ゲートごとに、入力から出力にインデックス変数を反復的に伝搬することを含むことができる。各量子部分回路を実行すること(動作1208)は、各量子部分回路を実行することと、生成された結果を指定された順序で結合することとを含むことができる。
【0068】
図17は、図16に示されている実行動作1208の一例を示すフローチャートであり、この例では、部分回路および結合結果が、テンソルの積を構築すること(動作1210)および合計を実行すること(動作1212)を含むことができる。
【0069】
テンソルの積を構築すること(動作1210)は、部分回路に属するゲートを、図16の動作1204および1206でそれらのゲートに割り当てられたインデックス変数と共に識別することと、これらのインデックス変数を、添字として部分回路内のゲートの対応するテンソルに割り当てることと、部分回路のテンソルを、入力から出力への順序で配置された積に組み立てることとを含むことができる。テンソルの積を構築すること(動作1210)は、決定動作(例えば、図10の動作808)を介して達した実行順序に従って、部分回路のシミュレーション結果に対応するテンソルをテンソルの積に組み立てることを含むこともできる。
【0070】
合計を実行すること(動作1212)は、前述した構築動作1210で決定された入力から出力への順序で、部分回路のテンソルの積を計算することと、それらの部分回路内にあるインデックス変数が、決定された入力から出力への順序で現れるときに、それらのインデックス変数にわたって合計を実行することとを含んでよい。回路内にあるインデックス変数にわたって全体として合計を実行すること(動作1212)は、部分回路のシミュレーション結果を結合するために、前述した構築動作1210において決定されたテンソルの積を計算するときに、そのようなインデックス変数にわたって合計を実行することを含んでよい。
【0071】
ある量子ビットに関して、シミュレートされるゲートが回路内に残っていない場合、またはその量子ビットに関する残りのすべてのゲートが対角ユニタリ・ゲートである場合、部分回路のシミュレーション結果のこの結合の前に、1つまたは複数のそのような量子ビットの可能性のある値にわたってループするforループの導入が先行してよい。次に、その後の計算のメモリ要件を削減するために、影響を受けるテンソルのスライスに関して、その後のテンソルの積およびそれらの合計が計算されてよい。
【0072】
図16の動作1208および図17に示されているその例に戻ると、少なくとも1つの実施形態では、部分回路は、個々の量子ビットの初期状態から作成された初期部分回路から開始して、入力から出力への順序で効率的にシミュレートされてよい。そのような方法では、その後の部分回路が入力に関して依存している先行する部分回路がシミュレートされるまで、その後の部分回路がシミュレートされない。部分回路ごとのシミュレーション結果は、コンピュータ・メモリ内でm次元配列として表され得る、m次元テンソルに対応することができる。同等の表現を提供するために、線形配列などのその他のデータ構造も採用され得る。
【0073】
したがって、本明細書において説明されている回路分割では、結果として得られたテンソルが、使用可能な集合体メモリ内に完全に収まるか、または結果として得られたテンソルのスライスが、すでに計算されている他のテンソルに基づいて、使用可能な集合体メモリを使用して計算され、集合体メモリに格納され得る。結果として得られたテンソルまたはそれらのスライスあるいはその両方は、通常、個々の処理ノードのメモリより大きい。既存の処理ノードごとのメモリは、本明細書に記載された手法と組み合わさって、対応するサブスライスが個々のノードのメモリ内に収まることができるような方法で部分回路を下位部分回路にさらに分割することによって、通信を最小限に抑える。
【0074】
さらに、量子状態が大きすぎて集合体メモリ内に収まらない場合、これらの手法を組み合わせて二次ストレージを採用することができる。二次ストレージは、一般に、メイン・メモリより数桁遅いため、二次ストレージを使用することの実行可能性は、読取り/書込みサイクルの数をどの程度まで最小限に抑えることができるかに依存する。そのような最小化を実現するために、本明細書では、使用可能な集合体メモリを使用してシミュレートされ得るゲートの数を最大化することを試みるために、回路の初期部分を分割し、その後、各スライスにおいて結果として得られた量子状態が計算され、二次ストレージに書き込まれることが説明される。その後、個々の処理ノードで使用可能なメモリ・サイズに制限されるのではなく、集合体メモリのサイズに従って、「ローカル」量子ビットの数がさらに大きく設定されて、既知の分割方法が回路内の残りのゲートに適用され得る。結果として得られたテンソル・スライス(「メタ」スライス)は相対的に非常に大きく、追加の二次ストレージの読取り/書込みサイクルが必要になる前に、さらに多くのゲートをシミュレートできるようにする。本明細書において説明されるように、その後、結果として得られた部分回路を下位部分回路にさらに分割し、計算全体におけるノード間通信を最小限に抑えることができる。
【0075】
本明細書において示されているように、図4図9に示されている分割方式は、7×7量子ビット、深さ27のランダムな回路の場合、二次ストレージの1読取り/書込みサイクルのみを使用して7×7量子ビット、深さ55の回路(図5)をシミュレートできるように拡張することができ、深さ83(図6および図7)、深さ111(図8および図9)などの回路についても同様である。図10図12に示されているフロー図を適用して、図5図9に示されている分割方式を構築することができる。具体的には、図10のフロー図800を、図11に示されているループの最初の反復での図11の動作904の例において使用することができ、次に、図12のフロー図1000を、その後の反復における動作904として使用することができる。図11に示されているループの最初の反復では、動作904の例は、深さ制限を増やして、図10のフロー図800を複数回適用し、初めて二次ストレージに書き込むことが必要になる前に量子状態を完全にメモリ内で計算することができる妥当な深さを識別することができる。このようにして、図4図9の事例では、そのような妥当な深さとして27を識別することができる。深さ制限が27に設定され、回路内のレベル7および8で第3および第4の行をブリッジするCZゲートを考慮する場合、図10の動作812の「はい」の分岐に従うことによって、および部分回路1および2の厳密に内部に現れるCZゲートの事例では、動作812の「いいえ」の分岐に従うことによって、図5図9に示されている部分回路1および2が識別され得る。そのように実行することによって、図5図9に示されている部分回路1および2にそれぞれ対応する2つの複数の順序付けられた部分回路を生成する。このプロセスの副産物として、深さ27までの回路内の残りのすべての未割当てのゲートが対角ユニタリ・ゲートであるため、量子ビット43~49を、スライシングの候補であるとして識別することもできる。したがって、量子ビット43~49は、メタ・スライスを構築する目的でスライシングに使用される識別されたグローバル量子ビットになることができる。量子回路内のレベル15および16で第3および第4の行をブリッジするCZゲートのうちのいずれか1つを考慮する場合、その後、図10の動作812の「いいえ」の分岐に従うことによって、図5図9に示されている部分回路3が識別され得る。その後、動作804が後に適用されるときに、深さ27までの部分回路3内の残りのゲートが識別され得る。深さ27を超えて分割を拡張するために、量子ビット43~49がグローバルであり、したがって、ローカル量子ビット1~42に適用されるゲートのみが、深さ27を超えて部分回路3を拡張することにおいて考慮されるという制約付きで、深さ27を超えて動作804が続行され得る。そのように実行することによって、図5図9に示されているように、部分回路3に対応する分割を生成することができる。上記のプロセスが、図11に示されているループの最初の反復において図11の動作904の実施形態として使用され、次に、図12のフロー図1000をその後の反復における動作904として使用することによって、部分回路4、5、および6が識別され得る。動作904においてフロー図800を使用することは必須ではないが、前述した方法でフロー図800を使用することによって、初めて二次ストレージに書き込むことが必要になる前に量子回路をシミュレートできる深さを増やすことができるということに、注意するべきである。深さ優先探索、幅優先探索、反復深化深さ優先探索、ダイクストラのアルゴリズム、およびA探索などの既知の最適化手法を、フロー図900と共に使用して、動作904の実施形態において行われる選択を最適化することができ、例えば、計算コスト、通信コスト、および二次ストレージのアクセス・コストを考慮して、合計実行時間を最小限に抑えることができるということにも、注意するべきである。
【0076】
1つの公開されている方法(Riling Li, BujiaoWu,Mingsheng Ying, XiaomingSun, and Guangwen Yang, “Quantum Supremacy Circuit Simulation on Sunway TaihuLight,”arXiv preprintarXiv:1804.04797, (2018))は、約50量子ビットおよび40を超える深さを有する普遍的でランダムな回路の単一の振幅の計算の実現可能性を示しており、この計算は、現在の技術では実現できないと考えられていた。これに対して、前述したように、50量子ビットより大きく、任意の深さを有する普遍的でランダムな回路を、二次ストレージを使用してスーパーコンピュータ上ですべての振幅を計算して、完全にシミュレートすることができる。この結果、ディスクの読取り/書込み動作の相対的に高いコストに起因して、実行時間が長くなるが、この速度低下は、研究中の事例の場合、2倍より大幅に小さい。さらに、NVRAMベースのバースト・バッファなどの最近のシステムの進歩は、これらの実行時間に関して、非常に有益な効果を有することができる。二次ストレージを介して使用可能なメモリ・プールが大きくなると、量子回路シミュレーションの境界をさらに広げることができる。この目的で、量子回路は、ゲートの複数の層の他の量子ビットと定期的に相互作用しない、グリッドの境界上の量子ビットのグループを含むことができる。具体的には、7×7グリッド上の普遍的でランダムな回路の場合、境界での7量子ビットのグループは、他の行または列との2量子ビットの相互作用の2つの層を含み、さらなる相互作用のない6つの層がそれに続く(グループ内には、単一量子ビット・ゲートまたは2量子ビット・ゲートのみ)。このため、これらの量子ビットをスライスすることは非常に効果的であり、境界の行または列のうちの1つが選択され、6つの層の対応する量子ビットがスライスされる。残りの量子ビットに適用される回路は、独立してシミュレートされる。より詳細には、この手法は、グリッドの境界(例えば、グリッドの最下部の行)で量子ビットをスライスし、メモリが許す限り大きい状態ベクトルと共にシュレディンガーの手法を使用して、回路の残りの部分をシミュレートする。追加のもつれたインデックスを導入せずに、できるだけ多くのゲートの層に対してシミュレーションが実行される。反対側の行/列(例えば、グリッドの最上部の行)上の量子ビットの場合、これによって、ゲートの30を超える層を適用することを可能にし、一方、スライスされる量子ビットに近い量子ビットの場合、メモリ占有率を増やさずに、前もってより少ない数の層で進行が停止する。これによって、同じサイズの複数のスライスを生成し、これらのスライスがディスクに格納される。さらにゲートを適用するために、前の部分回路においてスライスされた量子ビットの反対側の行/列(例えば、グリッドの最上部の行)内の量子ビットをスライスして、新しい部分回路が開始され、シュレディンガーの手法を使用して回路の残りの部分をシミュレートする。ディスクに格納されたスライスから初期状態を読み込むことができ、このプロセスが反復され得る。これによって、部分回路内に「波」パターンが生じ、このパターンでは、特定の部分回路が、量子ビットの最上部または最下部の行から開始し、その後、開始した量子ビットのセットの反対側の行を包含するまで、回路の残りの部分に広がり、この反対側の行で、再び縮小する。追加の量子ビット(例えば、2行)をスライスすることによって、メモリ要件(ただし、ディスク・ストレージ要件ではない)を削減することができる。本明細書に記載された技術は、ディスクを操作しなくても、7×7量子ビットのグリッドに対する深さ46の回路の単一の振幅の計算を可能にする。
【0077】
本明細書において説明されているように、二次ストレージを使用することの効率は、読取り/書込みサイクルの数をどの程度まで最小限に抑えることができるかに依存する。249個の量子振幅を二次ストレージに書き込み、それらを逆に読み取るために必要なデータ転送時間は、約1.0~2.2TB/秒の転送速度で、約2~5時間であることができる。量子振幅は、単精度または倍精度あるいはその両方のストレージ形式で格納され得る(丸め誤差の累積を最小限に抑えるために、振幅が単精度で格納される場合でも、メモリ内の計算は倍精度で実行され得る)。したがって、読取り/書込みサイクルの数を最小限に維持できるということを条件として、二次ストレージの使用は実用的である。
【0078】
図18は、量子回路の機械可読の仕様を含んでいる入力量子回路を、テンソル・スライシングのために識別された量子ビットの少なくとも2つのグループに基づいて部分回路に分割する、分割コンポーネント(ブロック1302)を備えているシステムを表しており、これらの部分回路のグループは、テンソル・スライシングに使用される量子ビットの関連付けられたセットを含む。シミュレーション・コンポーネント(ブロック1304)は、部分回路のグループに基づく各段内の入力量子回路を、1つの部分回路につき1つの段ずつ、シミュレートされた量子状態テンソルにシミュレートし、部分回路に関連付けられた量子ビットのセットが、入力量子回路に対してシミュレートされた量子状態テンソルを量子状態テンソル・スライスに分割するために使用され、その部分回路内の量子ゲートが、量子状態テンソル・スライスを更新された量子状態テンソル・スライスに更新するために使用される。読取り/書込みコンポーネント(ブロック1306)は、シミュレートされた量子状態テンソルの更新された量子状態テンソル・スライスを、微小スライスとして二次ストレージに格納する。
【0079】
入力量子回路は、少なくとも49量子ビットを備えることができ、少なくとも50の回路の深さのレベルを有することができる。
【0080】
読取り/書込みコンポーネントは、二次ストレージの少なくとも2つのディスク・セクタにわたるサイズを有する微小スライスを書き込むことができる。読取り/書込みコンポーネントは、更新された量子状態テンソル・スライスを二次ストレージから取り出すことができ、シミュレーション・コンポーネントは、別の部分回路を他の部分回路テンソルに処理し、二次ストレージから取り出された更新された量子状態テンソル・スライスを使用して、他の部分回路テンソルをさらに更新された量子状態テンソル・スライスに更新することができる。読取り/書込みコンポーネントは、さらに更新された量子状態テンソル・スライスを二次ストレージに格納することができる。
【0081】
分割コンポーネントは、入力量子回路を、第1の量子ビット分割グループ、第2の量子ビット分割グループ、第3の量子ビット分割グループ、および第4の量子ビット分割グループを含んでいる、部分回路に対応する量子ビット分割グループに分割することができる。シミュレーション・コンポーネントは、第3のグループの量子ゲートを、第1および第2のグループのテンソル・スライスに適用し、更新された量子状態テンソルを取得することができ、読取り/書込みコンポーネントは、更新された量子状態テンソル・スライスを二次ストレージからメモリに読み取ることができる。シミュレーション・コンポーネントは、第4のグループの量子ゲートを更新された量子状態テンソル・スライスに適用して、さらに更新された量子状態テンソルを取得することができる。
【0082】
図19は、例示的なコンピュータ実装方法を表しており、この方法では、動作1402が、量子回路の機械可読の仕様を含んでいる入力量子回路を処理することを表している。この処理することは、テンソル・スライシングのために識別された量子ビットの少なくとも2つのグループに基づいて、入力量子回路を部分回路のグループに分割すること(例えば、図1の分割コンポーネント108によって実行される動作1404)を含むことができ、これらの部分回路のグループは、テンソル・スライシングに使用される量子ビットの関連付けられたセットを含む。動作1406は、(例えば、図1のシミュレーション・コンポーネント112によって)部分回路のグループに基づく各段内の入力量子回路を、1つの部分回路につき1つの段ずつ、シミュレートされた量子状態テンソルにシミュレートすることを表しており、部分回路に関連付けられた量子ビットのセットが、入力量子回路に対してシミュレートされた量子状態テンソルを量子状態テンソル・スライスに分割するために使用され、その部分回路内の量子ゲートが、量子状態テンソル・スライスを更新された量子状態テンソル・スライスに更新するために使用される。動作1408は、(例えば、図1の読取り/書込みコンポーネント114によって)シミュレートされた量子状態テンソルの更新された量子状態テンソル・スライスを、微小スライスとして二次ストレージに格納することを表している。
【0083】
シミュレートされた量子状態テンソルの更新された量子状態テンソル・スライスを微小スライスとして二次ストレージに格納することは、微小スライスを二次ストレージの少なくとも2つのディスク・セクタに格納することを含むことができる。
【0084】
各態様は、別の部分回路を他の部分回路テンソルに処理することと、更新された量子状態テンソル・スライスを二次ストレージから取り出すことと、二次ストレージから取り出された更新された量子状態テンソル・スライスを使用して他の部分回路テンソルをさらに更新された量子状態テンソル・スライスに更新することとを含むことができる。各態様は、さらに更新された量子状態テンソル・スライスを二次ストレージに格納することを処理することを含むことができる。
【0085】
入力量子回路を部分回路のグループに分割することは、入力量子回路を第1の部分回路分割グループ、第2の部分回路分割グループ、および第3の部分回路分割グループに分割することを含むことができ、更新された量子状態テンソル・スライスを格納することは、第3の部分回路分割グループのゲートを第1の部分回路分割グループおよび第2の部分回路分割グループに対応するテンソル・スライスに適用して更新された量子状態テンソル・スライスを取得することを含むことができる。入力量子回路を部分回路のグループに分割することは、入力量子回路を第4の部分回路分割グループに分割することと、更新された量子状態テンソル・スライスを二次ストレージから取り出すこととをさらに含むことができ、二次ストレージから取り出された更新された量子状態テンソル・スライスを使用して、他の部分回路テンソルをさらに更新された量子状態テンソル・スライスに更新することは、第4の部分回路分割グループのゲートを適用することを含むことができる。
【0086】
理解されるように、図19の例示的な動作は、一般に、量子回路の機械可読の仕様を含んでいる入力量子回路を含む量子回路をシミュレートするためのコンピュータ・プログラム製品において実装され得る。この目的で、コンピュータ・プログラム製品は、1つまたは複数のコンピュータ可読ストレージ媒体と、1つまたは複数のコンピュータ可読ストレージ媒体に格納されたプログラム命令とを備えることができる。これらのプログラム命令は、実行された場合に、図19に例示された動作の少なくとも一部に対応することができる。
【0087】
図20は、例示的なコンピュータ実装方法の動作を表しており、この方法は、少なくとも2つのプロセッサに動作可能なように結合されたデバイスによって実行可能であり、量子回路の機械可読の仕様を含んでいる入力量子回路をシミュレートすることを表す動作1502を含んでいる。動作1504は、テンソル・スライシングのために識別された量子ビットの少なくとも2つのグループに基づいて、入力量子回路をメタ部分回路に分割すること表しており、これらのメタ部分回路のうちの少なくとも1つのメタ部分回路のメモリ容量が、単一のプロセッサのメモリ容量を超える。各態様は、メタ部分回路を単一のプロセッサのメモリ容量内に収まる下位部分回路にさらに分割することと(動作1506)、下位部分回路に対してテンソルを計算することと(動作1508)、テンソル・スライシングによって、テンソルをテンソル・スライスに縮小させることと(動作1510)を含むことができる。各態様は、別の部分回路のゲートをテンソル・スライスに適用して、量子状態データを表す更新されたテンソル・スライスを取得することと、更新されたテンソル・スライスを二次ストレージに格納することとを含むことができる。各態様は、更新されたテンソル・スライスを二次ストレージから取り出すことと、さらに他の部分回路のゲートを更新されたテンソル・スライスに適用して、さらに更新されたテンソル・スライスを取得することとを含むことができる。
【0088】
二次ストレージは、1つまたは複数のディスク・デバイスを備えることができ、各態様は、メタ・スライスを微小スライスに構造化することを含むことができ、この微小スライスのサイズは、二次ストレージの少なくとも2つのディスク・セクタにわたり、更新されたテンソル・スライスを二次ストレージに格納することは、微小スライスを格納することを含むことができる。ディスク・デバイスに対する代替または追加として、二次ストレージは、NVRAM、相変化メモリ、フラッシュなどを含むことができる。さらに、二次ストレージは、少なくともある程度、「リモート」メモリのことを指すことができる。例えば、リモート・ダイレクト・メモリ・アクセスは、CPUの介入を必要とせずに、データを効率的に転送することを可能にし、したがって、微小スライスに使用することができる。実行される動作は、例えば、ノード158がより多くのメモリを保有しているか、または同じ量のメモリを保有しているが、より少ないリソースを必要とするため、あるノード(例えば、ノード0)がスライスを別のノード(例えば、ノード158)に格納できるという点において、「メモリ対称」である必要はないということに、注意するべきである。
【0089】
理解されるように、図20の例示的な動作は、一般に、量子回路の機械可読の仕様を含んでいる入力量子回路を含む量子回路をシミュレートするためのコンピュータ・プログラム製品において実装され得る。この目的で、コンピュータ・プログラム製品は、1つまたは複数のコンピュータ可読ストレージ媒体と、このような1つまたは複数のコンピュータ可読ストレージ媒体に格納されたプログラム命令とを備えることができる。これらのプログラム命令は、実行された場合に、図20に例示された動作の少なくとも一部に対応することができる。
【0090】
本発明のさまざまな態様の背景を提供するために、図21および以下の説明は、本発明のさまざまな態様が実装され得る適切な環境の概要を示すように意図されている。図21は、本明細書に記載された本発明の1つまたは複数の実施形態を容易にすることができる例示的な動作環境のブロック図を示している。
【0091】
図21を参照すると、環境1600は、コンピュータ1612を含むこともできる。コンピュータ1612は、処理ユニット1614、システム・メモリ1616、およびシステム・バス1618を含むこともできる。システム・バス1618は、システム・メモリ1616を含むが、これに限定されないシステム・コンポーネントを、処理ユニット1614に結合する。処理ユニット1614は、さまざまな使用可能なプロセッサのいずれかであることができる。デュアル・マイクロプロセッサおよびその他のマルチプロセッサ・アーキテクチャが、処理ユニット1614として採用されてもよい。システム・バス1618は、ISA(industrial standard architecture)、MCA(micro-channelarchitecture)、EISA(extended ISA)、IDE(intelligent drive electronics)、VESAローカル・バス(VLB:VESA local bus)、PCI(peripheral componentinterconnect)、カード・バス、ユニバーサル・シリアル・バス(USB:universalserial bus)、AGP(advanced graphics port)、FireWire(IEEE 1394)、および小型コンピュータ・システム・インターフェイス(SCSI:small computer systems interface)を含むが、これらに限定されない、任意のさまざまな使用可能なバス・アーキテクチャを使用する、メモリ・バスもしくはメモリ・コントローラ、ペリフェラル・バスもしくは外部バス、またはローカル・バス、あるいはその組合せを含む、複数の種類のバス構造のいずれかであることができる。
【0092】
システム・メモリ1616は、揮発性メモリ1620および不揮発性メモリ1622を含むこともできる。起動中などにコンピュータ1612内の要素間で情報を転送するための基本ルーチンを含んでいる基本入出力システム(BIOS:basic input/output system)が、不揮発性メモリ1622に格納される。コンピュータ1612は、取り外し可能/取り外し不可能な揮発性/不揮発性のコンピュータ・ストレージ媒体を含むこともできる。例えば図21は、ディスク・ストレージ1624を示している。ディスク・ストレージ1624は、磁気ディスク・ドライブ、フロッピー(R)・ディスク・ドライブ、テープ・ドライブ、Jazドライブ、Zipドライブ、LS-100ドライブ、フラッシュ・メモリ・カード、またはメモリ・スティックなどの、ただしこれらに限定されない、デバイスを含むこともできる。ディスク・ストレージ1624は、ストレージ媒体を、別々に、または他のストレージ媒体と組み合わせて、含むこともできる。システム・バス1618へのディスク・ストレージ1624の接続を容易にするために、インターフェイス1626などの、取り外し可能または取り外し不可能なインターフェイスが通常は使用される。図21は、ユーザと、適切な動作環境1600において説明された基本的なコンピュータ・リソースとの間の仲介として機能するソフトウェアも示している。そのようなソフトウェアは、例えば、オペレーティング・システム1628を含むこともできる。ディスク・ストレージ1624に格納できるオペレーティング・システム1628は、コンピュータ1612のリソースを制御し、割り当てるように動作する。
【0093】
システムのアプリケーション1630は、プログラム・モジュール1632を介して、オペレーティング・システム1628によるリソースの管理を利用し、例えばシステム・メモリ1616またはディスク・ストレージ1624のいずれかに格納されたデータ1634をプログラムする。さまざまなオペレーティング・システムまたはオペレーティング・システムの組合せを使用して本開示が実装され得るということが、理解されるべきである。ユーザは、1つまたは複数の入力デバイス1636を介して、コマンドまたは情報をコンピュータ1612に入力する。入力デバイス1636は、マウス、トラックボール、スタイラスなどのポインティング・デバイス、タッチ・パッド、キーボード、マイクロホン、ジョイスティック、ゲーム・パッド、衛星放送受信アンテナ、スキャナ、TVチューナー・カード、デジタル・カメラ、デジタル・ビデオ・カメラ、Webカメラなどを含むが、これらに限定されない。これらおよびその他の入力デバイスは、1つまたは複数のインターフェイス・ポート1638を介してシステム・バス1618を通り、処理ユニット1614に接続する。1つまたは複数のインターフェイス・ポート1638は、例えば、シリアル・ポート、パラレル・ポート、ゲーム・ポート、およびユニバーサル・シリアル・バス(USB)を含む。1つまたは複数の出力デバイス1640は、1つまたは複数の入力デバイス1636と同じ種類のポートの一部を使用する。このようにして、例えば、USBポートを使用して、入力をコンピュータ1612に提供し、コンピュータ1612から出力デバイス1640に情報を出力できる。出力アダプタ1642は、特殊なアダプタを必要とする出力デバイス1640の中でも特に、モニタ、スピーカ、およびプリンタのような何らかの出力デバイス1640が存在することを示すために提供される。出力アダプタ1642の例としては、出力デバイス1640とシステム・バス1618の間の接続の手段を提供するビデオ・カードおよびサウンド・カードが挙げられるが、これらに限定されない。1つまたは複数のリモート・コンピュータ1644などの、その他のデバイスまたはデバイスのシステムあるいはその両方が、入力機能および出力機能の両方を提供するということに、注意するべきである。
【0094】
コンピュータ1612は、リモート・コンピュータ1644などの1つまたは複数のリモート・コンピュータへの論理接続を使用して、ネットワーク環境内で動作できる。1つまたは複数のリモート・コンピュータ1644は、コンピュータ、サーバ、ルータ、ネットワークPC、ワークステーション、マイクロプロセッサ・ベースの機器、ピア・デバイス、またはその他の一般的なネットワーク・ノードなどであることができ、通常は、コンピュータ1612に関連して説明された要素の多くまたはすべてを含むこともできる。簡潔にするために、メモリ・ストレージ・デバイス1646のみが、1つまたは複数のリモート・コンピュータ1644と共に示されている。1つまたは複数のリモート・コンピュータ1644は、ネットワーク・インターフェイス1648を介してコンピュータ1612に論理的に接続されてから、通信接続1650を介して物理的に接続される。ネットワーク・インターフェイス1648は、ローカル・エリア・ネットワーク(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)を含むが、これらに限定されない。1つまたは複数の通信接続1650は、ネットワーク・インターフェイス1648をシステム・バス1618に接続するために採用されたハードウェア/ソフトウェアのことを指す。通信接続1650は、説明を明確にするために、コンピュータ1612内に示されているが、コンピュータ1612の外部に存在することもできる。ネットワーク・インターフェイス1648に接続するためのハードウェア/ソフトウェアは、単に例示の目的で、通常の電話の等級のモデム、ケーブル・モデム、およびDSLモデムを含むモデム、ISDNアダプタ、およびイーサネット(R)・カードなどの、内部および外部の技術を含むこともできる。
【0095】
本発明は、任意の可能な統合の技術的詳細レベルで、システム、方法、装置、またはコンピュータ・プログラム製品、あるいはその組合せであることができる。コンピュータ・プログラム製品は、プロセッサに本発明の態様を実行させるためのコンピュータ可読プログラム命令を含んでいる1つまたは複数のコンピュータ可読ストレージ媒体を含むことができる。コンピュータ可読ストレージ媒体は、命令実行デバイスによって使用するための命令を保持および格納できる有形のデバイスであることができる。コンピュータ可読ストレージ媒体は、例えば、電子ストレージ・デバイス、磁気ストレージ・デバイス、光ストレージ・デバイス、電磁ストレージ・デバイス、半導体ストレージ・デバイス、またはこれらの任意の適切な組合せであることができるが、これらに限定されない。コンピュータ可読ストレージ媒体のさらに具体的な例の非網羅的リストは、ポータブル・フロッピー(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)・ディスク、パンチカードまたは命令が記録されている溝の中の隆起構造などの機械的にエンコードされるデバイス、およびこれらの任意の適切な組合せを含むこともできる。本明細書において使用されるとき、コンピュータ可読ストレージ媒体は、それ自体が、電波またはその他の自由に伝搬する電磁波、導波管またはその他の送信媒体を介して伝搬する電磁波(例えば、光ファイバ・ケーブルを通過する光パルス)、あるいはワイヤを介して送信される電気信号などの一過性の信号であると解釈されるべきではない。
【0096】
本明細書に記載されたコンピュータ可読プログラム命令は、コンピュータ可読ストレージ媒体から各コンピューティング・デバイス/処理デバイスへ、またはネットワーク(例えば、インターネット、ローカル・エリア・ネットワーク、広域ネットワーク、または無線ネットワーク、あるいはその組合せ)を介して外部コンピュータまたは外部ストレージ・デバイスへダウンロードされ得る。このネットワークは、銅伝送ケーブル、光伝送ファイバ、無線送信、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、またはエッジ・サーバ、あるいはその組合せを備えることができる。各コンピューティング・デバイス/処理デバイス内のネットワーク・アダプタ・カードまたはネットワーク・インターフェイスは、コンピュータ可読プログラム命令をネットワークから受信し、それらのコンピュータ可読プログラム命令を各コンピューティング・デバイス/処理デバイス内のコンピュータ可読ストレージ媒体に格納するために転送する。本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ(ISA:instruction-set-architecture)命令、マシン命令、マシン依存命令、マイクロコード、ファームウェア命令、状態設定データ、集積回路のための構成データ、あるいは、Smalltalk(R)、C++などのオブジェクト指向プログラミング言語、および「C」プログラミング言語または同様のプログラミング言語などの手続き型プログラミング言語を含む1つまたは複数のプログラミング言語の任意の組合せで記述されたソース・コードまたはオブジェクト・コードであることができる。コンピュータ可読プログラム命令は、ユーザのコンピュータ上で全体的に実行すること、ユーザのコンピュータ上でスタンドアロン・ソフトウェア・パッケージとして部分的に実行すること、ユーザのコンピュータ上およびリモート・コンピュータ上でそれぞれ部分的に実行すること、あるいはリモート・コンピュータ上またはサーバ上で全体的に実行することができる。後者のシナリオでは、リモート・コンピュータは、ローカル・エリア・ネットワーク(LAN)または広域ネットワーク(WAN)を含む任意の種類のネットワークを介してユーザのコンピュータに接続することができ、または接続は、(例えば、インターネット・サービス・プロバイダを使用してインターネットを介して)外部コンピュータに対して行われ得る。一部の実施形態では、本発明の態様を実行するために、例えばプログラマブル論理回路、フィールドプログラマブル・ゲート・アレイ(FPGA:field-programmable gate arrays)、またはプログラマブル・ロジック・アレイ(PLA:programmable logic arrays)を含む電子回路は、コンピュータ可読プログラム命令の状態情報を利用することによって、電子回路をカスタマイズするためのコンピュータ可読プログラム命令を実行することができる。
【0097】
本発明の態様は、本明細書において、本発明の実施形態に従って、方法、装置(システム)、およびコンピュータ・プログラム製品のフローチャート図またはブロック図あるいはその両方を参照して説明される。フローチャート図またはブロック図あるいはその両方の各ブロック、ならびにフローチャート図またはブロック図あるいはその両方に含まれるブロックの組合せが、コンピュータ可読プログラム命令によって実装され得るということが理解されるであろう。これらのコンピュータ可読プログラム命令は、コンピュータまたはその他のプログラム可能なデータ処理装置のプロセッサを介して実行される命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックに指定される機能/動作を実施する手段を作り出すべく、汎用コンピュータ、専用コンピュータ、または他のプログラム可能なデータ処理装置のプロセッサに提供されてマシンを作り出すものであることができる。これらのコンピュータ可読プログラム命令は、命令が格納されたコンピュータ可読ストレージ媒体がフローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックに指定される機能/動作の態様を実施する命令を含んでいる製品を備えるように、コンピュータ可読ストレージ媒体に格納され、コンピュータ、プログラム可能なデータ処理装置、または他のデバイス、あるいはその組合せに特定の方式で機能するように指示できるものであることもできる。コンピュータ可読プログラム命令は、コンピュータ上、その他のプログラム可能な装置上、またはその他のデバイス上で実行される命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックに指定される機能/動作を実施するように、コンピュータ、その他のプログラム可能なデータ処理装置、またはその他のデバイスに読み込むこともでき、それによって、一連の操作可能な動作を、コンピュータ上、その他のプログラム可能な装置上、またはコンピュータ実装プロセスを生成するその他のデバイス上で実行させる。
【0098】
図内のフローチャートおよびブロック図は、本発明のさまざまな実施形態に従って、システム、方法、およびコンピュータ・プログラム製品の可能な実装のアーキテクチャ、機能、および動作を示す。これに関連して、フローチャートまたはブロック図内の各ブロックは、規定された論理機能を実装するための1つまたは複数の実行可能な命令を含んでいる、命令のモジュール、セグメント、または部分を表すことができる。一部の代替の実装では、ブロックに示された機能は、図に示された順序とは異なる順序で発生することができる。例えば、連続して示された2つのブロックは、実際には、含まれている機能に応じて、実質的に同時に実行されるか、またはこれらのブロックが場合によっては逆の順序で実行され得る。ブロック図またはフローチャート図あるいはその両方の各ブロック、ならびにブロック図またはフローチャート図あるいはその両方に含まれるブロックの組合せは、規定された機能または動作を実行するか、または専用ハードウェアとコンピュータ命令の組合せを実行する専用ハードウェアベースのシステムによって実装され得るということにも注意するであろう。
【0099】
上では、1つのコンピュータまたは複数のコンピュータあるいはその両方で実行されるコンピュータ・プログラム製品のコンピュータ実行可能命令の一般的な文脈において、主題が説明されたが、当業者は、本開示がその他のプログラム・モジュールと組み合わせて実装されてもよいということを認識するであろう。通常、プログラム・モジュールは、特定のタスクを実行するか、または特定の抽象データ型を実装するか、あるいはその両方を行うルーチン、プログラム、コンポーネント、データ構造などを含む。さらに、当業者は、本発明のコンピュータ実装方法が、シングルプロセッサ・コンピュータ・システムまたはマルチプロセッサ・コンピュータ・システム、ミニコンピューティング・デバイス、メインフレーム・コンピュータ、加えてコンピュータ、ハンドヘルド・コンピューティング・デバイス(例えば、PDA、電話)、マイクロプロセッサベースまたはプログラム可能な家庭用電化製品または産業用電子機器などを含む、その他のコンピュータ・システム構成を使用して実践され得るということを理解するであろう。示された態様は、通信ネットワークを介してリンクされたリモート処理デバイスによってタスクが実行される、分散コンピューティング環境内で実践されてもよい。ただし、本発明の態様の全部ではないとしても一部は、スタンドアロン・コンピュータ上で実践され得る。分散コンピューティング環境において、プログラム・モジュールは、ローカルおよびリモートの両方のメモリ・ストレージ・デバイスに配置され得る。
【0100】
本出願において使用されるとき、「コンポーネント」、「システム」、「プラットフォーム」、「インターフェイス」などの用語は、1つまたは複数の特定の機能を含むコンピュータ関連の実体または操作可能なマシンに関連する実体を指すことができるか、またはそれらの実体を含むことができるか、あるいはその両方が可能である。本明細書で開示された実体は、ハードウェア、ハードウェアとソフトウェアの組合せ、ソフトウェア、または実行中のソフトウェアのいずれかであることができる。例えば、コンポーネントは、プロセッサ上で実行されるプロセス、プロセッサ、オブジェクト、実行ファイル、実行のスレッド、プログラム、またはコンピュータ、あるいはその組合せであることができるが、これらに限定されない。例として、サーバ上で実行されるアプリケーションおよびサーバの両方が、コンポーネントであることができる。1つまたは複数のコンポーネントが、プロセス内または実行のスレッド内あるいはその両方に存在することができ、コンポーネントは、1つのコンピュータ上に局在するか、または2つ以上のコンピュータ間で分散されるか、あるいはその両方が可能である。別の例では、各コンポーネントは、さまざまなデータ構造が格納されているさまざまなコンピュータ可読媒体から実行できる。コンポーネントは、1つまたは複数のデータ・パケット(例えば、ローカル・システム内または分散システム内の別のコンポーネントと情報をやりとりするか、またはインターネットなどのネットワークを経由して、信号を介して他のシステムと情報をやりとりするか、あるいはその両方によって情報をやりとりする、1つのコンポーネントからのデータ)を含んでいる信号などに従って、ローカルまたはリモートあるいはその両方のプロセスを介して通信できる。別の例として、コンポーネントは、電気または電子回路によって操作される機械的部品によって提供される特定の機能を有する装置であることができ、プロセッサによって実行されるソフトウェア・アプリケーションまたはファームウェア・アプリケーションによって操作される。そのような場合、プロセッサは、装置の内部または外部に存在することができ、ソフトウェア・アプリケーションまたはファームウェア・アプリケーションの少なくとも一部を実行できる。さらに別の例として、コンポーネントは、機械的部品を含まない電子コンポーネントを介して特定の機能を提供する装置であることができ、これらの電子コンポーネントは、電子コンポーネントの機能の少なくとも一部を与えるソフトウェアまたはファームウェアを実行するためのプロセッサまたはその他の手段を含むことができる。一態様では、コンポーネントは、例えばクラウド・コンピューティング・システム内で、仮想マシンを介して電子コンポーネントをエミュレートすることができる。
【0101】
加えて、「または」という用語は、排他的論理和ではなく、包含的論理和を意味するように意図されている。すなわち、特に指定されない限り、または文脈から明らかでない限り、「XがAまたはBを採用する」は、自然な包含的順列のいずれかを意味するように意図されている。すなわち、XがAを採用するか、XがBを採用するか、またはXがAおよびBの両方を採用する場合、「XがAまたはBを採用する」が、前述の事例のいずれかにおいて満たされる。さらに、本明細書および添付の図面において使用されるとき、冠詞「a」および「an」は、単数形を対象にすることが特に指定されない限り、または文脈から明らかでない限り、「1つまたは複数」を意味すると一般に解釈されるべきである。本明細書において使用されるとき、「例」または「例示的」あるいはその両方の用語は、例、事例、または実例となることを意味するために使用される。誤解を避けるために、本明細書で開示された主題は、そのような例によって制限されない。加えて、「例」または「例示的」あるいはその両方として本明細書に記載された任意の態様または設計は、他の態様または設計よりも好ましいか、または有利であると必ずしも解釈されず、当業者に知られている同等の例示的な構造および技術を除外するように意図されていない。
【0102】
本明細書において使用されるとき、「プロセッサ」という用語は、シングルコア・プロセッサと、ソフトウェアのマルチスレッド実行機能を備えるシングルプロセッサと、マルチコア・プロセッサと、ソフトウェアのマルチスレッド実行機能を備えるマルチコア・プロセッサと、ハードウェアのマルチスレッド技術を備えるマルチコア・プロセッサと、並列プラットフォームと、分散共有メモリを備える並列プラットフォームとを含むが、これらに限定されない、実質的に任意の計算処理ユニットまたはデバイスを指すことができる。さらに、プロセッサは、集積回路、特定用途向け集積回路(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)、ダブル・データ・レートSDRAM(DDR SDRAM)、拡張SDRAM(ESDRAM)、シンクリンクDRAM(SLDRAM)、ダイレクト・ラムバスRAM(DRRAM)、ダイレクト・ラムバス・ダイナミックRAM(DRDRAM)、およびラムバス・ダイナミックRAM(RDRAM:Rambus dynamic RAM)などの、ただしこれらに限定されない、多くの形態で利用可能である。さらに、本明細書において開示されたシステムまたはコンピュータ実装方法のメモリ・コンポーネントは、これらおよび任意のその他の適切な種類のメモリを含むが、これらに限定されない、メモリを含むように意図されている。
【0103】
前述した内容は、システムおよびコンピュータ実装方法の単なる例を含んでいる。当然ながら、本発明を説明する目的で、コンポーネントまたはコンピュータ実装方法の考えられるすべての組合せについて説明することは不可能であるが、当業者は、本発明の多くのさらなる組合せおよび並べ替えが可能であるということを認識できる。さらに、「含む」、「有する」、「所有する」などの用語が、発明を実施するための形態、特許請求の範囲、付録、および図面において使用される範囲では、それらの用語は、「備えている」が特許請求における暫定的な用語として使用されるときに解釈されるような、用語「備えている」と同様の方法で、包含的であるように意図されている。
【0104】
本発明のさまざまな実施形態の説明は、例示の目的で提示されているが、網羅的であることは意図されておらず、開示された本発明の実施形態に制限されない。説明された実施形態の範囲から逸脱することなく多くの変更および変形が可能であることは、当業者にとって明らかであろう。本明細書で使用された用語は、本発明の実施形態の原理、実際の適用、または市場で見られる技術を超える技術的改良を最も良く説明するため、または他の当業者が本明細書で開示された本発明の実施形態を理解できるようにするために選択されている。
【0105】
項[1]
システムであって、
量子回路の機械可読の仕様を含んでいる入力量子回路を、テンソル・スライシングのために識別された量子ビットの少なくとも2つのグループに基づいて部分回路に分割する分割コンポーネントであって、前記部分回路が、テンソル・スライシングに使用される量子ビットの関連付けられたセットを含んでいる、前記分割コンポーネントと、
前記部分回路に基づく各段内の前記入力量子回路を、1つの部分回路につき1つの段ずつ、シミュレートされた量子状態テンソルにシミュレートするシミュレーション・コンポーネントであって、部分回路に関連付けられた量子ビットのセットが、前記入力量子回路に対して前記シミュレートされた量子状態テンソルを量子状態テンソル・スライスに分割するために使用され、前記部分回路内の量子ゲートが、前記量子状態テンソル・スライスを更新された量子状態テンソル・スライスに更新するために使用される、前記シミュレーション・コンポーネントと、
前記シミュレートされた量子状態テンソルの前記更新された量子状態テンソル・スライスを、微小スライスとして二次ストレージに格納する読取り/書込みコンポーネントとを備えている、システム。
項[2]
前記読取り/書込みコンポーネントが、前記二次ストレージの少なくとも2つのディスク・セクタにわたるサイズを有する前記微小スライスを書き込み、前記さらに更新された量子状態テンソル・スライスを前記二次ストレージに格納する、項1に記載のシステム。
項[3]
前記読取り/書込みコンポーネントが、前記更新された量子状態テンソル・スライスを前記二次ストレージから取り出し、前記シミュレーション・コンポーネントが、別の部分回路を他の部分回路テンソルに処理し、前記二次ストレージから取り出された前記更新された量子状態テンソル・スライスを使用して、前記他の部分回路テンソルをさらに更新された量子状態テンソル・スライスに更新する、項1に記載のシステム。
項[4]
前記分割コンポーネントが、前記入力量子回路を、第1の量子ビット分割グループ、第2の量子ビット分割グループ、第3の量子ビット分割グループ、および第4の量子ビット分割グループを含んでいる、前記部分回路に対応する量子ビット分割グループに分割し、前記シミュレーション・コンポーネントが、前記第3の量子ビット分割グループの量子ゲートを前記第1の量子ビット分割グループおよび第2の量子ビット分割グループの前記量子状態テンソル・スライスに適用して、前記更新された量子状態テンソルを取得し、前記読取り/書込みコンポーネントが、前記更新された量子状態テンソル・スライスを前記二次ストレージからメモリに読み取り、前記シミュレーション・コンポーネントが、前記第4の量子ビット分割グループの量子ゲートを前記更新された量子状態テンソル・スライスに適用して、さらに更新された量子状態テンソルを取得する、項1に記載のシステム。
項[5]
プロセッサに動作可能なように結合されたデバイスによって、量子回路の機械可読の仕様を含んでいる入力量子回路を処理することを含んでいるコンピュータ実装方法であって、前記処理することが、
テンソル・スライシングのために識別された量子ビットの少なくとも2つのグループに基づいて、前記入力量子回路を部分回路のグループに分割することであって、前記部分回路のグループが、テンソル・スライシングに使用される量子ビットの関連付けられたセットを含んでいる、前記分割することと、
前記入力量子回路を、前記部分回路のグループに基づく各段内で、1つの部分回路につき1つの段ずつ、シミュレートされた量子状態テンソルにシミュレートすることであって、部分回路に関連付けられた量子ビットのセットが、前記入力量子回路に対して前記シミュレートされた量子状態テンソルを量子状態テンソル・スライスに分割するために使用され、前記部分回路内の量子ゲートが、前記量子状態テンソル・スライスを更新された量子状態テンソル・スライスに更新するために使用される、前記シミュレートすることと、
前記シミュレートされた量子状態テンソルの前記更新された量子状態テンソル・スライスを、微小スライスとして二次ストレージに格納することとを含んでいる、コンピュータ実装方法。
項[6]
前記シミュレートされた量子状態テンソルの前記更新された量子状態テンソル・スライスを微小スライスとして二次ストレージに前記格納することが、前記微小スライスを前記二次ストレージの少なくとも2つのディスク・セクタに格納することを含んでいる、項5に記載のコンピュータ実装方法。
項[7]
前記デバイスによって、別の部分回路を他の部分回路テンソルに処理することと、前更新された量子状態テンソル・スライスを前記二次ストレージから取り出すことと、二次ストレージから取り出された前記更新された量子状態テンソル・スライスを使用して前記他の部分回路テンソルをさらに更新された量子状態テンソル・スライスに更新することとをさらに含んでいる、項5に記載のコンピュータ実装方法。
項[8]
前記デバイスによって、前記さらに更新された量子状態テンソル・スライスを前記二次ストレージに格納することをさらに含んでいる、項7に記載のコンピュータ実装方法。
項[9]
前記入力量子回路を前記部分回路のグループに前記分割することが、前記入力量子回路を第1の部分回路分割グループ、第2の部分回路分割グループ、および第3の部分回路分割グループに分割することを含んでおり、前記更新された量子状態テンソル・スライスを前記格納することが、前記第3の部分回路分割グループのゲートを前記第1の部分回路分割グループおよび前記第2の部分回路分割グループに対応する量子状態テンソル・スライスに適用して前記更新された量子状態テンソル・スライスを取得することを含んでいる、項5に記載のコンピュータ実装方法。
項[10]
前記入力量子回路を前記部分回路のグループに前記分割することが、前記入力量子回路を第4の部分回路分割グループに分割することをさらに含んでおり、前記更新された量子状態テンソル・スライスを前記二次ストレージから取り出すことをさらに含んでおり、前記二次ストレージから取り出された前記更新された量子状態テンソル・スライスを使用して、他の部分回路テンソルをさらに更新された量子状態テンソル・スライスに更新することが、前記第4の部分回路分割グループのゲートを適用することを含んでいる、項9に記載のコンピュータ実装方法。
項[11]
プロセッサに動作可能なように結合されたデバイスによって、量子回路の機械可読の仕様を含んでいる入力量子回路をシミュレートすることを含んでいるコンピュータ実装方法であって、前記シミュレートすることが、
テンソル・スライシングのために識別された量子ビットの少なくとも2つのグループに基づいて、前記入力量子回路をメタ部分回路に分割することであって、前記メタ部分回路のうちの少なくとも1つのメタ部分回路のメモリ容量が、単一のプロセッサのメモリ容量を超える、前記分割することと、
メタ部分回路を単一のプロセッサの前記メモリ内に収まる下位部分回路にさらに分割することと、
前記下位部分回路に対してテンソルを計算することと、
テンソル・スライシングによって、前記テンソルをテンソル・スライスに縮小させることとを含んでいる、コンピュータ実装方法。
項[12]
前記デバイスによって、別の部分回路のゲートを前記テンソル・スライスに適用して、量子状態データを表す更新されたテンソル・スライスを取得することと、前記更新されたテンソル・スライスを二次ストレージに格納することとをさらに含んでいる、項11に記載のコンピュータ実装方法。
項[13]
前記デバイスによって、前記更新されたテンソル・スライスを二次ストレージから取り出すことと、さらに他の部分回路のゲートを前記更新されたテンソル・スライスに適用して、さらに更新されたテンソル・スライスを取得することとをさらに含んでいる、項12に記載のコンピュータ実装方法。
項[14]
二次ストレージが、1つまたは複数のディスク・デバイスを備えており、メタ・スライスを微小スライスに構造化することをさらに含んでおり、前記微小スライスのサイズが、前記二次ストレージの少なくとも2つのディスク・セクタにわたり、前記更新されたテンソル・スライスを前記二次ストレージに前記格納することが、前記微小スライスを格納することを含んでいる、項11に記載のコンピュータ実装方法。
項[15]
量子回路の機械可読の仕様を含んでいる入力量子回路を含む量子回路をシミュレートするためのコンピュータ・プログラム製品であって、前記コンピュータ・プログラム製品が、プログラム命令が具現化されている1つまたは複数のコンピュータ可読ストレージ媒体を備えており、前記プログラム命令が、前記プロセッサに、項5ないし14のいずれかに記載の方法を実行させるために、処理コンポーネントによって実行可能である、コンピュータ・プログラム製品。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18
図19
図20
図21