Quil

Fonte: testwiki
Saltar para a navegação Saltar para a pesquisa

Quil é uma arquitetura de conjunto de instruções quântica que introduziu pela primeira vez um modelo de memória quântica/clássica compartilhada. Foi introduzido por Robert Smith, Michael Curtis e William Zeng em A Practical Quantum Instruction Set Architecture.[1] Muitos algoritmo quânticos (incluindo teleporte quântico, correção de erro quântico, simulação,[2][3] e algoritmos de otimização[4]) requer uma arquitetura de memória compartilhada. Quil está sendo desenvolvido para os processadores quânticos supercondutores desenvolvidos pela Rigetti Computing através da API de programação quântica Forest na nuvem.[5][6] Uma biblioteca Python chamada pyQuil foi introduzida para desenvolver programas Quil com construções de nível mais alto. Um backend Quil também é suportado por outros ambientes de programação quântica.[7][8]

Máquina abstrata quântica subjacente

No artigo apresentado por Smith, Curtis e Zeng, Quil especifica o conjunto de instruções para uma Máquina Abstrata Quântica (MAQ), semelhante a uma máquina de Turing, porém mais prática para realizar tarefas "do mundo real".[1] O estado da MAQ pode ser representado como uma 6-tupla (|Ψ,C,G,G,P,κ) onde:

  • |Ψ é o estado (quântico) de um número fixo, porém arbitrário de qubits Nq indexados usando uma indexação de base zero.
  • C é uma memória clássica de um número Nc de bits clássicos indexados usando uma indexação de base zero.
  • G é uma lista fixa, porém arbitrária, de portas estáticas (portas quânticas que não dependem de parâmetros, como a porta Hadamard.)
  • G é uma lista fixa, porém arbitrária, de portas paramétricas (portas que dependem de um número de parâmetros complexos, como a porta de deslocamento de fase que requer um parâmetro de ângulo para ser completamente definida.)
  • P é uma sequência de instruções Quil a serem executadas, representando o programa. O comprimento de P é denotado por |P|.
  • κ é um contador de programa inteiro apontando para a próxima instrução a ser executada. κ sempre começa em 0 (apontando para a 0th instrução) e termina em |P| indicando a parada do programa (observe que a última instrução tem o índice |P|1.) O contador de programa é incrementado após cada instrução, exceto por instruções especiais de fluxo de controle (saltos condicionais e incondicionais saltos, e a instrução especial HALT que interrompe o programa definindo κ para |P|.

A semântica da MAQ é definida usando produto tensorial de espaços de Hilbert e os mapa linear entre eles.[1]

Recursos

Quil tem suporte para definir portas possivelmente parametrizadas em forma de matriz (a linguagem não inclui uma maneira de verificar se as matrizes são unitárias, o que é uma condição necessária para a realizabilidade física da porta definida) e sua aplicação em qubits. A linguagem também suporta definições semelhantes a macro de possivelmente circuitos quânticos parametrizados e sua expansão, medição de qubits e registro do resultado na memória clássica, sincronização com computadores clássicos com a instrução WAIT que pausa a execução de um programa Quil até que um programa clássico tenha terminado sua execução, ramificação condicional e incondicional, suporte de diretiva, bem como inclusão de arquivos para uso como bibliotecas (um conjunto padrão de portas é fornecido como uma das bibliotecas.)

Rigetti QVM

A Rigetti Computing desenvolveu uma Máquina Virtual Quântica em Common Lisp que simula a Máquina Abstrata Quântica definida em um computador clássico e é capaz de analisar e executar programas Quil com possibilidade de execução remota via HTTP.[9]

Exemplo

O exemplo a seguir demonstra o fluxo de controle clássico necessário para fazer a teletransportação quântica do qubit no registro do processador 2 para o registro 1:[10][11]

# Declarar memória clássica
DECLARE ro BIT[2]
# Criar par de Bell
H 0
CNOT 0 1
# Teleportar
CNOT 2 0
H 2
MEASURE 2 ro[0]
MEASURE 0 ro[1]
# Comunicar medidas de forma clássica
JUMP-UNLESS @SKIP ro[1]
X 1
LABEL @SKIP
JUMP-UNLESS @END ro[0]
Z 1
LABEL @END

Exemplos das implementações da transformada de Fourier quântica e do solucionador quântico variacional são dados no artigo.

Predefinição:Referências