| Name | Modified | Size | Downloads / Week |
|---|---|---|---|
| Parent folder | |||
| 1.1.0.tar.gz | 2023-09-15 | 1.1 MB | |
| 1.1.0.zip | 2023-09-15 | 1.3 MB | |
| README.md | 2023-09-15 | 6.0 kB | |
| Totals: 3 Items | 2.4 MB | 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