LogoLogo
  • Welcome to Quantum Cloud Services
  • Getting Started
    • Set up your environment
      • JupyterLab IDE
      • Install Locally
        • Quil SDK Docker Image
    • Quil SDK Overview
    • Running your first Quantum Program
  • Guides
    • Quil
      • What is Quil?
      • Language Support
      • Dynamic Control Flow
      • Customizing Program Readout
    • QPU vs. Simulator (QVM)
    • How to Use Rigetti QPUs
    • Access a QPU
      • QPU Reservations
      • On-Demand Access
      • QCS QPU Gateway
    • QCS Group Accounts
    • Interactive Tutorials
    • How Programs Are Built & Run
      • Execution and Request timeouts
    • The Lifecycle of a Program
    • The Rigetti QCS API
    • Using the QCS CLI
      • Using the Legacy QCS CLI
    • QCS Credentials
    • Benchmarking and Fidelity
  • Troubleshooting
    • Gathering Diagnostics
    • Report an Issue
  • Glossary
  • FAQ
  • References
    • pyQuil Reference
    • QCS API Specification
    • QCS CLI Reference
    • QCS Client Configuration
    • Quil / Quil-T Specification
    • quilc Reference
    • quil-rs Reference
    • QVM Reference
    • Rigetti Module for Cirq
    • Rigetti Provider for Qiskit
Powered by GitBook
On this page
  • Quil-T
  • Calibrations
  • Other Languages

Was this helpful?

  1. Guides
  2. Quil

What is Quil?

PreviousQuilNextLanguage Support

Last updated 6 months ago

Was this helpful?

— which stands for Quantum Instruction Language — is the language in which you'll write programs for execution on Rigetti QPUs. Quil is is an open standard governed by the .

Quil is most easily written and executed by using the .

Quil-T

is an extension of Quil which supports analog, pulse-level control. Quil-T is natively supported by Rigetti QPUs.

Calibrations

Calibrations are a description of how a high-level Quil (or Quil-T) program should be transpiled into a series of analog pulse instructions. In particular, the calibrations that are provided by Rigetti are derived by a careful process of tuning various parameters to maximize the execution quality for the target QPU.

Within QCS, all Quil programs (even those not using Quil-T syntax) are transpiled to a Quil-T pulse program as a step in the assembly process. When you compile your Quil program for execution on a QPU, the most current calibrations available for the QPU will be used to calibrate your program. You can override these calibrations by supplying calibrations explicitly within your program in the form of DEFFRAME, DEFWAVEFORM, and DEFCAL blocks. This support for user-calibrated programs gives you more precise control over how your programs are executed on our QPUs.

Frame definitions (DEFFRAME blocks) may not be modified within programs, but must be included verbatim as provided in the Rigetti calibrations.

Inspection using the QCS CLI

If you'd like to inspect Quil-T calibrations for a QPU, you can use the QCS API's endpoint. To call this endpoint using the , use the command. For instance, to get calibrations for Aspen-11, run:

qcs api get-quilt-calibrations Aspen-11

If you have installed, you can get more human-readable output with:

qcs api get-quilt-calibrations Aspen-11 | jq -r '.quilt'

Inspection using pyQuil

To inspect Quil-T calibrations for a QPU using , you can use the calibration_program property on QPUCompiler. For instance, to get calibrations for Aspen-11, write:

from pyquil import get_qc

qc = get_qc("Aspen-11")

print(qc.compiler.calibration_program)

Other Languages

OpenQASM v2 may be transpiled to Quil using the .

Quil compiler
Quil
Quil-Lang organization
Quil-T
get-quilt-calibrations
QCS CLI
jq
pyQuil
Quil SDK
qcs api