1 Star 0 Fork 3.3K

刘鹏翔 / mindquantum

forked from MindSpore / mindquantum 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
RELEASE.md 30.07 KB
一键复制 编辑 原始数据 按行查看 历史
donghufeng 提交于 2023-10-20 14:06 . fix release

MindQuantum Release Notes

查看中文

MindQuantum 0.9.0 Release Notes

Major Feature and Improvements

Data precision

  • [STABLE] Data Precision: MindQuantum now supports float32, float64, complex64 and complex128 four types of precision, and can set different precision types for operators, parameter resolvers and simulators.

Gates

Operator

  • [STABLE] QubitOperator: Added relabel interface, supports according to new qubit number to rearrange operators. FermionOperator also supports this function.
  • [STABLE] Ground state calculation: New interface supports the calculation of the ground state energy of the Hamiltonian containing only the direct product of the Pauli-Z operator and the Pauli-Z operator.

Ansatz

  • [STABLE] Ansatz: Add 19 ansatz mentioned in Arxiv:1905.10876, all have been implemented.

Circuit

  • [STABLE] ChannelAdder: Add ChannelAdder module, support customized adding various quantum channels into the quantum circuit to construct a noise model. For more details, please refer to: ChannelAdder.

Simulator

  • [STABLE] Density Matrix Simulator: Add density matrix simulator, named mqmatrix. Support variational quantum algorithms, noise simulation, etc. Its functionality is basically aligned with the existing mqvector full-amplitude simulator.
  • [BETA] parameter shift: The quantum simulator gradient operator now supports the parameter shift rule algorithm, which is closer to the experiment.
  • [STABLE] Expectation Calculation: interface is basically aligned with get_expectation_with_grad, but does not calculate the gradient, saving time.

Device

  • [STABLE] QubitNode: Added the qubit node object in the qubit topology interface, which supports the configuration of qubit position, color and connectivity.
  • [STABLE] QubitsTopology: Qubit topology, supports custom topology. Also available with preset structures: linear qubit topology LinearQubits and grid qubit topology GridQubits.

Algorithm

  • [STABLE] Bit Mapping: Added Bit mapping algorithm SABRE, please refer to Arxiv 1809.02573.
  • [BETA] Error Mitigation: Added zero noise extrapolation algorithm for quantum error mitigation.
  • [STABLE] Circuit folding: The quantum circuit folding function is added to support the growth of quantum circuits while ensuring the equivalence of quantum circuits.
  • [BETA] Quantum circuit compilation: A new quantum circuit compilation module is added, which uses DAG graphs to compile quantum circuits, and supports quantum compilation algorithms such as gate replacement, gate fusion, and gate decomposition.
  • [STABLE] ansatz_variance: Added an interface to calculate the variance of the gradient of a certain parameter in the variable quantum circuit, which can be used to verify the barren plateau phenomenon of the variable quantum circuit.

Framework

  • [STABLE] QRamVecLayer: The QRam quantum encoding layer has been added to support direct encoding of classical data into full-amplitude quantum states. The corresponding operator is QRamVecOps.

IO

  • [STABLE] OpenQASM: OpenQASM has added the from_string interface, which supports converting OpenQASM from string format to quantum circuits in MindQuantum.

Bug fix

Contributor

Thanks to the following developers for their contributions:

yufan, wengwenkang, xuxusheng, Damien Ngyuen, zhouxu, wangzidong, yangkang, lujiale, zhangzhenghai, fanyi, zhangwengang, wangkaisheng, zhoufeng, wangsiyuan, gongxiaoqing, chengxianbin, sunxiyin, wenwenkang, lvdingshun, cuijiangyu, chendiqing, zhangkai, Zotov Yuriy, liqin, zengjinglin, cuixiaopeng, 朱祎康, dorothy20212021, dsdsdshe, buyulin, norl-corxilea, herunhong, Arapat Ablimit, NoE, panshijie, longhanlin.

Welcome contributions to the project in any form!

MindQuantum 0.8.0 Release Notes

Major Feature and Improvements

Gates

  • [STABLE] FSim: Fermionic simulation gate supported, and this gate also works in variational quantum algorithm.
  • [STABLE] U3: The single qubit arbitrary gate U3 now will work as a single gate but not a piece of quantum circuit. U3 gate also works in variational quantum algorithm.
  • [STABLE] Customed parameterized gate. Customed parameterized gate now will compiled to machine code by jit compiler numba, and the simulator backend can call customed parameterized gate in parallel thread.
  • [STABLE] BarrierGate: BarrierGate now can be acted on certain qubits.
  • [STABLE] KrausChannel: Design a customed kraus channel for quantum simulator.

