QVM Basic Example  |  Cirq  |  Google Quantum AI (2024)

Sign in
  • Google Quantum AI
  • Cirq
  • Simulate
View on QuantumAI QVM Basic Example | Cirq | Google Quantum AI (4)Run in Google Colab QVM Basic Example | Cirq | Google Quantum AI (5)View source on GitHub QVM Basic Example | Cirq | Google Quantum AI (6)Download notebook

This notebook walks through running a simple circuit on the Quantum Virtual Machine, including the necessary constraints on a device-runnable circuit and how to satisfy them.

Install Cirq and qsim

# @title Install `cirq_google` and `qsimcirq`try: import cirq import cirq_googleexcept ImportError: print("installing cirq...") !pip install --quiet cirq-google print("installed cirq.") import cirq import cirq_googletry: import qsimcirqexcept ImportError: print("installing qsimcirq...") !pip install --quiet qsimcirq print(f"installed qsimcirq.") import qsimcirq# Other modules used in this colabimport matplotlib.pyplot as pltimport time

Create a Quantum Virtual Machine

The following cell builds a Quantum Virtual Machine that mimics a particular Google quantum hardware device (currently Rainbow or Weber) using the following customizable steps:

  • Constructing a cirq.NoiseModel object from device calibration data saved in Cirq. See Representing Noise for more on noise models.
  • Building a qsimcirq.QsimSimulator that uses this noise model. See Noisy Simulation and Noise simulation with qsim for more.
  • Creating a cirq.Device that imposes the same constraints on circuits that the original device would. See Devices for more on these constraint objects.
  • Packaging the simulator and device into an object that implements the cirq.Engine interface that the hardware device would use.

If you don't need this level of control, you can also instantiate a QVM with cirq_google.engine.create_default_noisy_quantum_virtual_machine, as in QVM Creation Template.

# @title Choose a processor ("rainbow" or "weber")processor_id = "weber" # @param {type:"string"}# Construct a simulator with a noise model based on the specified processor.cal = cirq_google.engine.load_median_device_calibration(processor_id)noise_props = cirq_google.noise_properties_from_calibration(cal)noise_model = cirq_google.NoiseModelFromGoogleNoiseProperties(noise_props)sim = qsimcirq.QSimSimulator(noise=noise_model)# Create a device from the public device descriptiondevice = cirq_google.engine.create_device_from_processor_id(processor_id)# Build the simulated local processor from the simulator and device.sim_processor = cirq_google.engine.SimulatedLocalProcessor( processor_id=processor_id, sampler=sim, device=device, calibrations={cal.timestamp // 1000: cal})# Package the processor to use an Engine interfacesim_engine = cirq_google.engine.SimulatedLocalEngine([sim_processor])print( "Your quantum virtual machine", processor_id, "is ready, here is the qubit grid:", "\n========================\n",)print(sim_engine.get_processor(processor_id).get_device())
Your quantum virtual machine weber is ready, here is the qubit grid: ======================== (0, 5)───(0, 6) │ │ │ │ (1, 4)───(1, 5)───(1, 6)───(1, 7) │ │ │ │ │ │ │ │ (2, 4)───(2, 5)───(2, 6)───(2, 7)───(2, 8) │ │ │ │ │ │ │ │ │ │ (3, 2)───(3, 3)───(3, 4)───(3, 5)───(3, 6)───(3, 7)───(3, 8)───(3, 9) │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ (4, 1)───(4, 2)───(4, 3)───(4, 4)───(4, 5)───(4, 6)───(4, 7)───(4, 8)───(4, 9) │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │(5, 0)───(5, 1)───(5, 2)───(5, 3)───(5, 4)───(5, 5)───(5, 6)───(5, 7)───(5, 8) │ │ │ │ │ │ │ │ │ │ │ │ │ │ (6, 1)───(6, 2)───(6, 3)───(6, 4)───(6, 5)───(6, 6)───(6, 7) │ │ │ │ │ │ │ │ │ │ (7, 2)───(7, 3)───(7, 4)───(7, 5)───(7, 6) │ │ │ │ │ │ (8, 3)───(8, 4)───(8, 5) │ │ (9, 4)

