跳转至

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

from_dict

from_dict(data: dict[str, Any]) -> SimulationOptions

从配置字典返回 SimulationOptions,省略项使用构造默认值,并重新校验枚举、正数与类型约束。没有 from_json();读取 JSON 时先用 json.loads() 得到字典。

to_dict

to_dict() -> dict[str, Any]

返回可写入 JSON 的字典,嵌套对象一并序列化。元组转成数组;这个字典是保存的声明,不是执行结果。

to_json

to_json(*, indent: int | None = None) -> str

返回 JSON 字符串,不写文件。indent=None 使用紧凑格式;提供缩进宽度可便于阅读。

stable_hash

stable_hash() -> str

返回规范 JSON 的 SHA-256 十六进制摘要。字段、标识或元数据变化都可能改变摘要;它用于比较保存内容,不判断两个声明在物理上是否等价。