Portuguese, Brazilian
Idiomas
English
Japanese
German
Korean
Portuguese, Brazilian
French
  • Docs >
  • Estratégia de Desenvolvimento
Shortcuts

Estratégia de Desenvolvimento

Versionamento

O projeto do Qiskit é composto por vários elementos cada um executando diferentes funcionalidades. Cada um é útil de forma independente e pode ser usado por conta própria, mas por conveniência fornecemos este repositório e meta-pacote para fornecer um único ponto de entrada para instalar todos os elementos de uma só vez. Isso é para simplificar o processo de instalação e fornecer uma interface unificada para os usuários finais. No entanto, porque cada elemento Qiskit possui lançamentos e versões próprios alguns cuidados são necessários ao lidar com versões entre os diferentes repositórios. Este documento delineia as diretrizes para lidar com versões e releases tanto dos elementos Qiskit quanto do meta-pacote.

Para o resto deste guia, a nomenclatura de versionamento semântico padrão será usada: Maior.Menor.Correção para se referir aos diferentes componentes de um número de versão. Por exemplo, se o número da versão era 0.7.1, então a versão maior é 0, a versão menor 7 e a versão de correção é 1.

Versão do Meta-Pacote

A versão meta-pacote Qiskit é um valor independente que é determinado pelo release de cada um dos elementos que estão sendo rastreados. Cada vez que liberamos um release para um componente rastreado (ou adiciamos um elemento) os requisitos de meta-pacote, e versão precisarão ser atualizados e um novo release publicado. O momento deve ser coordenado com a liberação de elementos para garantir que os releases de meta-pacote se encaixem com os releases dos elementos.

Adicionando Novos Elementos

Quando um novo elemento Qiskit está sendo adicionado aos requisitos do meta-pacote, precisamos aumentar a versão Menor do meta-pacote.

Por exemplo, se o meta-pacote está rastreando 2 elementos qiskit-aer e qiskit-terra e sua versão é 0.7.4. Em seguida, lançamos um novo elemento qiskit-ignis que pretendiamos ter incluído também no meta-pacote. Quando adicionamos o novo elemento ao meta-pacote, aumentamos a versão para 0.8.0.

Incrementos da Versão de Correção

Quando qualquer elemento Qiskit que já está sendo rastreado pelo meta-pacote libera uma versão de correção para corrigir bugs em um lançamento precisamos também aumentar o requisito no setup.py e, em seguida, incrementar a versão de correção do meta-pacote.

Por exemplo, se o meta-pacote está monitorando 3 elementos qiskit-terra==0.8.1, qiskit-aer==0.2.1, e qiskit-ignis==0.1.4 com a versão atual 0.9.6. Quando o qiskit-terra lançar uma nova versão de correção para corrigir um bug 0.8.2 o meta-pacote também precisará aumentar sua versão de correção e lançamento, tornando-se 0.9.7.

Adicionalmente, há ocasionalmente outros bugs no próprio meta-pacote que precisam ser corrigidos através da liberação de novos releases. Quando esses erros forem encontrados, devemos aumentar a versão de correção para diferenciá-la do release quebrado. Não delete o release quebrado ou quaisquer releases antigos do pypi em qualquer situação, em vez disso basta aumentar a versão de correção e fazer o upload de um novo release.

Incrementos da Versão de Menor

Além de adicionar um novo elemento ao meta-pacote a versão menor do meta-pacote também deve ser aumentada sempre que uma versão menor for aumentada em um elemento rastreado.

Por exemplo, se o meta-pacote está rastreando 2 elementos qiskit-terra==0.7.0 e qiskit-aer==0.1.1 e a versão atual é 0.7.5. Quando o elemento qiskit-aer libera 0.2.0 então precisamos aumentar a versão do meta-pacote para ser 0.8.0 para corresponder à nova versão.

Incrementos da Versão de Maior

A versão maior é diferente das outras componentes de números de versão. Ao contrário das outras componentes de números de versão, que são atualizados em sincronia com cada elemento rastreado, a versão maior só é aumentada quando todas as versões reastreadas são incrementadas (pelo menos antes de 1.0.0). No momento, todos os elementos ainda têm um componente de número de versão maior de 0 e até que cada elemento rastreado no meta-repositório esteja marcado como estável ao subir para a versão principal para ser >=1 a versão do meta-pacote não deve aumentar a versão maior.

