|
| 1 | +Introduction to :math:`C^3` Toolset |
| 2 | +==================================== |
| 3 | + |
| 4 | +In this section, we go over the foundational components and concepts in :math:`C^3` with the |
| 5 | +primary objective of understanding how the different sub-modules inside the :code:`c3-toolset` |
| 6 | +are structured, the purpose they serve and how to tie them together into a complete Automated |
| 7 | +Quantum Device Bring-up workflow. For more detailed examples of how to use the :code:`c3-toolset` |
| 8 | +to perform a specific Quantum Control task, please check out the :doc:`two_qubits` or the |
| 9 | +:doc:`Simulated_calibration` sections or refer to the :doc:`c3` for descriptions of |
| 10 | +Classes and Functions. |
| 11 | + |
| 12 | + |
| 13 | +The Building Blocks |
| 14 | +-------------------- |
| 15 | + |
| 16 | +There are three basic building blocks that form the foundation of all the modelling and calibration |
| 17 | +tasks one can perform using :code:`c3-toolset`, and depending on the use-case, some or all of these |
| 18 | +blocks might be useful. These are the following: |
| 19 | + |
| 20 | +Quantum Device Model |
| 21 | +~~~~~~~~~~~~~~~~~~~~~ |
| 22 | + |
| 23 | +A theoretical Physics-based model of the Quantum Processing Unit. This is encapsulated by the |
| 24 | +:code:`Model` class which consists of objects from the :code:`chip` and :code:`tasks` library. |
| 25 | +:code:`chip` contains Hamiltonian models of different kinds of qubit realisations, along with |
| 26 | +their couplings while :code:`tasks` let you perform common operations such as qubit initialisation or |
| 27 | +readout. A typical :code:`Model` object would contain objects encapsulating qubits along with their |
| 28 | +interactions as drive lines and tasks, if any. |
| 29 | + |
| 30 | +Classical Control Electronics |
| 31 | +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
| 32 | +A digital twin of the electronic control stack associated with the Quantum Processing Unit. The |
| 33 | +:code:`Generator` class contains the required encapsulation in the form of :code:`devices` which |
| 34 | +help model the behaviour of the classical control electronics taking account of their imperfections and |
| 35 | +physical realisations. The devices e.g, an LO or an AWG or a Mixer are wired together in the |
| 36 | +:code:`Generator` object to form a complete representation of accessory electronics. |
| 37 | + |
| 38 | +Instructions |
| 39 | +~~~~~~~~~~~~~~ |
| 40 | +Once there is a software model for the QPU and the control electronics, one would need to define |
| 41 | +Instructions or operations to be perform on this device. For gate-based quantum computing , this is |
| 42 | +in the form of gates and their underlying pulse operations. Pulse shapes are described through a |
| 43 | +:code:`Envelope` along with a :code:`Carrier`, which are then wrapped up in the form of :code:`Instruction` |
| 44 | +objects. The sequence in which these gates are applied are not defined at this stage. |
| 45 | + |
| 46 | + |
| 47 | +.. warning:: |
| 48 | + Components inside the :code:`c3/generator/` and :code:`c3/signal/` sub-modules will be restructured |
| 49 | + in an upcoming release to be more consistent with how the :code:`Model` class encapsulates smaller |
| 50 | + blocks present in the :code:`c3/libraries` sub-module. |
| 51 | + |
| 52 | + |
| 53 | +Parameter Map |
| 54 | +-------------- |
| 55 | + |
| 56 | +The :code:`ParameterMap` helps to obtain an optimizable vector of parameters from the various theoretical |
| 57 | +models previously defined. This allows for a simple interface to the optimization algorithms which are tasked |
| 58 | +with optimizing different sets of variables used to define some entity, e.g, optimizing pulse parameters by |
| 59 | +calibrating on hardware or providing an optimal gate-set through model-based quantum control. |
| 60 | + |
| 61 | +Experiments |
| 62 | +------------- |
| 63 | + |
| 64 | +With the building blocks in place, we can bring them all together through an :code:`Experiment` object that |
| 65 | +encapsulates the device model, the control signals, the instructions and the parameter map. Note that depending on |
| 66 | +the use only some of the blocks are essential when building the experiment. |
| 67 | + |
| 68 | +Optimizers |
| 69 | +----------- |
| 70 | + |
| 71 | +At its core, :code:`c3-toolset` is an optimization framework and all of the three steps - Open-Loop, Calibration and |
| 72 | +Model Learning can be defined as a optimization task. The :code:`optimizers` contain classes that provide |
| 73 | +helpful encapsulation for these steps. These objects take as arguments the previously defined :code:`Experiment` and |
| 74 | +:code:`ParameterMap` objects along with an :code:`algorithm` e.g, :code:`CMA-eS` or :code:`L-BFGS` which performs |
| 75 | +the iterative optimization steps. |
| 76 | + |
| 77 | +Libraries |
| 78 | +---------- |
| 79 | + |
| 80 | +The :code:`c3/libraries` sub-module includes various helpful library of components that are used somewhat like lego |
| 81 | +pieces when building the bigger blocks, e.g, :code:`hamiltonians` for the :code:`chip` present in the :code:`Model` |
| 82 | +or :code:`envelopes` defining a control :code:`pulse`. More details about these components are available in the |
| 83 | +:doc:`c3.libraries` section. |
0 commit comments