Bqskit

Latest version: v1.2.0

Safety actively analyzes 681844 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 1 of 3

1.2.0

Notable Changes

Improved BQSKit Runtime

The BQSKit Runtime has been improved for greater robustness, ease of use, and new features. Object and path imports are now managed between the system, allowing users to write one file with custom gate and pass definitions and compilations. Previously, definitions had to be separated.

For more info see 237.

Initial Distributed Quantum Support

You can now describe remote edges in the `CouplingGraph` object to accommodate distributed quantum computing (DQC) machine models. It allows custom edge weights on the graph to signify remote connections. Additionally, several DQC utility functions are provided for the CouplingGraph.

Mid-Circuit Measurement and Reset Support

Support for mid-circuit measurements and reset operations have been added to BQSKit. QASM files containing these operations can now be read and written. Partitioning workflows will intelligently work around these non-unitary operations.

Autogenerated: What's Changed
* QASM support for singly-controlled ControlledGates. by mtweiden in https://github.com/BQSKit/bqskit/pull/215
* Hash structure of only multi-qubit gates by mtweiden in https://github.com/BQSKit/bqskit/pull/221
* Feature: Cache for runtime workers by mtweiden in https://github.com/BQSKit/bqskit/pull/220
* Updated .qasm() to qasm2.dumps by edyounis in https://github.com/BQSKit/bqskit/pull/228
* Fix identity rebase by edyounis in https://github.com/BQSKit/bqskit/pull/222
* Fixing the documentation of get_distance_from by alonkukl in https://github.com/BQSKit/bqskit/pull/232
* Add reset by peachnuts in https://github.com/BQSKit/bqskit/pull/212
* CI/CD Updates and Fixes by edyounis in https://github.com/BQSKit/bqskit/pull/235
* Patch 1.1.2 by edyounis in https://github.com/BQSKit/bqskit/pull/243
* Add ECR gate by vincentgierisch in https://github.com/BQSKit/bqskit/pull/234
* SqrtTGate by mtweiden in https://github.com/BQSKit/bqskit/pull/244
* add StaticPlacementPass by SoshunNaito in https://github.com/BQSKit/bqskit/pull/250
* Modifying surround function by bachbao in https://github.com/BQSKit/bqskit/pull/255
* Fix typo: RestoreModelConnectivityPass by HaoTy in https://github.com/BQSKit/bqskit/pull/242
* Fixing the precommit W504 line break after binary operator error by alonkukl in https://github.com/BQSKit/bqskit/pull/261
* PauliZGate by mtweiden in https://github.com/BQSKit/bqskit/pull/254
* Surround filter by edyounis in https://github.com/BQSKit/bqskit/pull/257
* Adding a TreeScan Gate Removal pass to parallelize Scanning Gate by jkalloor3 in https://github.com/BQSKit/bqskit/pull/240
* Power gate by ermalrrapaj in https://github.com/BQSKit/bqskit/pull/236
* Fixed overflow in Unitary.dim by edyounis in https://github.com/BQSKit/bqskit/pull/267
* Implemented `__del__` to clean up hanging coroutines by WolfLink in https://github.com/BQSKit/bqskit/pull/263
* Runtime updates by edyounis in https://github.com/BQSKit/bqskit/pull/237
* Register `Workflow`s by mtweiden in https://github.com/BQSKit/bqskit/pull/269
* Todo cleanup by edyounis in https://github.com/BQSKit/bqskit/pull/271
* Handle EOFError and ConnectionResetError without chaining exceptions in server connection failure by alonkukl in https://github.com/BQSKit/bqskit/pull/273
* Fix parameter issue with CircuitGate's QASM by edyounis in https://github.com/BQSKit/bqskit/pull/276
* Update Pre-built Models by edyounis in https://github.com/BQSKit/bqskit/pull/277
* Register workflows by target type by mtweiden in https://github.com/BQSKit/bqskit/pull/272
* Added Gate Guide by edyounis in https://github.com/BQSKit/bqskit/pull/278
* DiscreteLayerGenerator by mtweiden in https://github.com/BQSKit/bqskit/pull/270
* Initial Distributed Quantum Support by edyounis in https://github.com/BQSKit/bqskit/pull/274
* 1.2.0 by edyounis in https://github.com/BQSKit/bqskit/pull/280