Create a circuit, transform it (to make it executable on Google quantum hardware) and choose qubits on the processor.

The circuit you use needs to be device ready, which means it:

  • Is comprised of operations from the device's gate set.
  • Is applied to qubits that exist on the device.
  • Respects the connectivity of qubits on the device.

Below is an example of a circuit that has the correct topology to be placed on the Weber device, and how it is prepared to be run on the QVM.

Create a GHZ state builder circuit

The generalized Greenberger–Horne–Zeilinger (GHZ) state has the form \(\frac{|00..0⟩ + |11..1⟩}{\sqrt{2} }\) and, in this case, will be constructed using 17 qubits, with a Hadamard and a sequence of CNOT gates:

# Define an abstract line of 17 qubitsnumber_of_qubits = 17qubits = cirq.LineQubit.range(number_of_qubits)# Create a GHZ circuit on this qubit lineghz_circuit = cirq.Circuit( cirq.H(qubits[0]), *[cirq.CNOT(qubits[i - 1], qubits[i]) for i in range(1, number_of_qubits)], cirq.measure(*qubits, key='out'),)print(ghz_circuit)
0: ────H───@───────────────────────────────────────────────────────────────M('out')─── │ │1: ────────X───@───────────────────────────────────────────────────────────M────────── │ │2: ────────────X───@───────────────────────────────────────────────────────M────────── │ │3: ────────────────X───@───────────────────────────────────────────────────M────────── │ │4: ────────────────────X───@───────────────────────────────────────────────M────────── │ │5: ────────────────────────X───@───────────────────────────────────────────M────────── │ │6: ────────────────────────────X───@───────────────────────────────────────M────────── │ │7: ────────────────────────────────X───@───────────────────────────────────M────────── │ │8: ────────────────────────────────────X───@───────────────────────────────M────────── │ │9: ────────────────────────────────────────X───@───────────────────────────M────────── │ │10: ───────────────────────────────────────────X───@───────────────────────M────────── │ │11: ───────────────────────────────────────────────X───@───────────────────M────────── │ │12: ───────────────────────────────────────────────────X───@───────────────M────────── │ │13: ───────────────────────────────────────────────────────X───@───────────M────────── │ │14: ───────────────────────────────────────────────────────────X───@───────M────────── │ │15: ───────────────────────────────────────────────────────────────X───@───M────────── │ │16: ───────────────────────────────────────────────────────────────────X───M──────────

Notice that this circuit consists of a sequence of CNOT gates applied consecutively to a single chain of qubits. The connectivity required by the circuit is simple in the sense that it needs a line of qubits which are only connected to their adjacent neighbor in the sequence. As constructed, this consists of 17 cirq.LineQubits indexed 0, 1, 2...16.

Transform the circuit

Before executing a circuit on (virtual) quantum hardware, the operations in the circuit need to be translated to use the types of gates the device supports. The cirq.optimize_for_target_gateset function does this for you, transforming the operations to use the cirq.SqrtIswapTargetGateset, which is supported by the Weber processor that this QVM is based on. Learn more about the gate set constraints of Google hardware at the Hardware page.

