量子コンピューター用のエミュレーターはありますか?


64

私の通常のコンピューターで量子コンピューターをエミュレートする方法はありますか?それで、量子プログラミング言語(Q#など)をテストして試すことができますか?私は自分の仮説を実際にテストし、最も正確な結果を得ることができるものを意味します。

更新:量子コンピューターのシミュレーションを実際に探しているわけではありませんが、通常の非量子ベースのPCで効率的にエミュレートできるかどうかはわかりません。


回答:


39

はい、可能です(ただし遅い)。いくつかの既存の(これは部分的なリストにすぎません)エミュレーターがあります。

  • QDD:量子コンピューターエミュレーションライブラリ

    QDDはC ++ライブラリであり、C ++プログラミング環境のコンテキスト内で比較的直感的な量子コンピューティングコンストラクトのセットを提供します。QDDは、量子コンピューティングのエミュレーションが量子状態のBinary Decision Diagram(BDD)表現に基づいているという点でユニークです。

  • jQuantum

    jQuantumは、量子コンピューターをシミュレートするプログラムです。それを使用して量子回路を設計し、実行させることができます。量子レジスタの現在の状態が示されています。

  • QCE

    QCEは、Quantum Computersのさまざまなハードウェア設計をエミュレートするソフトウェアツールです。QCEは、厳密に量子力学の法則に従って、ハードウェア量子プロセッサの動作を制御する物理プロセスをシミュレートします。QCEは、現実的な実験条件下で量子アルゴリズムをデバッグおよび実行する環境も提供します。

(さらに、Q#はMSのQDKでのみ動作しますで、@ Pavelに感謝します)

これらのすべての欠点は単純です。それらはまだバイナリ(非量子)回路で動作します。私の知る限り、簡単にアクセスできる量子コンピューターはありませんこれらを実行するために使用する。また、単一のキュービットを表現するには複数のバイナリビットが必要であるため、量子プログラムをシミュレートするために必要な計算能力は非常に高速になります。

このテーマに関する論文を引用します(J. Allcock、2010):

私たちの評価は、実装が非常に正確であることを示していますが、同時にこれを達成するためにかなりの量の追加メモリを使用しています。精度の目標を下げると、表現サイズを小さくできるため、同じ量のメモリでより多くのキュービットをエミュレートできます。

p 89、セクション5.1

実装がより正確になると、処理も遅くなります。

TL; DR:それは可能であり、いくつかのエミュレータが存在しますが、大量のキュービットに対して非常に効率的なものはありません。


これらのエミュレーターはどれも(現在)Q#で使用できないことに注意してください。これはMicrosoftのQDKでのみ動作します。
パベル

3
あなたが言ったことに加えて:実際の量子コンピューターを提供するIBM Quantum Experienceでコードを実行するプログラム的な方法があります-Q#コードではなくQASMです。QISKitはここへ行く方法です。github.com/QISKit
blalasaadri

シミュレーションは1台のコンピューターで実行されるため、あなたが言ったことは理にかなっています。しかし、複数のコンピューターを使用した場合、同じ速度を達成することは可能ですか?
iOSカレンダーpatchthecode.com

26

はい、量子コンピューターを通常のコンピューターでシミュレートすることは可能ですが、ほとんどの場合、効率を犠牲にする必要があります。

2nn


資源

他の回答に記載されているように、Q#に興味があるかもしれません。さらにいくつかのエミュレーター:

  • 量子計算遊び場

    Quantum Computing Playgroundは、ブラウザベースのWebGL Chrome Experimentです。シンプルなIDEインターフェースを備えたGPU加速量子コンピューターと、デバッグおよび3D量子状態可視化機能を備えた独自のスクリプト言語を備えています。Quantum Computing Playgroundは、最大22キュビットの量子レジスターを効率的にシミュレートし、GroverおよびShorのアルゴリズムを実行し、スクリプト言語自体に組み込まれたさまざまな量子ゲートを備えています。

  • QXシミュレーター

    QXシミュレーターは、Nader KhammassiがQuTechで開発した汎用量子コンピューターシミュレーターです。QXにより、量子アルゴリズムの設計者は、量子コンピューターでの量子回路の実行をシミュレートできます。このシミュレータは、低レベルの量子アセンブリ言語、つまり量子コードを定義します。これにより、ユーザーは単純なテキストソースコードファイルで回路を記述できます。その後、ソースコードファイルは、そのコンテンツを実行するシミュレータの入力として使用されます。

  • 量子++

    Quantum ++は、テンプレートヘッダーファイルのみで構成される最新のC ++ 11汎用量子コンピューティングライブラリです。Quantum ++は標準C ++ 11で記述されており、Eigen 3線形代数ヘッダーのみのテンプレートライブラリと、使用可能な場合はOpenMPマルチプロセッシングライブラリのみを使用して、外部依存性が非常に低くなっています。

  • 量子コンピューター言語

    古典的なコンピューターサイエンスには多くの一般的な概念がありますが、量子コンピューティングは、理論物理学の幅広い分野における特別な専門分野であると考えられています。[...] QCL(Quantum Computation Language)は、このギャップを埋めようとします。QCLは、CやPascalのような古典的な手続き型言語から派生した構文を持つ、量子コンピューター向けの高レベルでアーキテクチャに依存しないプログラミング言語です。これにより、1つの一貫した形式で量子アルゴリズム(古典的なコンポーネントを含む)の完全な実装とシミュレーションが可能になります。

  • より関連性の高いエミュレーターはQuantikiで見つけることができます


21

はい、古典的なコンピューターで量子計算をシミュレートすることは可能です。しかし、シミュレーションのコストは、量子ビット数や回路の深さ、特定の操作数に応じて指数関数的に増加します。

すぐにアイデアを試すには、私のシミュレータQuirkが最適です。これは、Webブラウザーで実行されるオープンソースのドラッグアンドドロップ量子回路シミュレーターです。algassert.com/quirkでライブバージョンにアクセスできます。

以下は、Quirkの例のGrover回路のスクリーンショットです。これは、「隠れた」状態を追跡するために中間状態ディスプレイを備えています。

Quirkのスクリーンショット


16

Q#を特に見ている場合は、エミュレータで使用するのは非常に簡単です。実際、Q#を使用することはできませんが、エミュレータを使用することはできません。

まず、MicrosoftのWebサイトから.NET Coreをダウンロードする必要があります

MicrosoftのQuantum Development Kitをダウンロードするとき dotnet new -i "Microsoft.Quantum.ProjectTemplates::0.2-*"またはMicrosoftのWebサイトダウンロードすると、言語とMicrosoft独自のエミュレーターの両方が一緒にダウンロードされます。

新しいQ#プロジェクト(dotnet new console -lang Q#)を作成すると、エミュレータを使用するように自動的に構成されるため、Q#を入力してプロジェクトを実行すると、「正常に動作します」。


3

はい。自分でビルドする場合は、BullSequana M9600シリーズと同じ仕様のサードパーティコンピューターを見つけるか、€10万以上を考えてAtosからシステムを購入してください。

BullSequana M9600シリーズとAtos QLMの類似点に注目してください。 Atis QLM対M9600

同じボックス(およびおそらく内部コンポーネント)と異なるソフトウェア(ただし、独自のQ#を使用したい場合)。アトスは、「世界で最高のパフォーマンスを発揮する量子シミュレーター」と主張しています。私はそれについてはわかりませんが、30キュビットバージョンの仕様は到達可能です。2つのIntel CPUと1 TBのメモリだけです。

アトスQLM .PDFパンフレット

量子プログラミング言語(Q#など)をテストして試すことができるように、通常のコンピューターで量子コンピューターをエミュレートする方法はありますか?

あなたはスワップ・ドライブのメモリと1-24TBの唯一の256ギガバイトを使用している場合、それは次のようになります遅いが、それはなります動作します。

私は自分の仮説を本当にテストして最も正確な結果を得ることができることを意味します

パンフレットからの引用:

「Atos Quantum Learning Machine は、量子プログラムの正確な実行を2桁の精度で計算します。物理法則をシミュレートします計算します。量子コンピューティングの核心にある。これは、量子の影響を受ける既存の量子プロセッサとは大きく異なります。ノイズ、量子デコヒーレンス、製造バイアス、およびパフォーマンスのボトルネック。AtosQuantum Learning Machineでのシミュレーションにより、開発者は量子マシンが利用可能になるのを待たずに、アプリケーションとアルゴリズムに集中できます。」

彼らはノイズの影響を受けないシミュレータであるため、高精度であると主張しています-また、高速でも高価でもありません。理論的には、コンピューターにメモリ、ドライブ、ソフトウェアを追加できます...


3

このテーマに関する素晴らしい「概要」は、Quantikiで見つけることができます。

彼らはいくつかの言語の量子コンピューターシミュレーターのリストを持っています、シミュレーターのいくつかは以前ここで引用されました。ただし、プロジェクトのステータスを通知する(または通知しようとする)ために更新するリストを保持します。次のような「ライブラリ」がいくつかあります。

ハスケル

qchas(qchas:量子アルゴリズムを実装するためのライブラリ)-量子アルゴリズムを実装するのに役立つライブラリ。量子ゲート、量子ビットの定義が含まれています。

Python

qubiter:Qubiterプロジェクトは、最終的には古典的なコンピューターで量子回路を設計およびシミュレートするための、ほとんどがPythonで書かれた完全なツールスイートを提供することを目指しています。

Javascript

jsqis:jsqisは、その核で、Javascriptで記述された量子コンピューターシミュレーターです。これにより、量子レジスタの初期化と量子ゲートによる操作が可能になります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.