Releases: BQSKit/bqskit
1.2.1
What's Changed
- Adding Multiplexed Rotation Gates by @jkalloor3 in #282
- Pulling from main by @alonkukl in #292
- Solving issue #293 by @alonkukl in #294
- Adding Block ZXZ Decomposition to BQSKit by @jkalloor3 in #285
- Fix
KeyErrorfor already popped tasks by @mtweiden in #300 - GPU guide by @alonkukl in #259
- Extend supported gate sets for qiskit conversion by @Jonas-Jaeger in #303
- Fix StateVector Zero and add test by @WingCode in #324
- Fix ci precommit by @edyounis in #336
-
- Updated
parser.pyto fix #315. by @ACE07-Sev in #326
- Updated
- Fixes #225 by @ACE07-Sev in #327
- Added nbval and updated notebooks by @ACE07-Sev in #335
- Deprecate
get_induced_subgraphand update docstrings forCouplingGraphandget_subgraphby @Newtech66 in #337 - Update gov link by @edyounis in #342
- Change link to doi by @edyounis in #343
- Fixed bug with checkpoint pass by @mtkgv in #344
- Fix multistart cost comparison for ResidualsFunction by @mihir-putcha in #347
- Fixed data not being passed to compiler by @edyounis in #345
- made _handle_cancel more resiliant against changes to _tasks from oth… by @WolfLink in #346
- Bump version to 1.2.1 by @edyounis in #348
New Contributors
- @Jonas-Jaeger made their first contribution in #303
- @WingCode made their first contribution in #324
- @ACE07-Sev made their first contribution in #326
- @Newtech66 made their first contribution in #337
- @mtkgv made their first contribution in #344
- @mihir-putcha made their first contribution in #347
Full Changelog: 1.2.0...1.2.1
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 #215
- Hash structure of only multi-qubit gates by @mtweiden in #221
- Feature: Cache for runtime workers by @mtweiden in #220
- Updated .qasm() to qasm2.dumps by @edyounis in #228
- Fix identity rebase by @edyounis in #222
- Fixing the documentation of get_distance_from by @alonkukl in #232
- Add reset by @peachnuts in #212
- CI/CD Updates and Fixes by @edyounis in #235
- Patch 1.1.2 by @edyounis in #243
- Add ECR gate by @vincentgierisch in #234
- SqrtTGate by @mtweiden in #244
- add StaticPlacementPass by @SoshunNaito in #250
- Modifying surround function by @bachbao in #255
- Fix typo: RestoreModelConnectivityPass by @HaoTy in #242
- Fixing the precommit W504 line break after binary operator error by @alonkukl in #261
- PauliZGate by @mtweiden in #254
- Surround filter by @edyounis in #257
- Adding a TreeScan Gate Removal pass to parallelize Scanning Gate by @jkalloor3 in #240
- Power gate by @ermalrrapaj in #236
- Fixed overflow in Unitary.dim by @edyounis in #267
- Implemented
__del__to clean up hanging coroutines by @WolfLink in #263 - Runtime updates by @edyounis in #237
- Register
Workflows by @mtweiden in #269 - Todo cleanup by @edyounis in #271
- Handle EOFError and ConnectionResetError without chaining exceptions in server connection failure by @alonkukl in #273
- Fix parameter issue with CircuitGate's QASM by @edyounis in #276
- Update Pre-built Models by @edyounis in #277
- Register workflows by target type by @mtweiden in #272
- Added Gate Guide by @edyounis in #278
- DiscreteLayerGenerator by @mtweiden in #270
- Initial Distributed Quantum Support by @edyounis in #274
- 1.2.0 by @edyounis in #280
New Contributors
- @peachnuts made their first contribution in #212
- @vincentgierisch made their first contribution in #234
- @SoshunNaito made their first contribution in #250
- @bachbao made their first contribution in #255
- @HaoTy made their first contribution in #242
Full Changelog: 1.1.2...1.2.0
1.1.2
Patch release fixing qiskit breaking changes.
Full Changelog: 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_workflowfor 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
MachineModeldocumentations - Added documentation for the
bqskit.extpackage - Added
pass_down_block_specific_key_prefixtoForEachBlockPass, allowing passes to pass down data to each block individually - Added support to convert unitaries to special unitaries
- Added documentation to
EmbeddedGateto warn users about local phases - Added log messages during
optimization_level=4and PAM
Changed
- Circuit append methods now return cycle of new operation
EmbeddedGatecan now takeNoneforlevel_mapsEmbeddedGatenow has a default forlevel_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
dictdata - Fixed documentation bugs with some gates
- Fixed broken documentation link in
MachineModel - Fixed
ScanPartitionerbug with small circuits - Fixed issue with PAM and barriers
- Fixed performance issue due to unnecessary
is_unitarychecks - Fixed
EmbeddedGatehashing 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
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
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 for more info.
New Features
- Added Barrier Support
- Added
with_mappingflag to thecompilefunction to optionally return the
initial and final logical-to-physical qudit mapping - Added the
Workflowclass - Added the
PassDataclass - Added the
GateSetclass - Added the
StateSystemclass - Added
Sequencesupport for inputs thecompilefunction. 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_loggingfunction- Implemented the
compute_su_generatorsmath 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_inversenow works differently to avoidDaggerGates when not necessary- Many passes and layer generators where given "smart defaults" picked from the
PassData.model - Improved performance of
active_quditcalculation ForEachBlockPassreplace filter option can now be a string that describes the filter- Layer generator selection in QSearch and LEAP now reacts to seeds in
PassData SeedLayerGeneratorhas been significantly improvedMachineModel.is_compatiblenow takes an optionalplacementparameterControlledGateis now significantly more general and can handle qudit and even mixed qudit controls and targets.- Many gates now take an optional
radixparameter that can be set to generalize them to higher dimensions FillSingleQuditGatesPassno 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_dashboardanddisable_dashboard(dask no longer works)enable_parallelismanddisable_parallelism(useCompiler(num_workers=x)to control parallelism)BasePass.get_model,BassPass.get_placement,BassPass.get_connectivity,BassPass.get_targethave
all been replaced with thePassDataversion.BassPass.in_parallelandBassPass.execute(in_parallelis no longer necessary andexecutehas been replaced withawait get_runtime().map(...))- The direct use of a
CompilationTaskhas been deprecated and is no longer needed.
Instead, you can pass the circuit and workflow directly intoCompiler.compileand similar functions. multistart_geninCircuit.instantiate(been moved directly to theInstantiater.instantiate)batch_sizeinForEachBlockSizeGreedyPartitionerRebase2QuditGatePasshas moved frombqskit.passes.processingtobqskit.passes.retarget
Full Changelog: 1.0.4...1.1.0