Skip to main content

Qubit Toaster backend for Qiskit: run Qiskit code on Quantastica "Qubit Toaster" simulator

Project description

Qubit Toaster backend for Qiskit

Allows running Qiskit code on Qubit Toaster - a high performance quantum circuit simulator.


pip install quantastica-qiskit-toaster


You need to install and run Qubit Toaster first. By default, this library expects Toaster running in server mode.

Now import ToasterBackend into your Qiskit code:

from quantastica.qiskit_toaster import ToasterBackend

Replace Aer.get_backend with ToasterBackend.get_backend.


from qiskit import QuantumRegister, ClassicalRegister
from qiskit import QuantumCircuit, execute

# Instead:
#from qiskit import Aer

# Do:
from quantastica.qiskit_toaster import ToasterBackend

qc = QuantumCircuit()

q = QuantumRegister(2, "q")
c = ClassicalRegister(2, "c")


qc.h(q[0])[0], q[1])

qc.measure(q[0], c[0])
qc.measure(q[1], c[1])

# Instead:
#backend = Aer.get_backend("qasm_simulator")

# Use:
backend = ToasterBackend.get_backend("qasm_simulator")

# OR (to use statevector_simulator backend):
# backend = ToasterBackend.get_backend("statevector_simulator")

# OR (to specify custom toaster_host and toaster_port params
# default values are and 8001 respectively):
# backend = ToasterBackend.get_backend(
#            "statevector_simulator",
#            toaster_host="",
#            toaster_port=8888,
#        )

# OR (to use it directly via CLI instead of HTTP API)
# backend = ToasterBackend.get_backend(
#            "qasm_simulator",
#            use_cli=True)

job = execute(qc, backend=backend)

# To speed things up a little bit qiskit's optimization can be disabled
# by setting optimization_level to 0 like following:
#   job = execute(qc, backend=backend, optimization_level=0)
# To pass different optimization level to qubit-toaster use backend_options:
#   options = { "toaster_optimization": 3 }
#   job = execute(qc, backend=backend, backend_options=options)

job_result = job.result()




ToasterBackend.get_backend( backend_name = None,


  • backend_name can be:
    • qasm_simulator only counts will be returned (default)
    • statevector_simulator both counts and state vector will be returned
    • If backend name is not provided then it will act as qasm_simulator
  • toaster_host - ip address of machine running qubit-toaster simulator (default:
  • toaster_port - port that qubit-toaster is listening on (default: 8001)
  • use_cli - if this param is set to True the qubit-toaster will be used directly (by invoking it as executable) instead via HTTP API. For this to work the qubit-toaster binary must be available somewhere in system PATH

Toaster's backend_options

  • toaster_optimization - integer from 0 to 7
    • 0 - automatic optimization
    • 1 - optimization is off
    • 2..7 - optimization is on. 7 is highest optimization level.

Running unit tests

First start qubit-toaster in HTTP API mode:

qubit-toaster -S

Running standard set of tests (excluding the slow ones):

python -m unittest -v

Running all tests (including the slow ones):

SLOW=1 python -m unittest -v

Specifying different toaster host/port:

TOASTER_HOST= TOASTER_PORT=8001  python -m unittest -v -f

Running tests by using CLI interface instead of HTTP:

USE_CLI=1 python -m unittest -v -f

Find more goodies at

That's it. Enjoy! :)

Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

quantastica-qiskit-toaster-0.9.30.tar.gz (19.7 kB view hashes)

Uploaded Source

Built Distribution

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page