BT

Google Cirq: a Python Open Source Library for Quantum Computing

| by Sergio De Simone Follow 14 Followers on Jul 29, 2018. Estimated reading time: 2 minutes |

Cirq aims to make it easier to write, manipulate, and optimize quantum algorithms for noisy intermediate scale quantum (NISQ) computers. Cirq also enables the execution of those programs on a local simulator and is designed to support future quantum hardware and quantum cloud processors.

Noisy intermediate scale quantum computers will be the first quantum computers that will become available in the near future and that have been announced by several companies, including Microsoft, Google, IBM, Intel, and others. Comprised of 50–100 qubits, NISQ computers aim to allow researchers to demonstrate quantum supremacy, although their usefulness will be limited by quantum gates noise and thus by the efficiency of error correction algorithms that will be designed.

According to Google AI Quantum team engineers Alan Ho and Dave Bacon, one of the major hurdles when trying to program NISQ computers, beyond their intrinsic limitations, is getting the mapping between the algorithm and the hardware right, so qubits can be fully spent to solve the hardest part of the problem, as well as dealing with specific processor constraints, which could result in faulty computations when not addressed correctly. This is exactly where Cirq comes into play.

Cirq gives users fine tuned control over quantum circuits, specifying gate behavior using native gates, placing these gates appropriately on the device, and scheduling the timing of these gates within the constraints of the quantum hardware. Data structures are optimized for writing and compiling these quantum circuits to allow users to get the most out of NISQ architectures.

The following is minimalist "hello world" program for Cirq:

import cirq

# Pick a qubit.
qubit = cirq.GridQubit(0, 0)

# Create a circuit
circuit = cirq.Circuit.from_ops(
    cirq.X(qubit)**0.5,  # Square root of NOT.
    cirq.measure(qubit, key='m')  # Measurement.
)
print("Circuit:")
print(circuit)

# Simulate the circuit several times.
simulator = cirq.google.XmonSimulator()
result = simulator.run(circuit, repetitions=20)
print("Results:")
print(result)

As you can see, Cirq provides higher-level syntax to manage typical quantum computing abstractions, such as a circuit, logical operations on qubits, or measurements. As the code snippet above shows, Cirq provides out-of-the-box support for local simulation, but according to Google Cirq higher-level instructions can also be translated into quantum circuits for Google’s Bristlecone processor, and will be used to access its Cloud version when it becomes available.

To learn how to use Circ, Google is providing a more complete tutorial which guides you through the process of creating a quantum variational algorithm, along with Cirq’s official documentation. Additionally, Google is releasing OpenFermion-Cirq, a platform to build low-depth quantum algorithms for quantum chemistry problems by translating the details of a chemical problem, such as simulating properties of molecules and complex materials, to Cirq circuits.

Cirq is available on GitHub and can be installed on Linux, Mac OS X, and Windows using pip:

python -m pip install --upgrade pip
python -m pip install cirq

A number of early adopters of Cirq, which is still in beta, have been announced, including Zapata Computing, QC Ware, Quantum Benchmark, and others.

For readers keen to learn more about quantum computing, Holly Cummins recently published a three-part introductory series on InfoQ; "Cats, Qubits, and Teleportation: The Spooky World of Quantum Computation".

Rate this Article

Adoption Stage
Style

Hello stranger!

You need to Register an InfoQ account or or login to post comments. But there's so much more behind being registered.

Get the most out of the InfoQ experience.

Tell us what you think

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

Email me replies to any of my messages in this thread
Community comments

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

Email me replies to any of my messages in this thread

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

Email me replies to any of my messages in this thread

Discuss

Login to InfoQ to interact with what matters most to you.


Recover your password...

Follow

Follow your favorite topics and editors

Quick overview of most important highlights in the industry and on the site.

Like

More signal, less noise

Build your own feed by choosing topics you want to read about and editors you want to hear from.

Notifications

Stay up-to-date

Set up your notifications and don't miss out on content that matters to you

BT