(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-10-31
(54)【発明の名称】貯蔵装置を用いた量子回路シミュレーションシステム及びその動作方法
(51)【国際特許分類】
G06F 7/38 20060101AFI20241024BHJP
G06N 10/80 20220101ALI20241024BHJP
G06F 30/3308 20200101ALI20241024BHJP
【FI】
G06F7/38 510
G06N10/80
G06F30/3308
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2024523532
(86)(22)【出願日】2022-04-11
(85)【翻訳文提出日】2024-04-18
(86)【国際出願番号】 KR2022005230
(87)【国際公開番号】W WO2023068464
(87)【国際公開日】2023-04-27
(31)【優先権主張番号】10-2021-0141160
(32)【優先日】2021-10-21
(33)【優先権主張国・地域又は機関】KR
(31)【優先権主張番号】10-2022-0043556
(32)【優先日】2022-04-07
(33)【優先権主張国・地域又は機関】KR
(81)【指定国・地域】
(71)【出願人】
【識別番号】509329800
【氏名又は名称】ソウル大学校産学協力団
【氏名又は名称原語表記】SEOUL NATIONAL UNIVERSITY R&DB FOUNDATION
(74)【代理人】
【識別番号】100114557
【氏名又は名称】河野 英仁
(74)【代理人】
【識別番号】100078868
【氏名又は名称】河野 登夫
(72)【発明者】
【氏名】イ,ジェジン
(72)【発明者】
【氏名】パク,テヨン
(72)【発明者】
【氏名】キム,ヒフン
(72)【発明者】
【氏名】キム,ジンピョ
【テーマコード(参考)】
5B146
【Fターム(参考)】
5B146GJ07
(57)【要約】
本開示による量子回路シミュレーション装置は、1つ以上の貯蔵装置を含む貯蔵装置システム及び前記貯蔵装置システムと連結されて量子回路をシミュレーションするホストシステムを含み、前記貯蔵装置システムに貯蔵された前記量子回路を1つ以上の部分回路に分割し、前記ホストシステムが前記1つ以上の部分回路を順次メインメモリー上におけるシミュレーションすることができる。
【特許請求の範囲】
【請求項1】
1つ以上の貯蔵装置を含む貯蔵装置システム;及び
前記貯蔵装置システムと連結されて量子回路をシミュレーションするホストシステムを含み、
前記貯蔵装置システムに貯蔵された前記量子回路を1つ以上の部分回路に分割し、前記ホストシステムが前記1つ以上の部分回路を順次メインメモリー上におけるシミュレーションするようにすることを特徴とする量子回路シミュレーション装置。
【請求項2】
前記ホストシステムは、前記1つ以上の部分回路のそれぞれに対して、ぞれぞれのシミュレーションする間、必要なそれぞれの確率振幅データが連続的に貯蔵されている前記貯蔵装置システムに一回アクセスし、前記それぞれの確率振幅データを前記メインメモリー上に連続的に読み込み、前記1つ以上の部分回路のそれぞれのシミュレーション結果である確率振幅データが連続的に貯蔵されている前記メインメモリー上における前記確率振幅データを前記貯蔵装置システムに連続的に書くようにすることを特徴とする請求項1に記載の量子回路シミュレーション装置。
【請求項3】
前記ホストシステムは、前記メインメモリーのサイズに応じて設定されたパラメータMを基準に、ヒューリスティックアルゴリズムを用いて前記量子回路の量子ゲートを順次確認して部分回路を生成するようにすることを特徴とする請求項1に記載の量子回路シミュレーション装置。
【請求項4】
前記ホストシステムは、前記1つ以上の部分回路のそれぞれに対する順列演算を、1段階インメモリー順列演算、2段階ブロック順列演算、及び3段階インメモリー順列演算に変換して順次実行するようにすることを特徴とする請求項1に記載の量子回路シミュレーション装置。
【請求項5】
前記1段階インメモリー順列演算及び前記3段階インメモリー順列演算は、前記メインメモリー上におけるデータレイアウトを変更し、前記2段階ブロック順列演算は、前記貯蔵装置上におけるデータレイアウトを変更するようにすることを特徴とする請求項4に記載の量子回路シミュレーション装置。
【請求項6】
前記ホストシステムは、前記1つ以上の部分回路を順次シミュレーションする間、現在のメモリー演算中である部分回路の演算中に次の順番の部分回路に対する確率振幅データを前記貯蔵装置システムに一回アクセスして、前記次の順番の部分回路のシミュレーション前に予め前記メインメモリーに連続的に読み込むようにすることを特徴とする請求項1に記載の量子回路シミュレーション装置。
【請求項7】
前記貯蔵装置は、HDD、SSD、またはNVMeのいずれか1つを含むようにすることを特徴とする請求項1に記載の量子回路シミュレーション装置。
【請求項8】
貯蔵装置に貯蔵された入力量子回路を1つ以上の部分回路に分割する段階;及び
前記1つ以上の部分回路を順次に前記貯蔵装置から読み込んでメインメモリー上におけるシミュレーションする段階;
を含むことを特徴とする量子回路をシミュレーションする方法。
【請求項9】
前記メインメモリー上におけるシミュレーションする段階は、
前記1つ以上の部分回路のそれぞれに対して、それぞれのシミュレーションする間、必要なそれぞれの確率振幅データが連続的に貯蔵されている前記貯蔵装置に一回アクセスして、前記それぞれの確率振幅データを前記メインメモリー上に連続的に読み込むようにすることを特徴とする請求項8に記載の量子回路をシミュレーションする方法。
【請求項10】
前記1つ以上の部分回路のそれぞれのシミュレーション結果である確率振幅データが連続的に貯蔵されている前記メインメモリー上における前記確率振幅データを前記貯蔵装置に連続的に書くようにする段階;
を更に含むことを特徴とする請求項9に記載の量子回路をシミュレーションする方法。
【請求項11】
前記1つ以上の部分回路に分割する段階は、
前記メインメモリーのサイズに応じて設定されたパラメータMを基準に、ヒューリスティックアルゴリズムを用いて前記入力量子回路の量子ゲートを順次確認して部分回路を生成するようにすることを特徴とする請求項8に記載の量子回路をシミュレーションする方法。
【請求項12】
前記シミュレーションする段階は、
前記1つ以上の部分回路のそれぞれに対する順列演算を1段階インメモリー順列演算、2段階ブロック順列演算、及び3段階インメモリー順列演算に変換して順次実行するようにすることを特徴とする請求項8に記載の量子回路をシミュレーションする方法。
【請求項13】
前記1段階インメモリー順列演算及び前記3段階インメモリー順列演算は、前記メインメモリー上におけるデータレイアウトを変更し、前記2段階ブロック順列演算は、前記貯蔵装置上におけるデータレイアウトを変更するようにすることを特徴とする請求項12に記載の量子回路をシミュレーションする方法。
【請求項14】
前記シミュレーションする段階は、
前記1つ以上の部分回路を順次シミュレーションする間、現在のメモリー演算中である部分回路の演算中に次の順番の部分回路に対する確率振幅データを前記貯蔵装置に一回アクセスして、前記次の順番の部分回路のシミュレーション前に予め前記メインメモリーに連続的に読み込むようにすることを特徴とする請求項8に記載の量子回路をシミュレーションする方法。
【請求項15】
プロセッサにより実行されるように構成された少なくとも1つの命令語を含むコンピュータプログラムを貯蔵したコンピュータ可読非一時的な記録媒体であることを特徴とする請求項8乃至14のいずれか一項に記載の量子回路をシミュレーションする方法。
【発明の詳細な説明】
【技術分野】
【0001】
量子回路シミュレーション技術に連関し、より具体的には、古典的なコンピュータ(classical computers)を用いて量子回路として記述されたアルゴリズムを実行する技術に連関しる。
【背景技術】
【0002】
量子コンピューティングは、量子重ね合せ(superposition)及びもつれ(entanglement)などの量子力学的な現象を用いたコンピューティングパラダイムである。量子コンピューティングの最小単位は量子ビット(qubit)であって、古典的なコンピューティングのビット(bit)に反して、0と1などの重ね合せ状態を表すことができる。量子コンピューティングの計算モデルは、量子回路(quantum circuit)と呼ばれ、量子回路は、N個の量子ビットとその量子ビットに作用する一連の量子ゲート(quantum gate)の集合である。
【0003】
量子情報を古典的なコンピュータで表すためには、指数的に増加するメモリーが要求される。N個の量子ビットが表現する状態は、合計2n個の振幅(amplitude)で表すことができる。各振幅は、複素数で表現され、一般に16バイトのメモリーで表すことができる。従って、N個の量子ビットからなる量子回路をシミュレーションするためには、2(N+4)バイトの貯蔵スペースが必要である。指数的に増加するメモリー要求量は、量子回路シミュレーションの最大の障壁である。
【0004】
既存の量子回路シミュレーション技術は、膨大なメモリー要件量を満たすために数千から数万のノード規模のスーパーコンピュータを使用する。ところが、このような技術は、現在最大のスーパーコンピュータを使用しても、50量子ビット以上の量子回路シミュレーションが困難である。だけでなく、このようなスーパーコンピュータを使用するには膨大なコストを要求し、一般のユーザーはアクセスさえ困難であるという欠点を有する。
【発明の概要】
【発明が解決しようとする課題】
【0005】
実施例によると、複数の貯蔵装置を含むストレージシステムと連結されたホストシステムにおいて、量子回路を複数の部分回路単位でシミュレーションするシステムが提供されることができる。
【0006】
実施例によると、メモリーに比べて安価であり、貯蔵容量が大きい、例えば、HDD、SSD、 NVMeなどの貯蔵装置を用いて量子回路シミュレーションのため、必要な貯蔵スペースを確保し、合理的なコストと時間内に量子回路をシミュレーションする方法が提供されることができる。
【0007】
実施例によると、メモリーアクセス回数を最小化する部分回路単位でシミュレーションし、メモリー帯域幅を最大限に活用するための順列演算を3段階演算で実行し、プリフェッチ技術を適用して最適化されたシミュレーション方法が提供されることができる。
前述以外の他の側面、特徴及び利点は、以下の図面、特許請求の範囲及び発明の詳細な説明から明らかになる。
【課題を解決するための手段】
【0008】
実施例の一側面による量子回路シミュレーション装置は、1つ以上の貯蔵装置を含む貯蔵装置システム;及び前記貯蔵装置システムと連結されて量子回路をシミュレーションするホストシステムを含み、前記貯蔵装置システムに貯蔵された前記量子回路を1つ以上の部分回路に分割し、前記ホストシステムが前記1つ以上の部分回路を順次メインメモリー上におけるシミュレーションすることができる。
【0009】
他の一側面による量子回路をシミュレーションする方法は、貯蔵装置に貯蔵された入力量子回路を1つ以上の部分回路に分割する段階;及び前記1つ以上の部分回路を順次に前記貯蔵装置から読み込んでメインメモリー上におけるシミュレーションする段階を含むことができる。
【発明の効果】
【0010】
従来技術における使用されているDRAMは、GBあたりのコストを基準にHDDより297倍が高いだけでなく、2021年の世界最高の性能を持つスーパーコンピュータの場合でも、50量子ビット級の量子回路シミュレーションが不可能である。ところが、本開示の実施例によると、80x16TB HDDから構成された貯蔵装置システム16個のみを使用して50量子ビットサイズの量子回路をシミュレーションすることができる。実施例による貯蔵装置を用いた量子回路シミュレーションシステム及び最適化方法は、スケーラビリティ(scalability)と経済性を同時に有する効果がある。
【図面の簡単な説明】
【0011】
【
図1】一実施例による貯蔵装置を用いた量子回路シミュレーション装置のブロック図である。
【
図2】一実施例による貯蔵装置を用いた量子回路シミュレーション方法のフローチャートである。
【
図3】一実施例における入力量子回路を分割した部分回路の一例である。
【
図4】一実施例による入力量子回路を分割する方法のフローチャートである。
【
図5】一実施例による複数の部分回路をシミュレーションする方法のフローチャートである。
【
図6】一実施例による複数の部分回路をシミュレーションするデータ表現の一例である。
【
図7】一実施例による貯蔵装置システムの具現例である。
【発明を実施するための形態】
【0012】
以下においては、実施例を添付の図面を参照して詳細に説明する。ところが、このような実施例により権利範囲が制限されたり、限定されたりするものではない。各図面に示された同じ参照符号は同じ部材を示す。
【0013】
以下の説明における使用される用語は、関連する技術分野における一般的、普遍的なものとして選択されているが、技術の発達及び/または変化、関連技術者の好みなどに応じて他の用語があり得る。従って、以下の説明における使用される用語は、技術的な思想を限定するものとして理解されるべきではなく、実施例を説明するための例示的な用語として理解されるべきである。
【0014】
なお、特定の場合は、出願人が任意に選定した用語もあり、その場合は、該当する説明部分で詳細なその意味を記載する。従って、以下の説明における使用される用語は、単なる用語の名称ではなく、その用語が有する意味と明細書全体にわたる内容に基づいて理解されるべきである。
【0015】
図1は、一実施例による貯蔵装置を用いた量子回路シミュレーション装置のブロック図である。量子回路シミュレーション装置100は、ホストシステム110と貯蔵装置システム120とを含むことができる。ホストシステム110は、実際の演算が実行されるシステムであって、CPU、メインメモリーを有し、GPUを含む異種システムを網羅する。貯蔵装置システム120は、複数の貯蔵装置からなるシステムであって、貯蔵装置は、例えば、 HDD、SSD、 NVMeなどである。貯蔵装置システム120は、ホストシステム110とRAID(Redundant Array of Independent Disks; RAID)カード130を介して連結されることができる。RAIDカード130は、複数配列独立ディスクをホストCPUと連結するためのものであって、主にPCIeスロットに結合して動作することができる。PCIe(PCI express)は、入出力用の直列構造のインタフェースを指す。
【0016】
量子回路シミュレーション装置100は、入力データとして量子回路を入力受けて、部分回路分割(sub-circuit partitioning)過程を通じて複数の部分回路に分割する。量子回路シミュレーション装置100は、各部分回路単位で全ての部分回路を順次実行する。量子回路シミュレーション装置100は、量子システムの状態(量子ビットの重ね合せ及びもつれ状態)を確率振幅(probability amplitude)として表現することができる。N量子ビット量子回路を表現するためには、量子回路シミュレーション装置100は,2N個の確率振幅データを貯蔵しなければならず、各量子ゲート演算は、2N個の確率振幅データの更新と見なすことができる。
【0017】
一実施例によると、量子回路シミュレーション装置100は、1つ以上の貯蔵装置を含む貯蔵装置システム120、及び貯蔵装置システム120と結合されて量子回路をシミュレーションするホストシステム110を含み、貯蔵装置システム120に貯蔵された量子回路を1つ以上の部分回路に分割し、ホストシステム110が1つ以上の部分回路を順次メインメモリー上でシミュレーションすることができる。一実施例における前記ホストシステムは、1つ以上の部分回路のそれぞれに対して、各シミュレーションする間に必要なそれぞれの確率振幅データが連続的に貯蔵されている前記貯蔵装置システムに一回アクセスして、前記それぞれの確率振幅データを前記メインメモリー上に連続的に読み込み、前記1つ以上の部分回路のそれぞれのシミュレーション結果である確率振幅データが連続的に貯蔵されている前記メインメモリー上における前記確率振幅データを前記貯蔵装置システムに連続的に書くようにすることができる。一実施例における前記ホストシステムは、入力量子回路をできるだけ少ない個数の部分回路に分割するようにすることができる。
【0018】
一実施例によると、量子回路シミュレーション装置100のホストシステム110は、メインメモリーのサイズに応じて設定されたパラメータMを基準に、ヒューリスティックアルゴリズムを用いて、入力量子回路の量子ゲートを順次確認して部分回路を生成することができる。
【0019】
一実施例によると、量子回路シミュレーション装置100のホストシステム110は、1つ以上の部分回路のそれぞれに対する順列演算を、1段階インメモリー順列演算、2段階ブロック順列演算及び3段階インメモリー順列演算に変換して順次実行することができる。一実施例における1段階インメモリー順列演算及び3段階インメモリー順列演算は、メインメモリー上におけるデータレイアウトを変更し、2段階ブロック順列演算を貯蔵装置上におけるデータレイアウトを変更することができる。
【0020】
一実施例によると、量子回路シミュレーション装置100は、1つ以上の部分回路を順次シミュレーションする間、現在のメモリー演算中の部分回路の演算中に次の順番の部分回路に対する確率振幅データを前記貯蔵装置システムに一回アクセスして、前記次の順番の部分回路のシミュレーションの前に、予め前記メインメモリーに連続的に読み込むことができる。
【0021】
一実施例における貯蔵装置システム120は、HDD、SSD、またはNVMeのいずれか1つを含むことができる。
【0022】
図2は、一実施例による貯蔵装置を用いた量子回路シミュレーション方法のフローチャートである。
【0023】
S210段階において、量子回路シミュレーション装置100は、第1量子回路を入力受けることができる。第1量子回路は、N個の量子ビットとその量子ビットに作用する一連の量子ゲート集合である。N個の量子ビットが表現する状態は、合計2N個の振幅で表すことができ、各振幅は複素数で表現され、一般に16バイトのメモリーで表す。第1量子回路は、2N個の確率振幅データで表現されることができ、各量子ゲート演算は、2N個の確率振幅データの更新で表現することができる。N個の量子ビットからなる量子回路をシミュレーションするためには、2(N+4)バイトの貯蔵スペースが必要である。
【0024】
S220段階において、量子回路シミュレーション装置100は、パラメータMを用いて第1量子回路を1つ以上の部分回路に分割することができる。部分回路は、2つの特徴を有する。一番目、各部分回路におけるゲートは、最初からM個の連続された量子ビットにのみ適用されることができる。その際、M値は、パラメータに与えられ、2(M+4)がホストシステムの全体のメモリー(DRAM)サイズより小さい値に設定される。二番目、各部分回路は、1つの順列(permutation)を割り当てられ、このような順列の順番に合わせてゲートが再位置するようになる。たとえば、入力量子回路を3つの部分回路に分割する場合、各部分回路は(q4q3q2q1q0)、(q1q2q0q4q3)、(q3q1q4q2q0)の順列を割り当てられる。入力量子回路を部分回路に分割する目的は、シミュレーション実行中の貯蔵装置に対するアクセス回数(またはサイズ)を減らすためのものである。様々な実施例において、入力として与えられた量子回路を複数の部分回路に分割し、各部分回路は、ひたすら実行可能な量子ゲートのみを含むことができる。実行可能な量子ゲートのみを含む部分回路を実行する場合、各部分回路のすべての量子ゲート演算は、追加の貯蔵装置のアクセスなしに実行されることができる。一実施例における量子回路シミュレーション装置100は、入力量子回路を部分回路に分割するため、ヒューリスティックアルゴリズムを用いて、次に使用される可能性が高い量子ビットを量子回路上における下に位置するようにすることができる。様々な実施例において、入力量子回路を効率的な実行単位である部分回路に分割するアルゴリズムは、1つ以上であり得、量子回路シミュレーション装置100の特徴に応じて違えて具現され得ることは明らかである。様々な実施例において、入力量子回路に対してできるだけ、少ない数の部分回路を生成することができる。
【0025】
S230段階において、量子回路シミュレーション装置100は、1つ以上の部分回路を順次シミュレーションすることができる。量子回路シミュレーション装置100は、部分回路をシミュレーションするために部分回路に対する確率振幅データが連続的に貯蔵されている貯蔵装置システムにひたすら一回だけアクセスし、確率振幅データをメインメモリー上に連続的に読み込むことができる。各部分回路に割り当てられた順列に応じて、貯蔵装置から読み込まれる単位サイズが最小16バイトに非常に小さくなることができ、このような場合、貯蔵装置の帯域幅を十分に活用できないという問題が発生することができる。様々な実施例における量子回路シミュレーション装置100は、3段階順列演算(3-step permutation)を適用して、すべての貯蔵装置に対するアクセス演算の最小単位を比較的に大きく固定させることができる。3段階順列演算は、1つの順列演算を3段階に分けて実行する。その際、順列は、2つのインメモリー順列(in-memory permutation)とブロック順列(block permutation)に分けられ、インメモリー順列-ブロック順列-インメモリー順列の順に実行される。インメモリー順列は、データをメインメモリーに読み込んだ後、メモリー上におけるデータレイアウトを変更する演算を指す。ブロック順列は、貯蔵装置上におけるデータレイアウトを変更することを指す。3段階順列演算を使用して、すべての貯蔵装置に対するアクセス演算の最小単位を比較的に大きく固定させることにより、単なメモリーアクセス演算を実行することよりもずっと貯蔵装置の帯域幅をうまく活用する効果を有する。但し、2つのインメモリー順列のための追加のメモリー演算が必要であるが、これはメモリーに対するアクセスであり、貯蔵装置アクセスよりずっと高速であるため、全体の演算時間を考慮する際、3段階順列演算を適用する方が更に効率的である。
【0026】
一実施例における量子回路シミュレーション装置100は、分割された部分回路が順次シミュレーションするため、現在の実行中の部分回路の次に使用される部分回路に対するデータの正確な位置値を知ることができる。従って、量子回路シミュレーション装置100は、シミュレーションを最適化するため、プリフェッチ技術を適用することができる。量子回路シミュレーション装置100は、現在の実行中の第1部分回路の次に実行される第2部分回路に対する確率振幅データを予め、即ち、第1部分回路実行中に第2部分回路に対する確率振幅データが連続的に貯蔵された貯蔵装置に一回アクセスしてメインメモリーにロードすることができる。
【0027】
一実施例における量子回路シミュレーション装置100は、各部分回路に対するシミュレーション結果に応じて、メインメモリーに連続的に貯蔵された確率振幅データをひたすら1回だけのアクセスで貯蔵装置に連続的に書くようにすることができる。
【0028】
図3は、一実施例における入力量子回路を分割した部分回路の例示である。様々な実施例における入力量子回路を効率的に実行するための単位である部分回路に分割することができる。部分回路分割の目的は、貯蔵装置に対するアクセスを減らすことにある。量子回路における各量子ゲートの適用位置に応じてメモリーアクセスパターンが決定される。例えば、一番目の量子ビットに適用される量子ゲートは、16バイトの距離(stride)に位置した2つのデータを同時に読み込まなければならず、下から二番目の量子ビットに適用される量子ゲートは、32バイトの距離に位置した2つのデータを同時にアクセスしなければならない。一般に、下からk番目の量子ビットに適用される量子ゲートは、2
k+3バイトの距離に位置した2つのデータを同時に必要とする。若し、メインメモリーに連続された2M個のデータが貯蔵されている場合、下からM番目或いはその以上に位置した量子ビットに対する量子ゲートは、すぐには実行されることはできない。量子ゲートの適用に必要なデータ対のうちの片方がメインメモリーに載せられていないためである。従って、このような場合には、量子ゲートを実行するための追加の貯蔵装置アクセスが必要である。様々な実施例における量子回路シミュレーション装置100は、入力量子回路を効率的に実行するためにメインメモリーのサイズに応じてパラメータMを設定し、Mを用いて入力量子回路を1つ以上の部分回路に分割して、部分回路単位でシミュレーションを実行することができる。
【0029】
図3を参照すると、量子回路シミュレーション装置100は、ヒューリスティックアルゴリズムを用いて入力量子回路310を3つの部分回路320、330、340に分割することができる。量子回路シミュレーション装置100は、別の貯蔵装置システム120の追加のアクセスなしに実行可能な最大サイズの部分回路に分割するため、ホストシステム110のメインメモリー(DRAM)のサイズを考慮して、パラメータMを設定することができる。例えば、パラメータMは、メインメモリーのサイズより2
(M+4)が小さく設定されることができる。
図3におけるM=4である。各部分回路におけるゲートは、最初からM個の連続された量子ビットにのみ適用されることができる。即ち、各部分回路に適用されるゲートは、下から最大4個(Mサイズ)の量子ビットに限ってまでしか適用されることができ、最上段に位置した量子ビットには適用されない。パラメータMを用いて分割された部分回路は、ひたすら実行可能な量子ゲートのみを含み、実行中に追加の貯蔵装置に対するアクセスは必要ではない。量子回路シミュレーション装置100は、部分回路単位でシミュレーションを実行することにより、ひたすら必要なデータ対を貯蔵装置から読み込む演算1回、計算された結果値を再び貯蔵装置に貯蔵する演算1回が必要となる。
【0030】
量子回路シミュレーション装置100は、分割された部分回路にそれぞれの順列を割り当て、
図3のように順列の順番に合わせてゲートを再位置させることができる。入力量子回路は(q
4q
3q
2q
1q
0)の順に割り当てられており、分割された第1部分回路320は(q
4q
3q
2q
1q
0)順に、第2部分回路330は(q
1q
2q
0q
4q
3)順に、第3部分回路340は(q
3q
1q
4q
2q
0)順に割り当てられると、順列に応じてゲートの位置が変更される。
【0031】
図4は、一実施例による入力量子回路を分割する方法のフローチャートである。量子回路シミュレーション装置100は、メインメモリーのサイズに応じて部分回路を分割することができる。様々な実施例において、量子回路シミュレーション装置100の量子回路シミュレーションに要求される貯蔵装置の総アクセス回数は、部分回路の個数に比例する。高性能シミュレーションをするためには、少ない数の部分回路を生成しなければならない。従って、部分回路を分割するアルゴリズムは困難な問題であり、1つ以上であり得る。様々な実施例における量子回路シミュレーション装置100は、入力量子回路に対してできるだけ、少ない数の部分回路を生成することができる。一実施例における量子回路シミュレーション装置100は、ヒューリスティック(heuristic)方法に応じて入力量子回路を、実行可能なゲートのみを含む部分回路に分割することができる。以下においては、
図3の入力量子回路を、例を挙げて分割する方法を説明する。
【0032】
S410段階において、量子回路シミュレーション装置100は、量子ゲートを整列することができる。量子回路シミュレーション装置100は、ゲートが適用される量子ビットの番号が小さいものが先に来るように整列することができ、互いに異なる2つのゲートが同じ量子ビットに適用される時には、入力量子回路における順番を満たすように整列することができる。
【0033】
S420段階において、量子回路シミュレーション装置100は、現在の順列変数を同一順列(identity permutation)に初期化することができる。例えば、
図3の入力量子回路の同一順列は(q
4q
3q
2q
1q
0)である。
【0034】
S430段階において、量子回路シミュレーション装置100は、量子ゲート整列リストを、順次に量子ゲートが適用される量子ビットの番号がパラメータMより大きいゲートを探索することができる。若し、パラメータMより大きいゲートが存在しなければ、量子回路シミュレーション装置100は、全体のゲート集合を1つの部分回路に作って、アルゴリズムを終了することができる。その際、量子回路シミュレーション装置100は、部分回路に現在の順列変数に貯蔵された順列を割り当てる。
【0035】
S440段階において、量子回路シミュレーション装置100は、最前の量子ゲートと探索された量子ゲートとの間に位置した全てのゲートを含む部分回路を生成することができる。但し、探索された量子ゲートは含まれない。その際、生成された部分回路に現在の順列変数に貯蔵された順列が割り当てられ、ヒューリスティック順列生成方法により得られた順列を現在の順列変数に貯蔵することができる。ヒューリスティック順列生成方法は、次のA、B、Cの段階で定義することができる。
【0036】
A段階において、現在の順列変数に貯蔵された順列の右側からM個の量子ビットを、ローカル(local)量子ビット、それ以外の量子ビットを非ローカル(non-local)量子ビットと定義することができる。例えば、現在の保存された順列(更新前に貯蔵された順列)が(q1q2q0q4q3)であり、M=4であれば、q3q4q0q2はローカル量子ビット、q1は非ローカル量子ビットである。
【0037】
B段階において、探索された量子ゲートとその後に位置した量子ゲートを1つずつ調べる。その際、各量子ゲートが適用される量子ビットがローカルであれば、該量子ビットのローカルカウントを1増加させ、非ローカルであれば、該量子ビットの非ローカルカウントを1増加させる。探索された量子ゲートが適用される量子ビットのローカル及び非ローカルカウント値は、無限に設定する。
【0038】
C段階において、B段階から見つけたカウントに基づいて量子ビットを整列して順列を返す。その際、量子ビットの順番は、非ローカルカウントが大きいほど、同じ場合は、ローカルカウントが大きいほど右側に位置するようにする。即ち、量子回路上における下に位置することになる。
【0039】
S450段階において、量子回路シミュレーション装置100は、整列した量子ゲートが残っている間、S430乃至S440段階を繰り返すことができる。
【0040】
図5は、一実施例による複数の部分回路をシミュレーションする方法のフローチャートである。量子回路シミュレーション装置100は、入力量子回路を分割した複数の部分回路のそれぞれに対して、以下の段階に応じてシミュレーションを実行することができる。
S510段階において、量子回路シミュレーション装置100は、第1部分回路に対する確率振幅データを連続的に読み込むことができる。一実施例における量子回路シミュレーション装置100は、貯蔵装置システム120から貯蔵装置に連続的に貯蔵された第1部分回路に対する2
(M+4)バイトの確率振幅データをメインメモリーに連続的に読む(read)ことができる。各部分回路の確率振幅データが貯蔵された正確な位置は、該部分回路に割り当てられた順列に応じて決定される。任意の順列が与えられた時の任意の量子ビットの情報(i.e.,amplitude)|b
n ...b
1b
0>が貯蔵された位置は、数1の通りである。
【0041】
【0042】
数1において、π(qj)は、与えられた順列におけるqjが右側から何番目に位置するかを示す。例えば、順列(q1q2q0q4q3)に対してπ(q3)、π(q2)は、それぞれの0と3である。数式1を通じて任意の順列に対して各量子ビットの位置情報をすべて知ることができるが、単にこれを用いて値を読んだり、書いたりすることは非効率的である。なぜなら、順列により貯蔵装置から読み込む単位サイズが非常に小さくなることがあり(最小16バイト)、このような場合には、貯蔵装置の帯域幅を十分に活用できないという問題が発生するためである。一実施例においては、このような問題を解決するため、3段階順列演算(3-step permutation)方法に応じて量子回路をシミュレーションする。
【0043】
S520段階において、量子回路シミュレーション装置100は、第1部分回路に対する順列演算を3段階順列演算に応じて実行する。一実施例における3段階順列演算は、1つの順列演算を3段階に分けて実行するものである。その際、順列は、2つのインメモリー順列(in-memory permutation)とブロック順列(block permutation)に分けられ、インメモリー順列-ブロック順列-インメモリー順列の順に実行される。インメモリー順列は、データをメインメモリーに読み込んだ後に、メモリー上におけるデータレイアウトを変更する演算を指す。任意のインメモリー順列は、順列の中でもローカル量子ビットのみが変化する順列を指す。例えば、(q1q2q0q4q3)は、インメモリー順列ではないが、(q4q2q0q1q3)は、インメモリー順列である。ブロック順列は、貯蔵装置上におけるデータレイアウトを変更することを指す。その際、ブロック順列は、順列の中でも左側からB個の量子ビットのみが変化する順列を意味する。例えば、B=2の場合(q1q2q0q4q3)は,ブロック順列ではないが、(q3q4q2q1q0)は、ブロック順列である。
【0044】
任意の順列は、容易に3段階順列に変換されることができる。例えば、(q1q2q0q4q3)の順列は、次のように変換される。
(q4q1q2q3q01段階インメモリー順列)-(q1q4q2q3q02段階ブロック順列)-(q1q2q0q4q33段階インメモリー順列)
【0045】
S521段階において、第1部分回路の順列を変換した1段階インメモリー順列演算を実行し、S522段階において、第1部分回路の順列を変換した2段階ブロック順列演算を実行し、S523段階において、第1部分回路の順列を変換した3段階インメモリー順列演算を実行することができる。3段階順列演算を使用すると、すべての貯蔵装置に対するアクセス演算の最小単位を最大限固定させることができ、単なアクセスより貯蔵装置の帯域幅をずっとうまく活用することができる。一方、2つのインメモリー順列のための追加のメモリー演算が必要であるが、これはメモリーに対するアクセスであり、貯蔵装置のアクセスよりもずっと高速であるため、甘受してもよい。
【0046】
S520段階において、量子回路シミュレーション装置100は、メインメモリーに載せられた2(M+4)バイトの確率振幅データに部分回路のゲート演算を適用することができる。ゲート演算のため、任意の変用が可能である。例えば、CPUの代わりにGPUを用いて演算を行うこともでき、この場合は、メインメモリーとGPUメモリーとの間の通信が追加されることができる。
【0047】
分割された部分回路は、順次(例えば、部分回路1、部分回路2、部分回路3の順に)量子回路シミュレーターによりシミュレーションされる。その際、量子回路シミュレーターは、次に使用される部分回路に対する確率振幅データの正確な位置値をすべて知っており、それを使用する前に予めメインメモリーに載せるプリフェッチ技術を適用する。特に量子ゲート演算が進行中の場合には、次に使用される確率振幅データを予めメインメモリーに載せて演算-通信重ね合せ効果をもたらし、全体の実行時間を効率的に最小化することができる。
【0048】
S530段階において、量子回路シミュレーション装置100は、第1部分回路に対する演算結果値としてメインメモリーに連続的に貯蔵された2(M+4)バイトの確率振幅データを貯蔵装置システム120に連続的に書く(write)ことができる。量子回路シミュレーション装置100は、次の部分回路に対してS510段階乃至S530段階を順次繰り返すことができる。
【0049】
図6は、一実施例による複数の部分回路をシミュレーションするデータ表現の例示である。
図3の入力量子回路310を分割した3つの部分回路320、330、340に対して、各3段階順列演算を適用したデータレイアウトの変化を示す。
【0050】
まず、第1部分回路320は、同一順列から出発して、1段階インメモリー順列、2段階ブロック順列、3段階インメモリー順列の順(丸数字の1,2,3,4)にデータレイアウトが変化することを見せる。貯蔵装置に対するアクセス(storage write/read)は、2段階のブロック順列前に行われる。次いで、第2部分回路33に対する3段階順列演算が実行されることにより(丸数字の5,6,7,8)、データレイアウトが変化することを見せる。
【0051】
図7は、一実施例による貯蔵装置システムの具現例示である。貯蔵装置システムは、DRAMより低コストで高容量を提供する貯蔵装置で構成されることができ、1つ以上の貯蔵装置を含んで構成されることができる。
図7を参照すると、HDDを用いて貯蔵装置システム120を構成した。量子回路シミュレーション装置100は、RAIDカード130を通じてホストシステム110と貯蔵装置システム120とを連結することができる。RAIDカード130は、PCIeスロットでホストシステムと連結されることができ、SAS拡張カードを用いてSATA3を支援するHDD貯蔵装置と連結されることができる。
【0052】
以上で説明した実施例は、ハードウェア構成要素、ソフトウェア構成要素、及び/またはハードウェア構成要素及びソフトウェア構成要素の組み合わせで具現されることができる。例えば、実施例で説明した装置、方法、及び構成要素は、例えば、プロセッサ、コントローラ、ALU(arithmetic logic unit)、デジタル信号プロセッサ(digital signal processor)、マイクロコンピュータ、FPGA(field programmable gate array)、PLU(programmable logic unit)、マイクロプロセッサ、または命令(instruction)を実行及び応答することができる他のいかなる装置のように、1つ以上の汎用コンピュータまたは特殊目的のコンピュータを用いて具現されることができる。処理装置は、オペレーティングシステム(OS)及び前記オペレーティングシステム上における実行される1つ以上のソフトウェアアプリケーションを実行することができる。なお、処理装置は、ソフトウェアの実行に応答してデータをアクセス、貯蔵、操作、処理及び生成することもできる。理解の便宜のために、処理装置は、1つが使用されるものと説明された場合もあるが、該技術分野における通常の知識を有する者は、処理装置が複数の処理要素(processing element)及び/または複数類型の処理要素を含むことができるものが分かる。例えば、処理装置は、複数のプロセッサまたは1つのプロセッサ及び1つのコントローラを含むことができる。なお、並列プロセッサ(parallel processor)のような他の処理構成(processing configuration)も可能である。
【0053】
ソフトウェアは、コンピュータプログラム(computer program)、コード(code)、命令(instruction)、またはこれらのうちの1つ以上の組み合わせを含むことができ、所望通りに動作するように処理装置を構成したり、独立的にまたは結合的に(collectively)処理装置を命令したりすることができる。ソフトウェア及び/またはデータは、処理装置により解釈されたり、処理装置に命令またはデータを提供したりするため、ある類型の機械、構成要素(component)、物理的な装置、仮想装置(virtual equipment)、コンピュータ貯蔵媒体または装置,または送信される信号波(signal wave)に恒久的に、または一時的に具体化(embody)されることができる。ソフトウェアは、ネットワークに連結されたコンピュータシステム上に分散し、分散した方法で貯蔵されたり、実行されたりすることができる。ソフトウェア及びデータは、1つ以上のコンピュータ可読記録媒体に貯蔵されることができる。
【0054】
実施例による方法は、様々なコンピュータ手段を通じて実行されることができるプログラム命令の形態で具現されてコンピュータ可読媒体に記録されることができる。前記コンピュータ可読媒体は、プログラム命令、データファイル、データ構造などを単独にまたは組み合わせて含むことができる。前記媒体に記録されるプログラム命令は、実施例のために特別に設計及び構成されたもの、或いは、コンピュータソフトウェアの当業者に知られて使用可能なものであり得る。コンピュータ可読記録媒体の例には、ハードディスク、フロッピーディスク、及び磁気テープのような磁気媒体(magnetic media)、CD-ROM、DVDのような光記録媒体(optical media)、フロプティカルディスク(floptical disk)のような磁気光媒体(magneto-optical media)、及びROM、RAM、フラッシュメモリーなどのようなプログラム命令を貯蔵及び実行するように特別に構成されたハードウェア装置が含まれる。プログラム命令の例には、コンパイラにより生成されるような機械語コードだけでなく、インタプリタなどを使用してコンピュータにより実行されることができる高級言語コードを含む。前述のハードウェア装置は、実施例の動作を実行するため、1つ以上のソフトウェアモジュールとして作動するように構成されることができ、その逆も同様である。
【0055】
以上のように実施例がたとえ限定された実施例と図面により説明されているが、該技術分野における通常の知識を有する者であれば、前述の記載から様々な修正及び変形が可能である。例えば、記載された技術は、記載された方法とは異なる順番で実行されたり、及び/または記載されたシステム、構造、装置、回路などの構成要素が、記載された方法とは異なる形態で結合または組み合わされたり、他の構成要素または均等物により代置または置換されても、適切な結果が達成されることができる。従って、他の具現、他の実施例及び特許請求の範囲と均等するものも、後述する特許請求の範囲に属する。
【国際調査報告】