Skip to content

v0.3.5

Choose a tag to compare

@github-actions github-actions released this 03 Oct 11:20
1978fde

Added

  • Gate fusion for the QCSim and GPU backends, controlled by gate_fusion
    in SimulatorConfig and exposed through the simulator, network, C and
    native request interfaces with fusion statistics.
    SimulatorConfig.gate_fusion is optional: None means unset, and
    GetConfiguration("gate_fusion") then reports "auto".
  • Native MPO queries on the QCSim and GPU backends: bit-vector probabilities,
    density matrix elements, dense density-matrix output, complex Pauli
    expectations and local operators A rho A†, through IState, the C
    interface, the Python bindings and the native request API.
  • trim() and recanonicalize() for matrix-product states, and the trim
    and recanonicalize maintenance actions for MPS in the request API.
  • Swap optimization (look-ahead routing) for MPOs, and
    disable_optimized_swapping and lookahead_depth for MPO requests.

Changed

  • Breaking: the Python methods trim_mpo and recanonicalize_mpo are
    renamed trim and recanonicalize; they now work on MPS as well as MPO.
  • When gate_fusion is not set, QCSim statevectors below 11 qubits and density
    matrices below 5 qubits run unfused, as fusion is slower there. An explicit
    true or false still forces fusion on or off at any size.
  • MPO max_bond_dimension accepts zero for unlimited, and the trace-restore
    and hermitize options now apply to GPU MPO too.
  • precision and use_double_precision are aliases kept in sync. Qiskit Aer
    honours single precision for initialization and state export, and the
    network no longer forces single precision.
  • Faster CPU fused circuits, from the vectorized dense gate kernels and a
    cheaper fusion cache.
  • The GPU diagnostics operation accepts an MPS for maintenance. An MPS reports
    no diagnostics by default.

Fixed

  • Circuit layering no longer moves a measurement ahead of an earlier write to
    the same classical bit, or ahead of a conditional gate still reading it.
    Routed MPS/MPO runs returned wrong distributions for circuits that write a
    bit twice.
  • Single-shot network calls keep the shot's classical bits when the executed
    circuit is narrower than the network allocation; ExecuteOnHost reported all
    zeros.
  • MPS look-ahead routing survives gate fusion, so fused MPS circuits with
    mid-circuit measurements no longer fall back to local routing.
  • FlushSimulator waits for queued GPU statevector and density-matrix work, and
    fusion boundaries no longer stall the GPU.
  • Multithreading flags are forwarded to QCSim MPS and MPO simulators.
  • Tensor network clones are isolated from the original.
  • GPU, distributed GPU, Aer and composite simulators ignore a precision set
    after initialization instead of throwing. A new precision takes effect after
    Clear and the next Initialize.
  • CI build installs apt packages after refreshing the package index.

Dependencies

  • QCSim pin bumped to 1edb647: vectorized dense gate kernels, MPS
    recanonicalization fixes, MPO long-chain scaling, MPS sampling and input
    validation fixes, and Windows compile fixes.