# Convert the gates in the GHZ circuit to the "SqrtIswap" gateset, which the device uses.translated_ghz_circuit = cirq.optimize_for_target_gateset( ghz_circuit, context=cirq.TransformerContext(deep=True), gateset=cirq.SqrtIswapTargetGateset())print(translated_ghz_circuit)
0: ────PhXZ(a=0,x=0.75,z=0.5)─────iSwap───────PhXZ(a=-0.5,x=1,z=0)───iSwap───────PhXZ(a=0,x=0.5,z=-0.75)─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────M('out')─── │ │ │1: ────PhXZ(a=1.0,x=0.25,z=0.5)───iSwap^0.5──────────────────────────iSwap^0.5───PhXZ(a=0.804,x=0.333,z=-0.608)───iSwap───────PhXZ(a=-0.5,x=1,z=0)───iSwap───────PhXZ(a=0,x=0.5,z=-0.75)─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────M────────── │ │ │2: ──────────────────────────────────────────────────────────────────────────────PhXZ(a=1.0,x=0.25,z=0.5)─────────iSwap^0.5──────────────────────────iSwap^0.5───PhXZ(a=0.804,x=0.333,z=-0.608)───iSwap───────PhXZ(a=-0.5,x=1,z=0)───iSwap───────PhXZ(a=0,x=0.5,z=-0.75)─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────M────────── │ │ │3: ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────PhXZ(a=1.0,x=0.25,z=0.5)─────────iSwap^0.5──────────────────────────iSwap^0.5───PhXZ(a=0.804,x=0.333,z=-0.608)───iSwap───────PhXZ(a=-0.5,x=1,z=0)───iSwap───────PhXZ(a=0,x=0.5,z=-0.75)─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────M────────── │ │ │4: ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────PhXZ(a=1.0,x=0.25,z=0.5)─────────iSwap^0.5──────────────────────────iSwap^0.5───PhXZ(a=0.804,x=0.333,z=-0.608)───iSwap───────PhXZ(a=-0.5,x=1,z=0)───iSwap───────PhXZ(a=0,x=0.5,z=-0.75)─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────M────────── │ │ │5: ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────PhXZ(a=1.0,x=0.25,z=0.5)─────────iSwap^0.5──────────────────────────iSwap^0.5───PhXZ(a=0.804,x=0.333,z=-0.608)───iSwap───────PhXZ(a=-0.5,x=1,z=0)───iSwap───────PhXZ(a=0,x=0.5,z=-0.75)─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────M────────── │ │ │6: ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────PhXZ(a=1.0,x=0.25,z=0.5)─────────iSwap^0.5──────────────────────────iSwap^0.5───PhXZ(a=0.804,x=0.333,z=-0.608)───iSwap───────PhXZ(a=-0.5,x=1,z=0)───iSwap───────PhXZ(a=0,x=0.5,z=-0.75)─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────M────────── │ │ │7: ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────PhXZ(a=1.0,x=0.25,z=0.5)─────────iSwap^0.5──────────────────────────iSwap^0.5───PhXZ(a=0.804,x=0.333,z=-0.608)───iSwap───────PhXZ(a=-0.5,x=1,z=0)───iSwap───────PhXZ(a=0,x=0.5,z=-0.75)─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────M────────── │ │ │8: ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────PhXZ(a=1.0,x=0.25,z=0.5)─────────iSwap^0.5──────────────────────────iSwap^0.5───PhXZ(a=0.804,x=0.333,z=-0.608)───iSwap───────PhXZ(a=-0.5,x=1,z=0)───iSwap───────PhXZ(a=0,x=0.5,z=-0.75)─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────M────────── │ │ │9: ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────PhXZ(a=1.0,x=0.25,z=0.5)─────────iSwap^0.5──────────────────────────iSwap^0.5───PhXZ(a=0.804,x=0.333,z=-0.608)───iSwap───────PhXZ(a=-0.5,x=1,z=0)───iSwap───────PhXZ(a=0,x=0.5,z=-0.75)─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────M────────── │ │ │10: ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────PhXZ(a=1.0,x=0.25,z=0.5)─────────iSwap^0.5──────────────────────────iSwap^0.5───PhXZ(a=0.804,x=0.333,z=-0.608)───iSwap───────PhXZ(a=-0.5,x=1,z=0)───iSwap───────PhXZ(a=0,x=0.5,z=-0.75)─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────M────────── │ │ │11: ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────PhXZ(a=1.0,x=0.25,z=0.5)─────────iSwap^0.5──────────────────────────iSwap^0.5───PhXZ(a=0.804,x=0.333,z=-0.608)───iSwap───────PhXZ(a=-0.5,x=1,z=0)───iSwap───────PhXZ(a=0,x=0.5,z=-0.75)─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────M────────── │ │ │12: ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────PhXZ(a=1.0,x=0.25,z=0.5)─────────iSwap^0.5──────────────────────────iSwap^0.5───PhXZ(a=0.804,x=0.333,z=-0.608)───iSwap───────PhXZ(a=-0.5,x=1,z=0)───iSwap───────PhXZ(a=0,x=0.5,z=-0.75)─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────M────────── │ │ │13: ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────PhXZ(a=1.0,x=0.25,z=0.5)─────────iSwap^0.5──────────────────────────iSwap^0.5───PhXZ(a=0.804,x=0.333,z=-0.608)───iSwap───────PhXZ(a=-0.5,x=1,z=0)───iSwap───────PhXZ(a=0,x=0.5,z=-0.75)─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────M────────── │ │ │14: ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────PhXZ(a=1.0,x=0.25,z=0.5)─────────iSwap^0.5──────────────────────────iSwap^0.5───PhXZ(a=0.804,x=0.333,z=-0.608)───iSwap───────PhXZ(a=-0.5,x=1,z=0)───iSwap───────PhXZ(a=0,x=0.5,z=-0.75)─────────────────────────────────────────────────────────────────────────────────────M────────── │ │ │15: ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────PhXZ(a=1.0,x=0.25,z=0.5)─────────iSwap^0.5──────────────────────────iSwap^0.5───PhXZ(a=0.804,x=0.333,z=-0.608)───iSwap───────PhXZ(a=-0.5,x=1,z=0)───iSwap───────PhXZ(a=0,x=0.5,z=-0.75)─────M────────── │ │ │16: ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────PhXZ(a=1.0,x=0.25,z=0.5)─────────iSwap^0.5──────────────────────────iSwap^0.5───PhXZ(a=0.5,x=0.75,z=-0.5)───M──────────