Circuit

  • [STABLE] svg: Now you can set the width to split the svg circuit, so that you can copy it into your paper.

Simulator

  • [STABLE] New simulator supported. mqvector and mqvector_gpu are two mindquantum simulate that prepared for cpu and gpu. And projectq simulator will be deprecated. The new simulator is total compatible with old one, what you only to do is to change the backend name when you initialize the simulator.

MindQuantum 0.7.0 Release Notes

Major Features and Improvements

Circuit

  • [STABLE] as_encoder: Method of Circuit to mark this circuit as an encoder circuit.
  • [STABLE] as_ansatz: Method of Circuit to mark this circuit as an ansatz circuit.
  • [STABLE] encoder_params_name: Method of Circuit to return all encoder parameters in the circuit.
  • [STABLE] ansatz_params_name: Method of Circuit to return all ansatz parameters in the circuit.
  • [STABLE] remove_noise: Method of Circuit to remove all noise channels.
  • [STABLE] with_noise: Method of Circuit to add a given noise channel after every non-noise gate.
  • [STABLE] as_encoder: A decorator to mark the circuit returned by the decorator function as an encoder circuit.
  • [STABLE] as_ansatz: A decorator to mark the circuit returned by the decorator function as an ansatz circuit.
  • [STABLE] qfi: A method that can calculate the quantum fisher information of a given parameterized quantum circuit.
  • [STABLE] partial_psi_partial_psi: A method that can calculate the first part of quantum fisher information.
  • [STABLE] partial_psi_psi: A method that can calculate the second part of quantum fisher information.

Gates

  • [STABLE] AmplitudeDampingChannel: Amplitude damping channel, caused by the energy dissipation.
  • [STABLE] PhaseDampingChannel: Phase damping channel express error that qubit loses quantum information without exchanging energy with environment.

FermionOperator and QubitOperator

  • [STABLE] split: A method of FermionOperator and QubitOperator that can split the coefficient with the operator.

ParameterResolver

  • [STABLE] astype: Convert the ParameterResolver to a given type.
  • [STABLE] const: Get the constant part of this ParameterResolver.
  • [STABLE] is_const: Check whether this ParameterResolver is constant.
  • [STABLE] encoder_part: Set a part of parameters to be encoder parameters.
  • [STABLE] ansatz_part: Set a part of parameters to be ansatz parameters.
  • [STABLE] as_encoder: Set all parameters to encoder parameters.
  • [STABLE] as_ansatz: Set all parameters to ansatz parameters.
  • [STABLE] encoder_parameters: Return all encoder parameters.
  • [STABLE] ansatz_parameters: Return all ansatz parameters.
  • [STABLE] is_hermitian: Check whether this ParameterResolver is hermitian conjugate.
  • [STABLE] is_anti_hermitian: Check whether this ParameterResolver is anti hermitian conjugate.
  • [STABLE] no_grad_parameters: Return all parameters that do no require gradient.
  • [STABLE] requires_grad_parameters: Return all parameters that require gradient.

Simulator

  • [STABLE] copy: The simulator now supports replication.
  • [STABLE] apply_gate: In this version, you can apply a gate in differential version.
  • [BETA] inner_product: Calculate the inner product of two states in two given simulators.

IO

  • [STABLE] BlochScene: We support the establishment of a Bloch sphere mapping scene, which can draw quantum states on it, and can also dynamically demonstrate the change of quantum states.

Contributors

Thanks goes to these wonderful people:

yufan, wengwenkang, xuxusheng, Damien Ngyuen, zhouxu, wangzidong, yangkang, lujiale, zhangzhenghai, fanyi, zhangwengang, wangkaisheng, zhoufeng, wangsiyuan, gongxiaoqing, chengxianbin, sunxiyin, wenwenkang, lvdingshun, cuijiangyu, chendiqing, zhangkai, Zotov Yuriy, liqin, zengjinglin, cuixiaopeng, 朱祎康, dorothy20212021, dsdsdshe, buyulin, norl-corxilea, herunhong, Arapat Ablimit, NoE, panshijie, longhanlin.

Contributions of any kind are welcome!

MindQuantum 0.6.0 Release Notes

Major Features and Improvements

Better iteration supported for QubitOperator and FermionOperator

  • Iterate over a multinomial fermion or boson operator and yield each term
  • When the operator has only one item, each fermion or boson can be obtained through singlet

Add line module

Richer circuit operation supported

  • shift: translation qubit

  • reverse_qubits: flip circuit bit

Feature enhancement

  • MaxCutAnsatz: get_partition, get the max-cut cutting solution
  • MaxCutAnsatz: get_cut_value, get the number of cuts for a cutting solution
  • Circuit: is_measure_end, determine whether the quantum circuit is the end of the measurement gate

