SimulationOptions¶
from cascaqit import SimulationOptions
SimulationOptions ¶
SimulationOptions(
method: SimulationMethod = "auto",
integrator: SimulationIntegrator = "auto",
device: SimulationDevice = "auto",
dtype: SimulationDType = "complex128",
max_memory_bytes: int | None = None,
memory_fraction: float = 0.8,
max_wall_time_seconds: float | None = None,
workers: WorkerRequest = "auto",
trajectories: int = 256,
target_statistical_error: float | None = None,
rtol: float = 1e-09,
atol: float = 1e-11,
max_steps: int = 10000,
blockade_mode: BlockadeMode = "auto",
seed: int = 0,
metadata: dict[str, Any] = dict(),
schema_version: str = SIMULATION_PLANNING_SCHEMA_VERSION,
)
给统一本地后端提供方法、精度与资源规划选项。auto 由规划器结合程序、噪声和可用资源选择;显式指定的方法若不适用会报错,不保证所有选项组合都可执行。
| 参数 | 用途与范围 |
|---|---|
| method | auto、state_vector、subspace、density_matrix、trajectory |
| integrator | auto、adaptive_dop853、fixed_step_krylov;纯数字线路不需要时间积分 |
| device | auto、cpu、gpu 可构造;当前执行只支持 CPU,要求 gpu 会在规划时拒绝 |
| dtype | complex64 或 complex128;低精度需另行检查数值误差 |
| max_memory_bytes / memory_fraction | 正整数内存上限与 (0, 1] 的内存使用比例,供规划器估算;不是操作系统的内存隔离 |
| workers | auto 或正整数,供扫描/轨迹并行规划;不是内核线程数 |
| trajectories | 至少 2,默认 256;控制轨迹方法的样本数,不等于测量 shots |
| rtol / atol / max_steps | 正的相对/绝对容差与正整数步骤限制;作用取决于所选求解器 |
| blockade_mode | auto、full、subspace;受程序能否建立相应子空间约束 |
| seed | 整数随机种子;显式 run/config/backend 种子优先 |
max_wall_time_seconds 和 target_statistical_error 接受正数,目前只记录在计划元数据中,不执行硬超时,也不自动增加轨迹直到误差达标。metadata 与 schema_version 保存附加信息和格式标识。
from cascaqit import Circuit, LocalBackend, SimulationOptions
options = SimulationOptions(method="state_vector", device="cpu", workers=1, seed=7)
result = LocalBackend().run(Circuit(1).x(0).measure_all(),
options=options, shots=32).result()
assert result.counts == {"1": 32}
assert SimulationOptions.from_dict(options.to_dict()) == options
从配置字典返回 SimulationOptions,省略项使用构造默认值,并重新校验枚举、正数与类型约束。没有 from_json();读取 JSON 时先用 json.loads() 得到字典。
返回可写入 JSON 的字典,嵌套对象一并序列化。元组转成数组;这个字典是保存的声明,不是执行结果。
返回 JSON 字符串,不写文件。indent=None 使用紧凑格式;提供缩进宽度可便于阅读。
返回规范 JSON 的 SHA-256 十六进制摘要。字段、标识或元数据变化都可能改变摘要;它用于比较保存内容,不判断两个声明在物理上是否等价。