Choose qubits on the virtual device

Choose qubits on the device to execute your device ready circuit on. Look at the device map (as above) and choose a set of qubits that fit your circuit (eg a line or a block). The Rainbow and Weber devices have different topologies, some qubit maps may be possible on only one of these devices. As noted, the GHZ example circuit as constructed will fit on a 17 qubit chain of adjacent qubits on the device, so you only need to find this consecutive line of qubits. See Qubit Picking for more advice and methods for selecting qubits.

# Choose qubits on the virtual devicedevice_qubit_chain = [ cirq.GridQubit(5, 2), cirq.GridQubit(5, 3), cirq.GridQubit(4, 3), cirq.GridQubit(4, 2), cirq.GridQubit(4, 1), cirq.GridQubit(5, 1), cirq.GridQubit(6, 1), cirq.GridQubit(6, 2), cirq.GridQubit(6, 3), cirq.GridQubit(6, 4), cirq.GridQubit(6, 5), cirq.GridQubit(7, 5), cirq.GridQubit(8, 5), cirq.GridQubit(8, 4), cirq.GridQubit(8, 3), cirq.GridQubit(7, 3), cirq.GridQubit(7, 4),]# Layout:## q(4, 1)───q(4, 2)───q(4, 3)# │ │# │ │# q(5, 1) q(5, 2)───q(5, 3)# │# │# q(6, 1)───q(6, 2)───q(6, 3)───q(6, 4)───q(6, 5)# │# │# q(7, 3)───q(7, 4) q(7, 5)# │ │# │ │# q(8, 3)───q(8, 4)───q(8, 5)

Map the transformed circuit to the qubits you chose on the device

The transformed GHZ circuit still needs to be re-mapped to use the selected qubits. The transform_qubits function of cirq.Circuit does this automatically, returning a new transformed circuit when given a qubit mapping function.

Because the connectivity qubit chain in the GHZ circuit example follows the sequence of cirq.LineQubits in qubits, it suffices to zip the circuit's qubits together with the chosen device qubits, since both are connected chains of 17 qubits. The dictionary built from these paired qubits can then be turned into a simple lambda function for use with transform_qubits, as follows:

