目的
量子計算シミュレータの簡単な比較の続きです。
- Blueqat
- Cirq
- Qiskit
- SymPy
それぞれについて、同じ量子回路を与えたときの性能比較をしてみます。
いずれも単純に pip でインストールしただけでバックエンド変更など変わったことはしていない状態です。
シミュレーション内容
シミュレーションする量子回路は
で作成した加算器・減算器・モジュロ加算器です。これらの記事では Blueqat をターゲットとした実装を行いましたが、それをほぼそのまま Cirq/Qiskit/SymPy ターゲットに変更して実行時間を測定しました。
実行時間の測定には Python の time.perf_counter を用いました。
ソースコードは GitHub に置いています。
結果
シミュレータ | 加算器(4bit) | 減算器(4bit) | モジュロ加算器(3bit) |
---|---|---|---|
Blueqat | 1.846 sec | 1.719 sec | 34.623 sec |
Cirq | 49.281 sec | 49.234 sec | 388.213 sec |
Qiskit | 0.204 sec | 0.130 sec | 0.943 sec |
SymPy | 199.545 sec | 199.848 sec | 430.502 sec |
SymPy は他のシミュレータとは実行条件がやや異なるので、参考値と考えてください。
Blueqat/Cirq/Qiskit は測定を行う毎にランダムに異なる状態ベクトルを確率分布に従ってシミュレーション結果として得ますが、SymPy の場合は測定可能な結果の全ての組み合わせを観測確率付きで得ます。
SymPy 以外のシミュレータの実行結果と見た目を揃えるために、SymPy の場合には得られた状態ベクトルをランダムに選択して表示しています。
逆に、Blueqat/Cirq/Qiskit の方を SymPy に合わせて測定可能な結果の全ての組み合わせを観測確率付きで出す形にするべきだったかもしれません。