You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Sampler原语运行Qiskit动态电路?参数'dynamic=True'位置疑问

解决Qiskit Sampler动态电路中dynamic=True的指定位置问题

要在Sampler中启用动态电路支持,dynamic=True参数需要添加到Sampler实例的options配置,或者调用Sampler时传入的options参数中,以下是具体实现方式:

方式一:创建Sampler实例时指定

在初始化Sampler时,将dynamic=True加入options字典:

from qiskit_ibm_runtime import QiskitRuntimeService, Sampler
from qiskit import QuantumCircuit, ClassicalRegister, QuantumRegister

service = QiskitRuntimeService(
    channel='ibm_quantum',
    instance='ibm-q/open/main',
)

# 修正原代码中寄存器未定义的问题
cr = ClassicalRegister(1, 'cr')
res = QuantumRegister(2, 'res')
bell = QuantumCircuit(res, cr)
bell.h(0)
bell.x(res[0]).c_if(cr, 0)
bell.cx(0, 1)
bell.x(res[1]).c_if(cr, 0)
bell.measure_all()

with Sampler(
    circuits=[bell] * 3,
    service=service,
    options={
        'backend': 'ibmq_qasm_simulator',
        'dynamic': True  # 在这里指定动态电路标志
    }
) as sampler:
    result = sampler()
    print(result)

方式二:调用Sampler时指定

如果需要针对不同批次的电路单独设置,也可以在调用Sampler方法时传入options:

with Sampler(
    circuits=[bell] * 3,
    service=service,
    options={'backend': 'ibmq_qasm_simulator'}
) as sampler:
    result = sampler(
        circuits=[bell] * 3,
        options={'dynamic': True}  # 在这里指定动态电路标志
    )
    print(result)

注意事项

  • 原代码中存在寄存器未定义的问题(res和cr未声明),需要先通过QuantumRegister和ClassicalRegister创建对应的寄存器,再传入QuantumCircuit。
  • 只有支持动态电路的后端(如ibmq_qasm_simulator或部分真实量子硬件)才能使用该参数,若后端不支持会报错。

内容的提问来源于stack exchange,提问作者Engr. Khuram Shahzad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 22:55:32