SVG drawing mode that supports quantum circuits

  • The quantum circuit build by mindquantum now can be showd by svg in jupyter notebook, just call svg() of any quantum circuits.

Noise simulator supported

MindQuantum adds the following quantum channels for quantum noise simulation

MindQuantum 0.5.0 Release Notes

Major Features and Improvements

API Change

Backwards Incompatible Change

We unified the abbreviations of some nouns in MindQuantum.

  • isparameter property of gate changes to parameterized
0.3.1 0.5.0
>>> from mindquantum import RX
>>> gate = RX('a').on(0)
>>> gate.isparameter
True
>>> from mindquantum import RX
>>> gate = RX('a').on(0)
>>> gate.parameterized
True
  • para_name of a quantum circuit changes to params_name
0.3.1 0.5.0
>>> from mindquantum import Circuit
>>> circ = Circuit().rx('a', 0)
>>> circ.para_name
['a']
>>> from mindquantum import Circuit
>>> circ = Circuit().rx('a', 0)
>>> circ.params_name
['a']

The quantum neural network API was redesigned in this version. From now on, we can easily build a hybrid quantum neural network with the help of Simulator in PYNATIVE_MODE.

The following API was removed.

  1. generate_pqc_operator
  2. PQC
  3. MindQuantumLayer
  4. generate_evolution_operator
  5. Evolution
  6. MindQuantumAnsatzOnlyLayer
  7. MindQuantumAnsatzOnlyOperator

The new API was shown as below.

  1. MQOps
  2. MQN2Ops
  3. MQAnsatzOnlyOps
  4. MQN2AnsatzOnlyOps
  5. MQEncoderOnlyOps
  6. MQN2EncoderOnlyOps
  7. MQLayer
  8. MQN2Layer
  9. MQAnsatzOnlyLayer
  10. MQN2AnsatzOnlyLayer

The above modules are placed in mindquantum.framework.

Removed

Due to the duplication of functions, we deleted some APIs.

  • mindquantum.circuit.StateEvolution

The following APIs have been remoted.

  • mindquantum.core.operators.Hamiltonian.mindspore_data
  • mindquantum.core.operators.Projector.mindspore_data
  • mindquantum.core.circuit.Circuit.mindspore_data
  • mindquantum.core.parameterresolver.ParameterResolver.mindspore_data

New feature

New gates are shown as below.

  • mindquantum.core.gates.SGate
  • mindquantum.core.gates.TGate

Measurement on certain qubits are now supported. The related APIs are shown as below.

  • mindquantum.core.gates.Measure
  • mindquantum.core.gates.MeasureResult

QASM is now supported.

  • mindquantum.io.OpenQASM
  • mindquantum.io.random_hiqasm
  • mindquantum.io.HiQASM

Simulator is now separated from MindSpore backend. Now you can easily to use a simulator.

  • mindquantum.simulator.Simulator

Refactoring

For improving MindQuantum's package structure, we did some refactoring on MindQuantum.

old new

mindquantum.gate.Hamiltonian

mindquantum.core.operators.Hamiltonian

mindquantum.gate.Projector

mindquantum.core.operators.Projector

mindquantum.circuit.qft

mindquantum.algorithm.library.qft

mindquantum.circuit.generate_uccsd

mindquantum.algorithm.nisq.chem.generate_uccsd

mindquantum.circuit.TimeEvolution

mindquantum.core.operators.TimeEvolution

mindquantum.utils.count_qubits

mindquantum.core.operators.count_qubits

mindquantum.utils.commutator

mindquantum.core.operators.commutator

mindquantum.utils.normal_ordered

mindquantum.core.operators.normal_ordered

mindquantum.utils.number_operator

mindquantum.core.operators.number_operator

mindquantum.utils.hermitian_conjugated

mindquantum.core.operators.hermitian_conjugated

mindquantum.utils.up_index

mindquantum.core.operators.up_index

mindquantum.utils.down_index

mindquantum.core.operators.down_index

mindquantum.utils.sz_operator

mindquantum.core.operators.sz_operator

mindquantum.ansatz.Ansatz

mindquantum.algorithm.nisq.Ansatz

mindquantum.ansatz.MaxCutAnsatz

mindquantum.algorithm.nisq.qaoa.MaxCutAnsatz

mindquantum.ansatz.Max2SATAnsatz

mindquantum.algorithm.nisq.qaoa.Max2SATAnsatz

mindquantum.ansatz.HardwareEfficientAnsatz

mindquantum.algorithm.nisq.chem.HardwareEfficientAnsatz

mindquantum.ansatz.QubitUCCAnsatz

mindquantum.algorithm.nisq.chem.QubitUCCAnsatz

mindquantum.ansatz.UCCAnsatz

