Notas de versão do Qiskit 0.36
0.36.2
Terra 0.20.2
Prelúdio
O Qiskit Terra 0.20.2 é uma versão de correção de bugs, que aborda alguns problemas menores identificados desde a última versão do patch.
Correções de bugs
-
Foi corrigido um problema com classes de back-end falsas baseadas em
BackendV2-com base em classes de back-end falsas do móduloqiskit.providers.fake_provider, comoFakeMontrealV2, em que os valores dedtmedte o atributo associadoTarget.dtnão eram convertidos corretamente em segundos. Isso causaria problemas ao usar esses back-ends falsos com agendamento. Consulte #8018. -
marginal_counts()agora será bem-sucedido quando solicitado a marginalizar a memória com um parâmetroindicescontendo elementos diferentes de zero. Anteriormente, os disparos cuja representação do resultado hexadecimal era suficientemente pequena podiam gerar umValueError. Consulte #8044. -
O exportador do OpenQASM 3 (
qiskit.qasm3) agora produzirá as declaraçõesinputououtputantes das declarações de gate. Isso é mais consistente com a gramática ANTLR de referência atual da equipe do OpenQASM 3. Consulte #7964. -
Foi corrigido um erro na passagem do
RZXCalibrationBuilderem que a amplitude do pulso de ressonância cruzada dimensionada podia parecer parametrizada mesmo após a atribuição. Isso pode fazer com que as ferramentas de visualização de pulso usem o formato parametrizado em vez do formato numérico esperado. Consulte #8031. -
Foi corrigido um problema com a função
transpile()quando executada com um backend baseado emBackendV2-e definindo o argumento da palavra-chavescheduling_method. Anteriormente, a função não processava corretamente as durações padrão das instruções suportadas pelo backend, o que levava a um erro. -
Corrigido um bug na passagem do
RZXCalibrationBuilderque fazia com que os pulsos às vezes fossem construídos com durações incorretas. Consulte #7994. -
A passagem
SabreSwaptranspiler pass, usado emtranspile()quandorouting_method="sabre"estiver definido, não descartará mais esporadicamente as portas condicionadas classicamente e seus sucessores dos circuitos durante a fase de roteamento da transpilação. Consulte #8040. -
Statevectoragora permitirá a iteração direta por meio de seus valores (comofor coefficient in statevector) e informará corretamente seu comprimento emlen. Anteriormente, ele tentava acessar dados fora dos limites e gerava um erroQiskitError. Consulte #8039.
Aer 0.10.4
Nenhuma mudança
Ignis 0.7.1
Prelúdio
Esta é uma versão de correção de bugs que corrige principalmente um problema de empacotamento que estava fazendo com que o diretório docs/ , que contém os arquivos de origem usados para criar a documentação do qiskit-ignis, fosse incluído no pacote Python.
IBM 0.19.1
Nenhuma mudança
0.36.1
Terra 0.20.1
Prelúdio
O Qiskit Terra 0.20.1 é uma versão de correção de bugs que resolve problemas identificados na versão 0.20.0.
Problemas Conhecidos
-
Desserialização do QPY com a função
qpy.load()de um objetoUCPauliRotGatediretamente instanciado em um circuito falhará porque o argumento do eixo de rotação para a classe não está armazenado em um local padrão. Para contornar esse problema, você pode usar as subclasses:UCRXGate,UCRYGate, ouUCRZGate(com base no fato de você estar usando um eixo de rotação de"X","Y"ou"Z"respectivamente) que incorpora o eixo de rotação no construtor da classe e funcionará corretamente no QPY. -
Desde sua introdução original no Qiskit Terra 0.20,
XXPlusYYGatetem usado uma convenção de ângulo negativo em comparação com todas as outras portas de rotação. No Qiskit Terra 0.21, isso será corrigido para ficar consistente com os outros portões de rotação. Isso não afeta nenhum outro portão de rotação, nemXXMinusYYGate.
Correções de bugs
-
Fixo
Clifford,PaulieCNOTDihedralinicialização do operador de circuitos compatíveis que contêmDelayinstruções. Essas instruções são tratadas como identidades ao serem convertidas em operadores. -
Foi corrigido um problema em que a função
eval_observables()gerava um erro se o argumentoquantum_statefosse do tipoStateFn.eval_observablesagora suporta corretamente todos os tipos de entrada indicados por suas dicas de tipo. -
Foi corrigido um problema com a função de visualização
dag_drawer()e métodoDAGCircuit.draw()onde anteriormente a gaveta falhava ao tentar gerar uma visualização para um objetoDAGCircuitque continha um objetoQubitouClbitque não fazia parte de umQuantumRegisterouClassicalRegister. Corrigido #7915. -
Corrigida a validação de parâmetros para a classe
Drag. Anteriormente, ele não era sensível a grandes valores beta com sinais negativos, o que pode ter resultado em amostras de forma de onda com um valor máximo que excede o limite de amplitude de 1.0. -
A classe
QuantumInstanceusada por muitos algoritmos (comoVQE) estava codificando o valor de um sleep enquanto fazia um loop aguardando a atualização do status do trabalho. Agora, ele respeita o valor de suspensão configurado, conforme definido pelo atributowaitno inicializador doQuantumInstance. -
Foi corrigido um problema com a função
scheduleem que os chamadores que especificavam umlistde objetosQuantumCircuitcom uma única entrada recebiam incorretamente um único objetoScheduleem vez de umlist. -
Foi corrigido um problema com a função de visualização
plot_error_mapque a impedia de funcionar quando executada com um backend que tinha erro de leitura definido noBackendPropertiesou quando executada com umBackendV2backend. Corrigido #7879. -
Foi corrigido um bug que poderia resultar em tempo de execução exponencial e não término quando uma instância
Paulié fornecida ao métodoinit_observables(). -
Fixo
SabreSwape, por extensãotranspile()comoptimization_level=3, ocasionalmente reordenando as medições de forma inválida. Anteriormente, se duas medições escrevessem para o mesmo bit clássico,SabreSwappoderia (dependendo do mapa de acoplamento) reordená-las para produzir um circuito não equivalente. Esse comportamento foi estocástico, portanto, pode não ter aparecido de forma confiável. Corrigido #7950 -
A
SabreSwape, por extensão, a passagem do transpiladorSabreLayoutetranspile()emoptimization_level=3, agora tem um mecanismo de escape para garantir que ele nunca fique preso em um loop infinito. Determinadas entradas anteriormente poderiam, com muita má sorte, ficar presas em um mínimo local estável do espaço de busca e a passagem nunca mais avançaria. Agora, ele forçará uma série de trocas que permitirão que o roteamento continue se detectar que não houve progresso recentemente. Corrigido #7707. -
Foi corrigido um problema com a desserialização do QPY por meio da função
qpy.load()da funçãoUCRXGate,UCRYGate, eUCRZGateclasses. Anteriormente, um arquivo QPY que continha qualquer uma dessas portas apresentava erro ao tentar carregar o arquivo. Corrigido #7847.
Aer 0.10.4
Nenhuma mudança
Ignis 0.7.0
Nenhuma mudança
IBM 0.19.1
0.19.1
Correções de bugs
- PR #1129 atualiza o método
least_busy()para que ele não seja mais compatível com o BaseBackend como um tipo válido de entrada ou saída, uma vez que ele foi descontinuado há muito tempo no qiskit-terra e foi removido recentemente.
0.36.0
Terra 0.20.0
Nenhuma mudança
Aer 0.10.4
Notas da Atualização
- O Qiskit Aer não é mais compilado com otimizações inseguras de ponto flutuante. Embora a maioria dos efeitos devesse ter sido localizada no Qiskit Aer, alguns aspectos do manuseio subnormal podem ter vazado anteriormente para o código do usuário, pois a biblioteca definiu incorretamente o modo "flush to zero". Isso não acontecerá mais.
Correções de bugs
-
Corrigir o transpilador de bloqueio de cache para reconhecer que o superop está bloqueado no cache. Esta é a correção do problema 1479 <https://github.com/Qiskit/qiskit-aer/issues/1479>. Agora, a density_matrix com modelos de ruído pode ser paralelizada. Um novo teste, test_noise.TestNoise.test_kraus_gate_noise_on_QFT_cache_blocking, foi adicionado para verificar esse problema. Essa correção também inclui a correção do problema 1483 <https://github.com/Qiskit/qiskit-aer/issues/1483> descoberto com a inclusão de um novo caso de teste. Isso corrige a medida em blocos para o vetor de estado.
-
Corrige um bug em
NoiseModel.from_backend()que gerava um erro quando T2 valor maior que 2 * T1 era fornecido pelo backend. Após essa correção, o valor de T2 será truncado para até 2 * T1 e emitirá um aviso ao usuário se for truncado. O bug foi introduzido no número 1391 e, antes disso, o siteNoiseModel.from_backend()truncava o valor T2 até 2 * T1 silenciosamente.Consulte a edição 1464 para obter detalhes.
-
device=Thrust era muito lento para um pequeno número de qubits porque o OpenMP threading era sempre aplicado. Essa correção se aplica a OpenMP threads da mesma forma que device=CPU usando statevector_parallel_threshold.
-
O Qiskit Aer não definirá mais o modo de ponto flutuante como "flush to zero" quando carregado. Os usuários downstream podem ter visto anteriormente avisos do Numpy, como:
O valor da menor subnormal para o tipo <class ‘numpy.float64’> é zero.
Agora, eles não serão mais emitidos, e o tratamento de ponto flutuante estará correto.
-
Foi corrigido um possível problema com a execução de simulações em circuitos que têm o atributo
QuantumCircuit.metadatadefinido. O atributometadatapode ser qualquer dicionário python e, anteriormente, o qiskit-aer tentava serializar em JSON o conteúdo do atributo para processá-lo com o restante da entrada do circuito, mesmo que o conteúdo não fosse serializável em JSON. Isso não ocorre mais, pois o atributoQuantumCircuit.metadatanão é usado para executar a simulação, portanto, agora o conteúdo não é serializado e, em vez disso, é anexado diretamente ao objetoqiskit.result.Resultsem tentar serializar o conteúdo em JSON. Corrigido #1435
Ignis 0.7.0
Nenhuma mudança
IBM 0.19.0
Novos Recurso
- O pacote qiskit-ibmq-provider agora é compatível com os recursos do IBM Quantum LiveData. Esses recursos permitem que os usuários observem o comportamento em tempo real dos back-ends do IBM Quantum durante a execução de trabalhos. Especificamente, o provedor agora inclui uma nova guia no widget relacionado ao Jupyter do backend e oferece suporte à execução de trabalhos (por meio do método
qiskit.providers.ibmq.IBMQBackend.run()) com o parâmetro live_data_enabled=True nos backends IBM Quantum permitidos. - Agora você pode especificar um nível de registro diferente na palavra-chave
optionsao enviar um trabalho Qiskit Runtime com o métodoqiskit.providers.ibmq.runtime.IBMRuntimeService.run().
Notas da Atualização
- Python 3.6 o suporte foi abandonado, pois chegou ao fim da vida útil em dezembro de 2021.
- qiskit.providers.ibmq.random em relação ao serviço de números aleatórios, o serviço de números aleatórios que era usado para acessar o extrator de aleatoriedade do CQC não é mais suportado e foi removido.
Notas de descontinuação
- A palavra-chave
imageno métodoqiskit.providers.ibmq.runtime.IBMRuntimeService.run()está obsoleta. Em vez disso, você deve especificar a imagem a ser usada na palavra-chaveoptions.
Correções de bugs
- Corrige o problema #190. Agora, os sites
qiskit.providers.ibmq.runtime.RuntimeEncodereqiskit.providers.ibmq.runtime.RuntimeDecoderforam atualizados para lidar com instâncias da classe Instruction. - Corrige o problema nº 74, em que não era possível serializar ndarrays numpy com tipos de objeto.
qiskit.providers.ibmq.runtime.RuntimeEncodereqiskit.providers.ibmq.runtime.RuntimeDecoderforam atualizados para lidar com esses ndarrays.