New Contributors
* peachnuts made their first contribution in https://github.com/BQSKit/bqskit/pull/212
* vincentgierisch made their first contribution in https://github.com/BQSKit/bqskit/pull/234
* SoshunNaito made their first contribution in https://github.com/BQSKit/bqskit/pull/250
* bachbao made their first contribution in https://github.com/BQSKit/bqskit/pull/255
* HaoTy made their first contribution in https://github.com/BQSKit/bqskit/pull/242

**Full Changelog**: https://github.com/BQSKit/bqskit/compare/1.1.2...1.2.0

1.1.2

Patch release fixing qiskit breaking changes.

**Full Changelog**: https://github.com/BQSKit/bqskit/compare/1.1.1...1.1.2

1.1.1

Pam Verification and Improvements

- Compiling with optimization level four and an upper bound error check now works
- Added `build_seqpam_mapping_optimization_workflow` for easy construction of pam workflows
- Fixed PAM not working with arbitrary gatesets

Added

- Official Python 3.12 Support
- Added pre-built model example usage to `MachineModel` documentations
- Added documentation for the `bqskit.ext` package
- Added `pass_down_block_specific_key_prefix` to `ForEachBlockPass`, allowing passes to pass down data to each block individually
- Added support to convert unitaries to special unitaries
- Added documentation to `EmbeddedGate` to warn users about local phases
- Added log messages during `optimization_level=4` and PAM

Changed

- Circuit append methods now return cycle of new operation
- `EmbeddedGate` can now take `None` for `level_maps`
- `EmbeddedGate` now has a default for `level_maps` (`None`)
- Updated `EmbeddedGate`'s print out name to include more information
- Increased number of exponential back-off retries when establishing a connection to an attached server to better support a supercomputer environment

Fixed

- Fixed tagged gate hashing with `dict` data
- Fixed documentation bugs with some gates
- Fixed broken documentation link in `MachineModel`
- Fixed `ScanPartitioner` bug with small circuits
- Fixed issue with PAM and barriers
- Fixed performance issue due to unnecessary `is_unitary` checks
- Fixed `EmbeddedGate` hashing issue
- Fixed high-error issue from search frontier emptying during 2-qubit synthesis
- Fixed high-error issue from search frontier emptying when retargeting 3-qudit gatesets to 2-qudit gatesets
- Fixed attached server shutdown failure sequence: when an interrupt doesn't work, the kill signal is properly sent now, and a warning to the user is printed in the rare case that a zombie process is possible