mindquantum.algorithm.nisq.chem.UCCAnsatz

mindquantum.hiqfermion.Transform

mindquantum.algorithm.nisq.chem.Transform

mindquantum.hiqfermion.get_qubit_hamiltonian

mindquantum.algorithm.nisq.chem.get_qubit_hamiltonian

mindquantum.hiqfermion.uccsd_singlet_generator

mindquantum.algorithm.nisq.chem.uccsd_singlet_generator

mindquantum.hiqfermion.uccsd_singlet_get_packed_amplitudes

mindquantum.algorithm.nisq.chem.uccsd_singlet_get_packed_amplitudes

mindquantum.hiqfermion.uccsd0_singlet_generator

mindquantum.algorithm.nisq.chem.uccsd0_singlet_generator

mindquantum.hiqfermion.quccsd_generator

mindquantum.algorithm.nisq.chem.quccsd_generator

mindquantum.utils.bprint

mindquantum.io.bprint

mindquantum.circuit

mindquantum.core.circuit

mindquantum.gate

mindquantum.core.gates

mindquantum.ops

mindquantum.core.operators

mindquantum.parameterresolver

mindquantum.core.parameterresolver

Contributors

Thanks goes to these wonderful people:

yufan, wengwenkang, xuxusheng, Damien Ngyuen, zhouxu, wangzidong, yangkang, lujiale, zhangzhenghai, fanyi, zhangwengang, wangkaisheng, zhoufeng, wangsiyuan, gongxiaoqing, chengxianbin, sunxiyin, wenwenkang, lvdingshun, cuijiangyu, chendiqing, zhangkai, Zotov Yuriy, liqin, zengjinglin, cuixiaopeng.

Contributions of any kind are welcome!

MindQuantum 0.3.1 Release Notes

Major Features and Improvements

  • Three tutorials have been rewritten to make them easier to read
  • Circuit information such as qubit number, parameters will update immediately after you add gate
  • The UN operator now support parameterized gate
  • New ansatz that solving max 2 sat problem now are supported

Contributors

Thanks goes to these wonderful people:

yufan, wengwenkang, xuxusheng, wangzidong, yangkang, lujiale, fanyi, zhangwengang, wangkaisheng, zhoufeng, wangsiyuan, gongxiaoqing, chengxianbin, sunxiyin, wenwenkang, lvdingshun, cuijiangyu, chendiqing, zhangkai, Damien Ngyuen, Zotov Yuriy, liqin, zengjinglin, cuixiaopeng.

Contributions of any kind are welcome!

MindQuantum 0.2.0 Release Notes

Major Features and Improvements

  1. Parameterized FermionOperator and QubitOperator for quantum chemistry
  2. Different kinds of transformation between FermionOperator and QubitOperator
  3. UCCSD, QAOA and hardware efficient ansatz supported
  4. MindQuantumAnsatzOnlyLayer for simulating circuit with ansatz only circuit
  5. TimeEvolution with first order Trotter decomposition
  6. High level operations for modifying quantum circuit

Contributors

Thanks goes to these wonderful people:

yufan, wengwenkang, xuxusheng, wangzidong, yangkang, lujiale, fanyi, zhangwengang, wangkaisheng, zhoufeng, wangsiyuan, gongxiaoqing, chengxianbin, sunxiyin, wenwenkang, lvdingshun, cuijiangyu, chendiqing, zhangkai, Damien Ngyuen, Zotov Yuriy, liqin, zengjinglin, cuixiaopeng.

Contributions of any kind are welcome!

MindQuantum 0.1.0 Release Notes

Initial release of MindQuantum.

Major Features and Improvements

  1. Easily build parameterized quantum circuit.
  2. Effectively simulate quantum circuit.
  3. Calculating the gradient of parameters of quantum circuit.
  4. PQC (parameterized quantum circuit) operator that naturally compatible with other operators in mindspore framework.
  5. Evolution operator that evaluate a quantum circuit and return the quantum state.
  6. Data parallelization for PQC operator.

Contributors

Thanks goes to these wonderful people:

yufan, wengwenkang, xuxusheng, wangzidong, yangkang, lujiale, wangkaisheng, zhoufeng, wangsiyuan, gongxiaoqing, chengxianbin, sunxiyin, wenwenkang, lvdingshun, cuijiangyu, chendiqing, zhangkai, Damien Ngyuen, Zotov Yuriy, liqin, zengjinglin, cuixiaopeng. MindQuantum adds the following quantum channels for quantum noise simulation

Contributions of any kind are welcome!

Python
1
https://gitee.com/lpx666111/mindquantum.git
git@gitee.com:lpx666111/mindquantum.git
lpx666111
mindquantum
mindquantum
master

搜索帮助