O comportamento do rastreamento da componente de número da versão maior após todos os elementos estarem em >=1.0.0 ainda não foi decidido.

Rastreamento do Requisito do Elemento Qiskit

Embora não esteja estritamente relacionado com o meta-pacote e com o versionamento do Qiskit, como rastreamos as versões do elemento na lista de requisitos do meta-pacote é importante. Cada elemento listado no setup.py deve ser fixado a uma única versão. Isso significa que cada versão do Qiskit só deve instalar uma única versão para cada elemento rastreado. Por exemplo, a lista de requisitos em qualquer ponto deve parecer com:

requirements = [
    "qiskit_terra==0.7.0",
    "qiskit-aer==0.1.1",
]

Isto serve para ajudar na depuração, mas também para tornar o rastreamento das versões entre múltiplos elementos mais transparente.

Vale ressaltar também que a ordem na qual instalamos os elementos é criticamente importante também. pip não tem um resolvedor de dependências real o que significa que a ordem da instalação importa. Portanto, se existem versões de requisitos sobrepostos entre elementos ou dependências entre elementos precisamos garantir que a ordem na lista de requisitos instale tudo como esperado. Se a ordem precisa ser alterada para alguma incompatibilidade no tempo de instalação ela deve ser notada claramente.

Extensões da Comunidade

O Qiskit foi projetado com modularidade em mente. Ele é extensível de muitas maneiras diferentes; na página, destacamos as maneiras pelas quais a comunidade do Qiskit se engajou com o Qiskit e desenvolveu extensões e pacotes em cima dele.

Provedores

O provedor base do Qiskit é uma entidade que fornece acesso a um grupo de diferentes backends (por exemplo, backends disponíveis através do IBM Quantum). Ele interage com aqueles backends para fazer muitas coisas: descobrir quais estão disponíveis, recuperar uma instância de um backend particular, obter propriedades e configurações do backend, e manipular a execução e o trabalho com tarefas (jobs).

Provedores adicionais

  • Simulador quântico baseado em diagramas de decisão

    - Organization: Johannes Kepler University, Linz, Austria (Alwin Zulehner and Robert Wille)
    - Description: A local provider which allows Qiskit to use decision diagram-based quantum simulation
    - Qiskit Version: 0.7
  • Quantum Inspire

    - Organization: QuTech-Delft
    - Description: A provider for the Quantum Inspire backend
    - Qiskit Version: 0.7
    - More info: Medium Blog and GitHub.

Transpilador

Otimização de circuitos está no coração de tornar a computação quântica viável em hardware real. Um componente central do Qiskit é o transpilador, que é um framework para manipulação de circuitos quânticos de acordo com certas transformações (conhecidas como passes do transpilador). O transpilador possibilita que os usuários criem conjuntos personalizados de passes, orquestrados por um gerenciador de passes, para transformar o circuito de acordo com as regras especificadas pelos passes. Além disso, a arquitetura do transpilador é projetada para modularidade e extensibilidade, permitindo que os usuários do Qiskit escrevam seus próprios passes, usem-os no gerenciador de passes e combinem-os com passes existentes. Dessa forma, a arquitetura do transpilador abre a porta para pesquisa em otimização agressiva de circuitos quânticos.

Passes adicionais

  • t|ket〉passe de otimização & roteamento

    - Organization: Cambridge Quantum Computing
    - Description: Transpiler pass for circuit optimization and mapping to backend using CQC’s t|ket〉compiler.
    - Qiskit Version: 0.7
    - More info: Tutorial Notebook and GitHub.

Ferramentas

Estender o Qiskit com novas ferramentas e funcionalidades é uma parte importante da construção de uma comunidade. Essas ferramentas podem ser novas visualizações, integração com o slack, extensões para Jupyter e muito mais.

Ferramentas Adicionais

  • Biblioteca OpenControls

    - Organization: Q-CTRL
    - Description: Library of quantum control pulses derived from the open literature.
    - Qiskit Version: 0.7
    - More info: GitHub and Q-CTRL website