# Map the line of circuit qubits to the chosen line of device qubits.qubit_map = dict(zip(qubits, device_qubit_chain))# Then replace qubits in the circuit according to that map.device_ready_ghz_circuit = translated_ghz_circuit.transform_qubits(lambda q: qubit_map[q])print(device_ready_ghz_circuit)
(4, 1): ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────PhXZ(a=1.0,x=0.25,z=0.5)─────────iSwap──────────────────────────────iSwap───────PhXZ(a=0.804,x=0.333,z=-0.608)───iSwap───────PhXZ(a=-0.5,x=1,z=0)───iSwap───────PhXZ(a=0,x=0.5,z=-0.75)─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────M────────── │ │ │ │ │(4, 2): ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────PhXZ(a=1.0,x=0.25,z=0.5)─────────iSwap──────────────────────────────iSwap───────PhXZ(a=0.804,x=0.333,z=-0.608)───iSwap^0.5───PhXZ(a=-0.5,x=1,z=0)───iSwap^0.5───PhXZ(a=0,x=0.5,z=-0.75)──────────┼──────────────────────────────────┼───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────M────────── │ │ │ │ │(4, 3): ─────────────────────────────────────────────────────────────────────────────PhXZ(a=1.0,x=0.25,z=0.5)─────────iSwap──────────────────────────────iSwap───────PhXZ(a=0.804,x=0.333,z=-0.608)───iSwap^0.5───PhXZ(a=-0.5,x=1,z=0)───iSwap^0.5───PhXZ(a=0,x=0.5,z=-0.75)──────────────────────────────────────────────────────────────────────────────────────────┼──────────────────────────────────┼───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────M────────── │ │ │ │ │(5, 1): ──────────────────────────────────────────────────────────────────────────────────────────────────────────────┼──────────────────────────────────┼───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────PhXZ(a=1.0,x=0.25,z=0.5)─────────iSwap^0.5──────────────────────────iSwap^0.5───PhXZ(a=0.804,x=0.333,z=-0.608)───iSwap───────PhXZ(a=-0.5,x=1,z=0)───iSwap───────PhXZ(a=0,x=0.5,z=-0.75)─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────M────────── │ │ │ │ │(5, 2): ───PhXZ(a=0,x=0.75,z=0.5)─────iSwap───────PhXZ(a=-0.5,x=1,z=0)───iSwap───────PhXZ(a=0,x=0.5,z=-0.75)──────────┼──────────────────────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┼──────────────────────────────────┼───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────M('out')─── │ │ │ │ │ │ │(5, 3): ───PhXZ(a=1.0,x=0.25,z=0.5)───iSwap^0.5──────────────────────────iSwap^0.5───PhXZ(a=0.804,x=0.333,z=-0.608)───iSwap^0.5───PhXZ(a=-0.5,x=1,z=0)───iSwap^0.5───PhXZ(a=0,x=0.5,z=-0.75)──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┼──────────────────────────────────┼───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────M────────── │ │ │(6, 1): ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────PhXZ(a=1.0,x=0.25,z=0.5)─────────iSwap^0.5──────────────────────────iSwap^0.5───PhXZ(a=0.804,x=0.333,z=-0.608)───iSwap───────PhXZ(a=-0.5,x=1,z=0)───iSwap───────PhXZ(a=0,x=0.5,z=-0.75)─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────M────────── │ │ │(6, 2): ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────PhXZ(a=1.0,x=0.25,z=0.5)─────────iSwap^0.5──────────────────────────iSwap^0.5───PhXZ(a=0.804,x=0.333,z=-0.608)───iSwap───────PhXZ(a=-0.5,x=1,z=0)───iSwap───────PhXZ(a=0,x=0.5,z=-0.75)─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────M────────── │ │ │(6, 3): ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────PhXZ(a=1.0,x=0.25,z=0.5)─────────iSwap^0.5──────────────────────────iSwap^0.5───PhXZ(a=0.804,x=0.333,z=-0.608)───iSwap───────PhXZ(a=-0.5,x=1,z=0)───iSwap───────PhXZ(a=0,x=0.5,z=-0.75)─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────M────────── │ │ │(6, 4): ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────PhXZ(a=1.0,x=0.25,z=0.5)─────────iSwap^0.5──────────────────────────iSwap^0.5───PhXZ(a=0.804,x=0.333,z=-0.608)───iSwap───────PhXZ(a=-0.5,x=1,z=0)───iSwap───────PhXZ(a=0,x=0.5,z=-0.75)─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────M────────── │ │ │(6, 5): ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────PhXZ(a=1.0,x=0.25,z=0.5)─────────iSwap^0.5──────────────────────────iSwap^0.5───PhXZ(a=0.804,x=0.333,z=-0.608)───iSwap───────PhXZ(a=-0.5,x=1,z=0)───iSwap───────PhXZ(a=0,x=0.5,z=-0.75)─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────M────────── │ │ │(7, 3): ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┼──────────────────────────────────┼───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────PhXZ(a=1.0,x=0.25,z=0.5)─────────iSwap──────────────────────────────iSwap───────PhXZ(a=0.804,x=0.333,z=-0.608)───iSwap───────PhXZ(a=-0.5,x=1,z=0)───iSwap───────PhXZ(a=0,x=0.5,z=-0.75)─────M────────── │ │ │ │ │ │ │(7, 4): ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┼──────────────────────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┼──────────────────────────────────┼───────────PhXZ(a=1.0,x=0.25,z=0.5)─────────iSwap^0.5──────────────────────────iSwap^0.5───PhXZ(a=0.5,x=0.75,z=-0.5)───M────────── │ │ │ │ │(7, 5): ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────PhXZ(a=1.0,x=0.25,z=0.5)─────────iSwap^0.5──────────────────────────iSwap^0.5───PhXZ(a=0.804,x=0.333,z=-0.608)───iSwap───────PhXZ(a=-0.5,x=1,z=0)───iSwap───────PhXZ(a=0,x=0.5,z=-0.75)──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┼──────────────────────────────────┼───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────M────────── │ │ │ │ │(8, 3): ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┼──────────────────────────────────┼───────────────────────────────────────────────────────────────────────────────────────────PhXZ(a=1.0,x=0.25,z=0.5)─────────iSwap──────────────────────────────iSwap───────PhXZ(a=0.804,x=0.333,z=-0.608)───iSwap^0.5───PhXZ(a=-0.5,x=1,z=0)───iSwap^0.5───PhXZ(a=0,x=0.5,z=-0.75)─────────────────────────────────────────────────────────────────────────────────────M────────── │ │ │ │ │(8, 4): ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┼──────────────────────────────────┼───────────PhXZ(a=1.0,x=0.25,z=0.5)─────────iSwap──────────────────────────────iSwap───────PhXZ(a=0.804,x=0.333,z=-0.608)───iSwap^0.5───PhXZ(a=-0.5,x=1,z=0)───iSwap^0.5───PhXZ(a=0,x=0.5,z=-0.75)─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────M────────── │ │ │ │ │(8, 5): ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────PhXZ(a=1.0,x=0.25,z=0.5)─────────iSwap^0.5──────────────────────────iSwap^0.5───PhXZ(a=0.804,x=0.333,z=-0.608)───iSwap^0.5───PhXZ(a=-0.5,x=1,z=0)───iSwap^0.5───PhXZ(a=0,x=0.5,z=-0.75)─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────M──────────