**Full Changelog**: [1.1.0...1.1.1](https://github.com/BQSKit/bqskit/compare/1.1.0...1.1.1)

1.1.0

Changelog

Notable Changes

Replaced Dask with the new BQSKit Runtime

Previously, we used the Dask library to parallelize and distribute our
compilation pipeline across a multi-core system or a cluster of computers.
However, we had many problems and complaints with this, specifically, with
the robustness of it. Long-running compilation tasks would occasionally
crash with a CancelledError for one of many reasons. We ended up building
our runtime for our compile time. For most users, this change will
happen in the background, leading to slightly faster compile times and
confidence in long-running or distributed jobs. The documentation is updated
with a guide for launching a runtime on a cluster of nodes if you decide
to parallelize your workload over a compute cluster or supercomputer.

Greatly improved Qudit Support

With the help of algorithm and hardware scientists, we greatly expanded
support for qudit simulation, compilation, and information science within
the BQSKit framework. Most notably, we added several new gates and support
for qudit compilation in the off-the-shelf `compile` function.

State and Multi-State Synthesis Support

Added support for `StateVector` and `StateSystem` inputs to the
`bqskit.`compile` function now allows state preparation circuit synthesis
and state mapping synthesis. See the [paper](https://arxiv.org/abs/2305.01816)
for more info on multi-state synthesis.

Optimization level 4 with Permutation-Aware Synthesis and Mapping

Added permutation-aware synthesis and mapping passes, which serve as the
base for the optimization level 4 workflow. See the
[paper](https://arxiv.org/abs/2305.02939) for more info.

New Features

- Added Barrier Support
- Added `with_mapping`flag to the `compile` function to optionally return the
initial and final logical-to-physical qudit mapping
- Added the `Workflow` class
- Added the `PassData` class
- Added the `GateSet` class
- Added the `StateSystem` class
- Added `Sequence` support for inputs the `compile` function. Now you can pass
a list of circuits (or any input) to be compiled, which will all be compiled in
parallel.
- Qfactor support for qudits
- `disable_logging` function
- Implemented the `compute_su_generators` math function

New Circuit/IR Methods

- Implemented `Circuit.is_empty`
- Implemented `Circuit.gate_set_no_blocks`
- Implemented `Circuit.last_on`
- Implemented `Circuit.first_on`
- Implemented `Circuit.get_statevector`
- Implemented `Circuit.perform`
- Implemented `Operation.get_inverse`
- Implemented `Gate.get_inverse`
- Implemented `Gate.get_inverse_params`

New Gates

- Implemented `BGate`
- Implemented `ClockGate`
- Implemented `PDGate`
- Implemented `MargolusGate`
- Implemented `RC3XGate`
- Implemented `RCCXGate`
- Implemented `ShiftGate`
- Implemented `SubSwapGate`
- Implemented `CCPGate`
- Implemented `CKMGate`
- Implemented `CKMdgGate`
- Implemented `ArbitraryCPhaseGate`
- Implemented `CUGate`
- Implemented `RSU3Gate`
- Implemented `EmbeddedGate`
- Implemented `BarrierPlaceholder`
- Implemented `QuditGate`
- Implemented `GeneralGate`

New Passes and PassPredicates

- Implemented `AutoRebase2QuditGatePass`
- Implemented `GeneralSQDecomposition`
- Implemented `StructureAnalysisPass`
- Implemented `SubTopologySelectionPass`
- Implemented `PAMLayoutPass`
- Implemented `PAMRoutingPass`
- Implemented `EmbedAllPermutationPass`
- Implemented `ToVariablePass`
- Implemented `OrPredicate`
- Implemented `ManyQuditGatesPredicate`
- Implemented `NoSingleQuditGatesInModel`
- Implemented `HasGeneralSingleQuditGate`
- Implemented `ZXGatePredicate`
- Implemented `AllConstantSingleQuditGates`

Changed

- Layer Generators now intelligently place gates to avoid unnecessary gates
- `Circuit.get_inverse` now works differently to avoid `DaggerGate`s when not necessary
- Many passes and layer generators where given "smart defaults" picked from the `PassData.model`
- Improved performance of `active_qudit` calculation
- `ForEachBlockPass` replace filter option can now be a string that describes the filter
- Layer generator selection in QSearch and LEAP now reacts to seeds in `PassData`
- `SeedLayerGenerator` has been significantly improved
- `MachineModel.is_compatible` now takes an optional `placement` parameter
- `ControlledGate` is now significantly more general and can handle qudit and even mixed qudit controls and targets.
- Many gates now take an optional `radix` parameter that can be set to generalize them to higher dimensions
- `FillSingleQuditGatesPass` no longer uses unnecessary instantiation

Fixed

- Fixed a performance bug in `CouplingGraph`
- Fixed an issue with seeds and reproducible circuits (107)
- Fixed bug when popping an idle qudit

Deprecated

- Honeywell QPU gate sets and Models (replaced with Quantinuum)
- `enable_dashboard` and `disable_dashboard` (dask no longer works)
- `enable_parallelism` and `disable_parallelism` (use `Compiler(num_workers=x)` to control parallelism)
- `BasePass.get_model`, `BassPass.get_placement`, `BassPass.get_connectivity`, `BassPass.get_target` have
all been replaced with the `PassData` version.
- `BassPass.in_parallel` and `BassPass.execute` (`in_parallel` is no longer necessary and `execute` has been replaced with `await get_runtime().map(...)`)
- The direct use of a `CompilationTask` has been deprecated and is no longer needed.
Instead, you can pass the circuit and workflow directly into `Compiler.compile` and similar functions.
- `multistart_gen` in `Circuit.instantiate` (been moved directly to the `Instantiater.instantiate`)
- `batch_size` in `ForEachBlockSize`
- `GreedyPartitioner`
- `Rebase2QuditGatePass` has moved from `bqskit.passes.processing` to `bqskit.passes.retarget`

**Full Changelog**: [1.0.4...1.1.0](https://github.com/BQSKit/bqskit/compare/1.0.4...1.1.0)

1.0.4

- Native Apple Silicon support (M1 and M2 chips)
- Python 3.11 support
- Qudit support in instantiation
- Performance improvements
- Bugfixes

1.0.3

Fixes several bugs

Page 1 of 3

© 2024 Safety CLI Cybersecurity Inc. All Rights Reserved.