Quantum Computing  

 

 

 

Programming

As we know, Quantuam Computer is still at the very early stages. Hardware structure and mechanism is completely different from the ordinary computers that we use everyday.

How can we program the Quantum computer ? If you read any articles about the history of the ordinary computers that we use today, you would have seen a picture some ladies or engineers sitting in front of switch box and physically connecting wires from a point to another point. And many years later, we used to program the computer by making holes in a paper (we call this as a punch card). Again many years later, finally we were able to do programming by typing in letters on the keyboard.

Do we have to do the quantum computer programming in the same way we did at the early states of electronic computer, i.e, cabling here and there ?

Fortunately it is not the case. We can take advantage of the development of current electronic computers. We do program quantum computer just as we do program the conventional computer, for example python programming.

For now (Dec 2023), every quantum computer manufacturer provide their own software development kit(SDK) for their own hardware. Following tables lists some of the examples for various Quanum hardware and SDK.

Provider

Frameworks / Tools

Description

IBM

Qiskit

Open-source Python framework with simulators and integrations with IBM quantum systems

IBM

Quantum Composer

Visual circuit composer tool provided as part of IBM Quantum Lab

Amazon Braket

Braket SDK

Python-based SDK to create quantum algorithms and submit them to AWS quantum devices

Microsoft

Quantum Development Kit

Language, libraries, and simulators for creating quantum programs using Q# and Python

Rigetti

Forest SDK

SDK providing access to Rigettis quantum processors and cloud platform

D-Wave

Leap

Cloud-based platform to access D-Wave quantum annealing systems for hybrid algorithms

Google

Cirq

Open-source Python framework to create, run, and optimize quantum programs and circuits

IonQ

IonQ SDK

Tools for accessing IonQ's trapped ion quantum computers

Open Source

PennyLane

Framework for optimization and machine learning using NISQ devices

Open Source

OpenFermion

Tools for quantum simulation of fermionic systems for quantum chemistry

Open Source

ProjectQ

Open source software framework for quantum computing started at ETH Zurich

NOTE :Is there any common language that works for every system, like QASM ?

    QASM (Quantum Assembly Language) is designed to be a hardware-agnostic language for writing quantum algorithms that can then be executed on multiple quantum computer architectures. So in that sense, it aims to serve as a "common form of language" for quantum computing.

    However, most quantum computing platforms today have their own custom languages, frameworks, and toolkits designed specifically for their hardware architecture. Support for QASM across different quantum hardware varies:

    • IBM's quantum computers support OpenQASM (an open standard version of QASM) natively. QASM programs can be readily run on IBM's systems.
    • Rigetti Computing uses Quil, their own custom language, but their compilers can translate QASM to target their quantum processing units.
    • Amazon Braket currently does not have direct support for running QASM programs, but they plan to add this capability.
    • D-Wave annealers implement a completely different quantum computing model compared to gate-based systems, hence QASM is not directly applicable.

    So while QASM support exists in many gate-based systems, and serves as a common intermediate language, most practitioners today use the proprietary SDKs, tools and DSLs provided the quantum hardware vendors directly. Initiatives like OpenQuantumCompiler aim to improve interoperability across platforms.

    I would say QASM is not yet a "write once run everywhere" solution for quantum, but it serves as a hardware-agnostic way to express quantum algorithms. The tooling around directly executing QASM on multiple platforms needs to mature more over time.

Which ones are open to public ?

Provider

Tool/SDK

Hardware Access

Software SDK Access

IBM

Qiskit

Limited via credits and trials

Open source SDK

Rigetti

Forest SDK

Restricted

Tools open source

Amazon Braket

Braket SDK

Restricted

Closed source SDK

IonQ

IonQ SDK

Restricted

Closed source SDK

Microsoft

Quantum Development Kit

Simulators only

Open source QDK

D-Wave

Leap

Limited trial access

Proprietary but available

Google

Cirq

Simulators only

Open source Cirq SDK

NOTE :What it mean by Closed Source SDK and Open Source SDK is

  • Closed Source :
    • The SDK tools and libraries provided by the vendor are proprietary and closed source. The code cannot be inspected or modified since it is not open sourced.
    • However, the SDKs are still made available and accessible for users to install and utilize for development.
    • You typically sign up for an account to get API keys and credentials to download and use the closed source SDKs.
    • So "closed source" refers to the licensing and visibility into the code, but does not prevent access or utilization of the SDKs.
  • Open Source SDK:
    • The SDK tools, libraries and samples are publicly visible source code that can be inspected, modified and redistributed.

IBM Quantum Composer:

  • Description: The IBM Quantum Composer is an intuitive, graphical quantum programming tool for building and visualizing quantum circuits.
  • Languages: It is accessible via a web interface, making it language-independent.
  • Features: The Quantum Composer allows users to create quantum circuits using a drag-and-drop interface, making it easier to conceptualize and design quantum algorithms. It also provides the ability to run these circuits on IBM's quantum simulators and real quantum computers available through the IBM Quantum Experience.
  • Usefulness: It's particularly useful for beginners and those who prefer a more visual approach to quantum circuit design, as well as for educational purposes to demonstrate quantum concepts.

IBM Qiskit:

  • Description: Qiskit is an open-source SDK for working with quantum computers at the level of pulses, circuits, and algorithms.
  • Languages: It's primarily used with Python.
  • Features: Qiskit provides tools for creating quantum programs and running them on real quantum machines and simulators. It also has extensive documentation and a supportive community.

Microsoft Quantum Development Kit (QDK):

  • Description: The QDK includes the Q# programming language, a simulator, and resource estimators.
  • Languages: Q# is a language dedicated to quantum computing, and it can be used with classical languages like C# and Python.
  • Features: It offers tools for writing, testing, and debugging quantum algorithms.

Google Cirq:

  • Description: Cirq is an open-source framework for Noisy Intermediate Scale Quantum (NISQ) computers.
  • Languages: It is used with Python.
  • Features: Cirq focuses on noisy, near-term quantum processors. It allows users to write quantum algorithms for specific quantum processors.

Rigetti Forest:

  • Description: Forest is a suite of tools provided by Rigetti Computing, which includes the Quil programming language, a simulator, and other tools.
  • Languages: Quil is a quantum instruction language, and PyQuil is a Python library for quantum programming using Quil.
  • Features: It enables quantum algorithm design and offers access to quantum processors.

D-Wave Systems:

  • Description: D-Wave offers tools tailored for their quantum annealing technology.
  • Languages: It includes Python-based tools.
  • Features: These tools are specialized for optimization problems and are best suited for specific types of quantum applications.

ProjectQ:

  • Description: An open-source software framework for quantum computing.
  • Languages: It uses Python.
  • Features: It allows users to implement and run quantum algorithms on any backend, including quantum simulators and actual quantum hardware.

Reference