Running other circuits

In principle, you can run any custom Circuit with a quantum virtual machine, but realistically there are some constraints. As mentioned, the circuits need to be mappable to the device. Additionally, the number of qubits that are simulatable depends highly on the hardware available to you and how long you are able to run your simulation. As the QVM is instantiated as above, with a qsimcirq.QSimSimulator, it only uses the default, local qsim simulator. However, qsim has plenty of support for being run in a Google Cloud instance, with a variable amount of compute power. In order to get the most capacity possible for qsim, use Multinode Simulation.

For an example of building and running a much larger circuit, see the QVM Stabilizer Example tutorial.

Execute Your Circuit on the Quantum Virtual Machine

You can run the now device-ready circuit, as you would with any other cirq.Engine instance, by getting a sampler from it and using the run function on the circuits. Your choice of repetitions is intrinsically related to the accuracy of your simulated results. We recommend 3000 repetitions for trial runs, and 10,000 repetitions for accuracy-critical runs, but you can stick to one to ten repetitions when testing a code pipeline. You can read more about this in this paper.

# @title Execute your device ready circuit on the Quantum Virtual Machinecircuit = device_ready_ghz_circuitrepetitions = 3000start = time.time()results = sim_engine.get_sampler(processor_id).run(circuit, repetitions=repetitions)elapsed = time.time() - startprint('Circuit successfully executed on your quantum virtual machine', processor_id)print(f'QVM runtime: {elapsed:.04g}s ({repetitions} repetitions)')print('You can now print or plot "results"')
Circuit successfully executed on your quantum virtual machine weberQVM runtime: 35.24s (3000 repetitions)You can now print or plot "results"

