Qamomileは量子プログラミングSDKです。型付きPython関数で量子回路を記述し、Qiskit・CUDA-Q・QURI Parts・qBraidなどのQuantum SDKで実行できます。また、シンボリックな代数的リソース推定やブラックボックス(オラクル)を含むような実行そのものができない回路のリソース推定も可能です。
注意 Qamomileは現在もアクティブに開発中であり、リリース間で破壊的変更が加わる可能性があります。不具合を見つけた場合は、GitHub Issuesでお知らせいただければ幸いです。
sample()とrun()、オブザーバブル、ビット順序qaoa_stateと比較するQamomileは複数のQuantum SDKを実行バックエンドとしてサポートしています。Qiskitはデフォルトで含まれており、その他はオプションの追加パッケージです。
pip install qamomile に含まれています。追加のフラグは不要です。
from qamomile.qiskit import QiskitTranspiler, QiskitExecutor
CUDA-QはLinuxおよびmacOS ARM64(Apple Silicon)をサポートしています。使用するCUDAバージョンに合わせてインストールしてください:
pip install "qamomile[cudaq-cu12]" # CUDA 12.x、Linux向け
pip install "qamomile[cudaq-cu13]" # CUDA 13.x、LinuxまたはmacOS ARM64向け
from qamomile.cudaq import CudaqTranspiler, CudaqExecutor
pip install "qamomile[quri_parts]"
from qamomile.quri_parts import QuriPartsTranspiler, QuriPartsExecutor
QiskitのQuantum回路をqBraid対応のデバイスやシミュレータで実行できます。
pip install "qamomile[qbraid]"
from qamomile.qbraid import QBraidExecutor
pip install qamomile
import qamomile.circuit as qmc
from qamomile.qiskit import QiskitTranspiler
@qmc.qkernel
def bell_state() -> tuple[qmc.Bit, qmc.Bit]:
q0 = qmc.qubit(name="q0")
q1 = qmc.qubit(name="q1")
q0 = qmc.h(q0)
q0, q1 = qmc.cx(q0, q1)
return qmc.measure(q0), qmc.measure(q1)
transpiler = QiskitTranspiler()
exe = transpiler.transpile(bell_state)
result = exe.sample(transpiler.executor(), shots=1000).result()
for outcome, count in result.results:
print(f" {outcome}: {count}")