Skip to content
yamamoto-takahiro edited this page Sep 30, 2019 · 1 revision

BM 現状

  • cirq-qulacs については既存の qasm 形式の回路を parse して実行している
  • 部分的なパーサをいちいち書くのが大変なので最終的には .qasm を使わない形にしたい (staticな .qasm に頼らないBM code)

BM の目的

  1. Qulacs の異なるバージョンや実装方法間の BM を取る
    • 我々がボトルネックの検討や今後の実装の参考に使う
    • Qulacs のユーザが自身の計算機と他の計算機でどの程度のパフォーマンスに違いがあるかの比較に使える
  2. Qulacs と別のライブラリの BM を取る
    • ライブラリを選ぶ一般ユーザに対する優位性のアピールに使う
  3. cirq-qulacs のような Qulacs をプラグインとした時の BM を取る
    • 既に Cirq を使っている人や, Cirq を作っている Google の開発チームにアピールするのに使う

BM の運用方法

  1. Qulacs で QV 測定の回路を実行/コードは Qulacs 本体の repo に配置
  2. それぞれのライブラリごとにある程度最適化された個別のコードを実装し, simulator-benchmarking のような repo に配置/ここで各ライブラリに合わせて BM のコードを更新し, 様々な計算機や用途で多彩な比較を載せておく
  3. シミュレータ本体である Cirq 側で分岐したコードを書く必要があるため BM のためには qulacsplus にあるコードとは別のものが必要になる/コードは cirq-qulacs などの wrapper の repo に配置

BM をとる simulator

必須

  • Qulacs
  • Cirq
  • Qiskit Aer
  • (Q#)

任意

  • ProjectQ
  • PyQuil
  • QuPy
  • Blueqat

注意点

  1. シミュレータによっては qasm u3 に相当するゲートが1ゲートとして作れない. この場合分解して3ゲートになってしまうと意図せず不利になってしまう. これを回避するため qasm u3 が無いライブラリでは概ね同じ時間がかかるとみなして RX ゲートを用いた
  2. ライブラリ独自の最適化をどこまで許すかが微妙になる. 特に ProjectQ はデフォルトで勝手にゲートを合成し高速なシミュレートを行う. blueqat は過去の実行した量子回路のハッシュを保持していて, 同じ量子回路を実行するとシミュレートせず過去の結果を出力するなどの機能がある (オフにして検証した).
Clone this wiki locally