Visualize Output

Finally, you can use a state histogram to plot the measured results.

ax = cirq.plot_state_histogram(results.histogram(key='out'))ax.get_xaxis().set_ticks([])plt.gcf().set_size_inches(10, 4)plt.show(ax)

QVM Basic Example | Cirq | Google Quantum AI (7)

The leftmost and rightmost bars correspond to \(|00..0\rangle\) and \(|11..1\rangle\), respectively, which matches expectation for a GHZ state. Natural \(|1\rangle → |0\rangle\) decay causes \(|11..1\rangle\) to be much less common than \(|00..0\rangle\), and other states also appear due to the various error mechanisms in the hardware that are mimicked by the simulated noise model. Learn more about these errors here.

Except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 4.0 License, and code samples are licensed under the Apache 2.0 License. For details, see the Google Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.

Last updated 2024-04-26 UTC.

QVM Basic Example  |  Cirq  |  Google Quantum AI (2024)
Top Articles
Douglas County 4H Celebrates Success
4-H – Douglas County Extension
WALB Locker Room Report Week 5 2024
Erika Kullberg Wikipedia
Phone Number For Walmart Automotive Department
Kobold Beast Tribe Guide and Rewards
Bucks County Job Requisitions
Autobell Car Wash Hickory Reviews
Miles City Montana Craigslist
Crazybowie_15 tit*
Seth Juszkiewicz Obituary
Lantana Blocc Compton Crips
Edgar And Herschel Trivia Questions
Craigslist/Phx
Https://Gw.mybeacon.its.state.nc.us/App
‘Accused: Guilty Or Innocent?’: A&E Delivering Up-Close Look At Lives Of Those Accused Of Brutal Crimes
Breakroom Bw
Job Shop Hearthside Schedule
The Witcher 3 Wild Hunt: Map of important locations M19
7440 Dean Martin Dr Suite 204 Directions
9044906381
Bcbs Prefix List Phone Numbers
Arre St Wv Srj
How to Create Your Very Own Crossword Puzzle
Traveling Merchants Tack Diablo 4
Walgreens Alma School And Dynamite
Hdmovie2 Sbs
Ivegore Machete Mutolation
Teen Vogue Video Series
What Is The Lineup For Nascar Race Today
Craigs List Jonesboro Ar
Synergy Grand Rapids Public Schools
Top 20 scariest Roblox games
Wku Lpn To Rn
Robotization Deviantart
Top Songs On Octane 2022
Ryujinx Firmware 15
Sam's Club Gas Price Hilliard
The Wichita Beacon from Wichita, Kansas
Garrison Blacksmith's Bench
Marie Peppers Chronic Care Management
Instafeet Login
Ramsey County Recordease
Jetblue 1919
Achieving and Maintaining 10% Body Fat
The best specialist spirits store | Spirituosengalerie Stuttgart
Ds Cuts Saugus
Free Crossword Puzzles | BestCrosswords.com
Citizens Bank Park - Clio
Maplestar Kemono
Diamond Desires Nyc
Renfield Showtimes Near Regal The Loop & Rpx
Latest Posts
Article information

Author: Gov. Deandrea McKenzie

Last Updated:

Views: 6618

Rating: 4.6 / 5 (46 voted)

Reviews: 93% of readers found this page helpful

Author information

Name: Gov. Deandrea McKenzie

Birthday: 2001-01-17

Address: Suite 769 2454 Marsha Coves, Debbieton, MS 95002

Phone: +813077629322

Job: Real-Estate Executive

Hobby: Archery, Metal detecting, Kitesurfing, Genealogy, Kitesurfing, Calligraphy, Roller skating

Introduction: My name is Gov. Deandrea McKenzie, I am a spotless, clean, glamorous, sparkling, adventurous, nice, brainy person who loves writing and wants to share my knowledge and understanding with you.