키스킷 0.20 릴리즈 노트
0.20.1
테라 0.15.2
버그 수정
- 매개변수화된
Gate인스턴스의definition속성에 액세스할 때, 생성된QuantumCircuit이 잘못된ParameterTable으로 생성되어QuantumCircuit.parameters에서 읽거나QuantumCircuit.bind_parameters을 호출하면 바인딩되지 않은 매개변수를 잘못 보고하게 됩니다. 이 문제가 해결되었습니다. SXGate().inverse()는 이전에 올바른definition이지만 잘못된to_matrix으로 'sx_dg' 게이트를 반환했습니다.SXGate().inverse()은SXdgGate()을 반환하고 그 반대의 경우도 반환하도록 업데이트되었습니다.Instruction.inverse()는 하위 클래스에 의해 재정의되지 않은 경우 경우에 따라 잘못된to_matrix메서드가 포함된Gate인스턴스를 반환합니다. 잘못된to_matrix메서드의 인스턴스가 제거되었습니다.- 0이 아닌
angle이 있는C3XGate의 경우C3XGate.inverse()을 통해 게이트를 반전하면 이전에는 잘못된 역 게이트가 생성되었습니다. 이 문제점이 수정되었습니다. .inverse()을 호출할 때 동일한 모드의 게이트를 반환하도록MCXGate모드가 업데이트되었습니다. 이렇게 하면 경우에 따라MCXVChain게이트의 역을 포함하는 회로를 트랜스파일하면 오류가 발생하던 문제가 해결됩니다.- 이전에는
PhaseGate.control을 통해 다중 제어 위상 게이트를 생성할 때MCU1Gate게이트가 반환되었습니다.MCPhaseGate이 반환되도록 수정되었습니다. - 이전에는
MCPhaseGate을 포함하는 회로를 분해하려고 하면MCPhaseGate의 정의가 일치하지 않아 오류가 발생했습니다. 이 문제점이 수정되었습니다. QuantumCircuit.compose와DAGCircuit.compose는 입력 회로에ClassicalRegister이 두 개 이상 포함된 경우 조건부 게이트를 잘못 변환하는 경우가 있었습니다. 이 문제가 해결되었습니다.- 빈 데이터 사전에서 객체를 만들 때 발생하는
qiskit.result.Counts객체를 생성할 때 발생하는 문제를 수정했습니다. 이제 빈Counts객체가 생성됩니다. 메서드도most_frequent()메서드도 객체가 비어 있을 때 더 자세한 설명이 포함된 예외를 발생하도록 업데이트되었습니다. 수정 #5017 - 레지스터가 다른 회로를 확장하면
qregs및cregs속성은 그에 따라 업데이트되지만qubits및clbits목록은 업데이트되지 않습니다. 더 이상 레지스터에서 생성되지 않고 캐시된 목록이므로 레지스터와 비트가 불일치하게 됩니다. 이 문제가 수정되었으며extend메서드는 캐시된 비트 목록을 명시적으로 업데이트합니다. ctrl_state매개 변수를 보존하지 않는 meth:~qiskit.circuit.ControlledGate.inverse 메서드의 구체적인 구현 버그를 수정했습니다.- 긴 펄스 스케줄이 재귀 오류를 발생시키는 버그가 수정되었습니다.
에어 0.6.1
변경 없음
이그니스 0.4.0
변경 없음
아쿠아 0.7.5
변경 없음
IBM Q 제공자 0.8.0
변경 없음
0.20.0
테라 0.15.1
Prelude
0.15.0 릴리스에는 몇 가지 새로운 기능과 버그 수정이 포함되어 있습니다. 이번 릴리스의 주요 내용은 다음과 같습니다:
이번 릴리스에는 트랜스파일러에 임의 기준 번역 기능이 도입되었습니다. 여기에는 광범위한 디바이스 기반 세트를 직접 타겟팅하는 지원(예: RZ, RY, RZ, CZ 또는 iSwap 게이트를 구현하는 백엔드)이 포함됩니다.
클래스는 이제 QuantumCircuit 클래스는 이제 전역 위상을 추적합니다. 즉, 이제 전역 위상이 있는 회로를 제어하면 상대 위상이 올바르게 추가되고 게이트 매트릭스 정의가 전역 위상과 같지 않고 정확해집니다.
새 기능
-
새로운 DAG 클래스
qiskit.dagcircuit.DAGDependency회로의 종속성 형태를 나타내기 위한 새로운 DAG 클래스, 이 DAG에서 노드는 연산(게이트, 측정, 배리어 등)입니다 로 표시되며 가장자리는 두 연산 사이의 비교차에 해당합니다. -
에 네 가지 새로운 기능이 추가되었습니다
qiskit.converters로 앞뒤로 변환하기 위한DAGDependency. 이러한 함수는 다음과 같습니다.circuit_to_dagdependency()를 사용하여QuantumCircuit객체에서DAGDependency객체로 변환합니다.dagdependency_to_circuit()를 사용하여DAGDependency객체에서QuantumCircuit객체로 변환합니다.dag_to_dagdependency()를 사용하여DAGCircuit객체에서DAGDependency객체로 변환합니다.dagdependency_to_dag()를 사용하여DAGDependency객체에서DAGCircuit객체로 변환합니다.
예를 들어,
from qiskit.converters.dagdependency_to_circuit import dagdependency_to_circuit from qiskit import QuantumRegister, ClassicalRegister, QuantumCircuit circuit_in = QuantumCircuit(2) circuit_in.h(qr[0]) circuit_in.h(qr[1]) dag_dependency = circuit_to_dagdependency(circuit_in) circuit_out = dagdepency_to_circuit(dag_dependency) -
두 가지 새로운 트랜스파일러 패스가 추가되었습니다
qiskit.transpiler.passes첫 번째는UnrollCustomDefinitions는 회로의 모든 인스트럭션을 해당 인스트럭션의definition프로퍼티에 따라 회로의 모든 인스트럭션을 풀고, 지정된basis_gates또는 제공된 게이트 세트에 도달하면 중지합니다EquivalenceLibrary. 두 번째,BasisTranslator는 제공된 번역 집합을 사용하여EquivalenceLibrary의 번역 집합을 사용하여 지정된 기준으로 회로 명령어를 다시 작성합니다. -
새로운
translation_method키워드 인수가 추가되었습니다transpile()에 새로운 키워드 인수가 추가되어 회로를 사용 가능한 장치 게이트로 변환하는 데 사용할 방법을 선택할 수 있습니다. 예:transpile(circ, backend, translation_method='translator'). 올바른 선택사항은 다음과 같습니다.'unroller'를 사용하려면Unrollerpass'translator'를 사용하여BasisTranslator패스.'synthesis'를 사용하여UnitarySynthesis패스.
기본값은
'translator'입니다. -
카운트 결과 데이터를 처리하는 새로운 클래스,
qiskit.result.Counts클래스가 추가되었습니다. 이 클래스는dict의 서브클래스이며 다른 사전과 마찬가지로 상호작용할 수 있습니다. 그러나 실험의 카운트 결과를 처리하기 위한 헬퍼 메서드와 속성이 포함되어 있으며 객체 초기화 시 이진 문자열의 사후 처리 및 서식 지정도 처리합니다. ACounts객체는 정수,'0x4a'형식의 16진수 문자열,'0b1101'형식의 이진 문자열, 레지스터와 메모리 슬롯에 걸쳐 포맷된 비트 문자열(예:'00 10') 또는 dit 문자열을 키로 하는 카운트 사전을 전달하여 생성할 수 있습니다. 예를 들어,from qiskit.result import Counts counts = Counts({"0x0': 1, '0x1', 3, '0x2': 1020}) -
객체를 구성하는 새로운 메서드
qiskit.dagcircuit.DAGCircuit객체를 구성하는 새로운 메서드가 추가되었습니다(from_networkx()). 이 메서드는 networkxMultiDiGraph객체(to_networkx())가 반환하는 형식의 객체를 받아 새DAGCircuit객체를 반환합니다. 이 함수의 목적은 retworkx API에 함수가 누락된 경우 트랜스파일러 패스 작성자가 네트워크엑스의 그래프 알고리즘 라이브러리를 활용할 수 있도록 하기 위함입니다. 이러한 카스에서 이슈가 retworkx 이슈 트래커로 열리기를 바라지만(또는 풀 리퀘스트가 제출되는 것이 더 좋겠죠). -
init_qubits에 대한 새로운 kwarg가 추가되었습니다assemble()와execute()에 추가되었습니다. 이 기능을 지원하는 백엔드의 경우init_qubits을 사용하여 회로를 실행하는 백엔드에서 각 샷을 시작할 때 초기화 시퀀스를 삽입할지 여부를 제어할 수 있습니다. 기본적으로 이 값은True으로 설정되어 있으며, 이는 모든 큐비트가 각 샷을 시작할 때 그라운드 상태에 있는 것으로 간주할 수 있음을 의미합니다. 그러나init_qubits을False으로 설정하면 각 실험을 시작할 때와 촬영 사이에 큐비트가 초기화되지 않습니다. 이 플래그가 효과를 발휘하려면 회로를 실행하는 백엔드에서 이 기능을 지원해야 합니다. -
에 새로운 kwarg
rep_delay가 추가되었습니다qiskit.compiler.assemble(),qiskit.execute.execute(), 그리고PulseQobjtConfig.qiskit의 생성자 이 새로운 kwarg는 프로그램 실행 사이의 시간을 나타내는 데 사용됩니다. 백엔드의rep_delays로 설정된 유효한 값 목록에서 선택해야 합니다PulseBackendConfiguration객체(backend.configuration().rep_delays)로 액세스할 수 있습니다.rep_delaykwarg는 동적 반복 시간을 허용하는 백엔드에서만 작동합니다. 이는 백엔드의PulseBackendConfiguration객체에도dynamic_reprate_enabled속성으로 표시됩니다.dynamic_reprate_enabled가False인 경우rep_time에 지정된 값은qiskit.compiler.assemble(),qiskit.execute.execute()또는PulseQobjtConfig의 생성자가rep_delay대신 사용됩니다.rep_time는 프로그램 간 지연이 아닌 프로그램 기간만 지정할 수 있습니다. -
qiskit.schemas의qobj_schema.jsonJSON 스키마 파일에rep_delay을 pulse qobjs의 선택적 구성 속성으로 포함하도록 업데이트되었습니다. -
mod:qiskit.schemas 의
backend_configuration_schema.jsonJSON 스키마 파일이 펄스 백엔드 구성을 위한 선택적 속성으로rep_delay_range및default_rep_delay을 포함하도록 업데이트되었습니다. -
새로운 어트리뷰트
global_phase라는 새로운 속성이 글로벌 페이즈 추적에 사용되는qiskit.circuit.QuantumCircuit클래스에 추가되었습니다. 예를 들어,import math from qiskit import QuantumCircuit circ = QuantumCircuit(1, global_phase=math.pi) circ.u1(0)위의 예에서
circ.global_phase으로 글로벌 페이즈를 변경하거나 조회할 수도 있습니다. 두 경우 모두 설정은 라디안 단위입니다. 회로가 명령어 또는 게이트로 변환되면 전역 위상은 첫 번째 큐비트에서 두 개의 단일 큐비트 회전으로 표시됩니다.이렇게 하면 객체를 소비하는 다른 메서드와 함수에서
QuantumCircuit객체를 사용하는 다른 메서드나 함수가 전역 위상을 고려할 수 있습니다. 자료를 소스 B LIC면에 복사하게 됩니다. 속성을 사용하여global_phase속성을 사용하면to_matrix()메서드를 사용하면 이제 전역 단계까지가 아니라 그 분해에 정확히 대응할 수 있습니다.클래스에도 동일한 어트리뷰트가 추가되었습니다
DAGCircuit클래스에도 동일한 속성이 추가되어 변환 시 전역 위상을 추적할 수 있습니다QuantumCircuit와DAGCircuit. -
두 개의 새로운 클래스,
AncillaRegister와AncillaQubit가qiskit.circuit모듈에 추가되었습니다. 이들은QuantumRegister와Qubit의 하위 클래스이며 큐비트를 부호로 표시할 수 있습니다. 이렇게 하면 이러한 큐비트를 더 큰 회로와 알고리즘에 재사용할 수 있습니다. -
새로운 메서드
control()메서드가 추가되었습니다QuantumCircuit. 이 메서드는 제어된 버전의QuantumCircuit객체의 제어 버전을 반환하며, 열기 및 닫기 컨트롤이 모두 포함됩니다. 이 기능은 이전에는Gate클래스를 통해서만 액세스할 수 있었습니다. -
새로운 메서드
repeat()메서드가QuantumCircuit클래스에 새로운 메서드가 추가되었습니다. 원래 회로의 지정된 반복 횟수를 포함하는 새 회로 개체를 반환합니다. 예를 들어,from qiskit.circuit import QuantumCircuit qc = QuantumCircuit(2) qc.h(0) qc.cx(0, 1) repeated_qc = qc.repeat(3) repeated_qc.decompose().draw(output='mpl')매개변수는 참조로 복사되므로 회로의 한 인스턴스에서 매개변수를 업데이트하면 모든 반복이 업데이트됩니다.
-
새로운 메서드
reverse_bits()메서드가QuantumCircuit클래스에 새로운 메서드가 추가되었습니다. 이 방법은 회로의 비트 순서(양자 비트와 기존 비트 모두)를 반전시킵니다. 리틀 엔디안에서 빅 엔디안으로 또는 그 반대로 회로를 전환하는 데 사용할 수 있습니다. -
새로운 메서드
combine_into_edge_map()메서드가qiskit.transpiler.Layout클래스에 추가되었습니다. 이 메서드를 사용하면 두 개의 객체를Layout객체를 큐비트 맵으로 변환하여 두 개의 회로를 구성할 수 있습니다. -
qiskit.test.mock.utils모듈에 새 클래스ConfigurableFakeBackend가 추가되었습니다. 이 새로운 클래스를 사용하면 테스트에 사용할 수 있는 구성 가능한 모의 백엔드를 만들 수 있습니다. 예를 들어,from qiskit.test.mock.utils import ConfigurableFakeBackend backend = ConfigurableFakeBackend("Tashkent", n_qubits=100, version="0.0.1", basis_gates=['u1'], qubit_t1=99., qubit_t2=146., qubit_frequency=5., qubit_readout_error=0.01, single_qubit_gates=['u1'])는 100개의 큐비트와 생성자에 지정된 다른 모든 매개 변수가 포함된 백엔드 객체를 생성합니다.
-
새로운 메서드
draw()메서드가qiskit.circuit.EquivalenceLibrary클래스에 새로운 메서드가 추가되었습니다. 이 메서드는 등가 라이브러리의 내용을 그리는 데 사용할 수 있으며 디버깅에 유용할 수 있습니다. 예를 들어,from numpy import pi from qiskit.circuit import EquivalenceLibrary from qiskit.circuit import QuantumCircuit from qiskit.circuit import QuantumRegister from qiskit.circuit import Parameter from qiskit.circuit.library import HGate from qiskit.circuit.library import U2Gate from qiskit.circuit.library import U3Gate my_equiv_library = EquivalenceLibrary() q = QuantumRegister(1, 'q') def_h = QuantumCircuit(q) def_h.append(U2Gate(0, pi), [q[0]], []) my_equiv_library.add_equivalence(HGate(), def_h) theta = Parameter('theta') phi = Parameter('phi') lam = Parameter('lam') def_u2 = QuantumCircuit(q) def_u2.append(U3Gate(pi / 2, phi, lam), [q[0]], []) my_equiv_library.add_equivalence(U2Gate(phi, lam), def_u2) my_equiv_library.draw() -
에 새로운 단계 명령어
SetPhase가 추가되었습니다qiskit.pulse. 이 명령은 후속 펄스의 위상을 지정된 위상(라디안 단위)으로 설정합니다. 예를 들어,import numpy as np from qiskit.pulse import DriveChannel from qiskit.pulse import Schedule from qiskit.pulse import SetPhase sched = Schedule() sched += SetPhase(np.pi, DriveChannel(0))이 예제에서는
SetPhase인스트럭션 이후DriveChannel(0)에 적용되는 펄스의 위상이 라디안으로 설정됩니다. -
에 새로운 펄스 명령
ShiftFrequency이 추가되었습니다qiskit.pulse.instructions. 이 명령어를 사용하면 채널의 주파수를 설정된 주파수에서 이동할 수 있습니다. 예를 들어,from qiskit.pulse import DriveChannel from qiskit.pulse import Schedule from qiskit.pulse import ShiftFrequency sched = Schedule() sched += ShiftFrequency(-340e6, DriveChannel(0))이 예제에서는
ShiftFrequency명령 뒤에DriveChannel(0)에 적용되는 모든 펄스는 340MHz 만큼 감소된 주파수의 엔벨로프를 갖습니다. -
새로운 메서드
conjugate()메서드가ParameterExpression클래스에 새로운 메서드가 추가되었습니다. 이렇게 하면 오류를 발생시키지 않고numpy.conj()을 호출할 수 있습니다. 객체는ParameterExpression객체는 실제 객체이므로 자체적으로 반환됩니다. 이 동작은 Python floats/ints와 유사합니다. -
새로운 클래스
PhaseEstimation에 새로운 클래스qiskit.circuit.library. 이 회로 라이브러리 클래스는 위상 추정 알고리즘의 원래 공식화에서 사용된 회로입니다 arXiv:quant-ph/9511026. 위상 추정은 해당 고유 상태 와 함께 제공되는 단일 연산자 의 고유값 의 위상 을 추정하는 작업입니다. 즉
이 추정(따라서 이 회로)은 쇼의 알고리즘이나 양자 진폭 추정과 같이 잘 알려진 여러 알고리즘의 핵심 루틴입니다.
-
함수
qiskit.visualization함수plot_state_qsphere()에는 qsphere 시각화의 각 블롭에 레이블을 지정할지 여부를 제어하는 데 사용되는 새로운 kwargshow_state_labels이 있습니다. 기본적으로 이 kwarg는True로 설정되어 있으며 기본적으로 각 블롭 옆에 기준 상태를 표시합니다. 이 기능은show_state_labelskwarg를False으로 설정하여 비활성화하여 이전 동작으로 되돌릴 수 있습니다. -
함수
qiskit.visualization함수plot_state_qsphere()에는 기본적으로False으로 설정된 새로운 kwargshow_state_phases이 있습니다.True로 설정하면 각 기준 상태의 위상을 표시합니다. -
함수
qiskit.visualization함수plot_state_qsphere()에는 기본적으로False으로 설정된 새로운 kwarguse_degrees이 있습니다.True으로 설정하면 각 기저 상태의 위상이 오른쪽 하단의 위상 원과 함께 도 단위로 표시됩니다. -
새로운 클래스,
QuadraticForm모듈에qiskit.circuit.library모듈에 이진 변수에 이차식을 구현하기 위한 새로운 클래스가 추가되었습니다. 회로 라이브러리 요소는 연산을 구현합니다
를 사용하여 및 출력 큐비트를 생성합니다. 결과는 출력 큐비트가 2의 보수로 인코딩됩니다. 을 지정하지 않으면 회로는 모듈로 연산을 적용하지 않고 결과를 표현하는 데 필요한 최소 큐비트 수를 선택합니다. 이차식은 이차항은 행렬, 선형항은 벡터, 상수 오프셋을 사용하여 지정합니다. 모든 항이 정수인 경우 회로는 이차식을 정확히 구현하지만, 그렇지 않은 경우 근사치일 뿐입니다.
예를 들어,
import numpy as np
from qiskit.circuit.library import QuadraticForm
A = np.array([[1, 2], [-1, 0]])
b = np.array([3, -3])
c = -2
m = 4
quad_form_circuit = QuadraticForm(m, A, b, c)-
추가
qiskit.quantum_info.Statevector.expectation_value()와qiskit.quantum_info.DensityMatrix.expectation_value()메서드를 사용하여 기대값을 계산합니다qiskit.quantum_info.Operator. -
생성자에서
seedkwarg의 경우qiskit.circuit.library.QuantumVolumenumpy 무작위 생성기 객체를 사용할 수 있습니다. 이전에는 정수만 유효한 입력이었습니다. 이것은 통합할 때 유용합니다QuantumVolume를 자체 난수 생성 기능이 있는 더 큰 함수의 일부로 통합할 때 유용합니다QuantumVolume회로. -
메서드의
QuantumCircuit메서드compose()에는 원래 회로 앞에 다른 회로를 추가하는 대신 다른 회로를 앞에 추가하는 데 사용할 수 있는 새로운 kwargfront이 있습니다. 예를 들어,from qiskit.circuit import QuantumCircuit circ1 = QuantumCircuit(2) circ2 = QuantumCircuit(2) circ2.h(0) circ1.cx(0, 1) circ1.compose(circ2, front=True).draw(output='mpl') -
두 개의 새로운 패스,
SabreLayout과SabreSwap레이아웃 및 라우팅용 패스가qiskit.transpiler.passes. 이 새로운 패스는 Li et al...에서 제시된 알고리즘을 기반으로 합니다, "NISQ 시대 양자 디바이스를 위한 큐비트 매핑 문제 해결", ASPLOS 2019. 기능을 사용할 때도 선택할 수 있습니다transpile()기능을 사용할 때layout_methodkwarg를'sabre'및/또는routing_method를'sabre'로 설정하여 사용할 수도 있습니다SabreLayout및SabreSwap로 설정할 수도 있습니다. -
메서드 추가
replace()메서드를qiskit.pulse.Schedule클래스에 펄스 명령을 다른 명령으로 대체할 수 있는 메서드를 추가했습니다. 예를 들어,.. code-block:: python키스킷 가져오기 펄스에서
d0 = pulse.DriveChannel(0)
sched = pulse.Schedule ()
old = pulse.Play ( pulse.Constant (100, 1.0 ), d0 ) new = pulse.Play ( pulse.Constant (100, 0.1 ), d0 )
sched += old
sched = sched.replace (이전, 새)
어서스트 스케줄 == pulse.Schedule (신규)
-
에 새로운 게이트 클래스를 추가했습니다
qiskit.circuit.library에 , 그 부속 , 그리고 게이트로 제어되는SXGate,SXdgGate와CSXGate. 객체에 추가할 수도 있습니다QuantumCircuit객체에sx(),sxdg()및csx()를 사용하여 객체에 추가할 수도 있습니다. -
Reset지침에 대한 지원 추가qiskit.quantum_info.Statevector.from_instruction(). 큐비트가 중첩 상태에 있는 경우 제로 상태로의 투영을 선택할 때 RNG 샘플링이 포함된다는 점에 유의하세요. 샘플링을 위한 시드는 다음을 사용하여 설정할 수 있습니다seed()메서드를 사용하여 설정할 수 있습니다. -
메소드
qiskit.circuit.ParameterExpression.subs()와qiskit.circuit.QuantumCircuit.assign_parameters()이제 수락ParameterExpression를 대체할 목표 값으로 받아들입니다.예를 들면 다음과 같습니다.
from qiskit.circuit import QuantumCircuit, Parameter p = Parameter('p') source = QuantumCircuit(1) source.rz(p, 0) x = Parameter('x') source.assign_parameters({p: x*x})┌──────────┐ q_0: ┤ Rz(x**2) ├ └──────────┘ -
메서드의
QuantumCircuit()메서드to_gate()에는 출력에 대한 레이블을 설정하는 데 사용할 수 있는 새로운 kwarglabel이 있습니다Gate객체에 대한 레이블을 설정하는 데 사용할 수 있습니다. 예를 들어,from qiskit.circuit import QuantumCircuit circuit_gate = QuantumCircuit(2) circuit_gate.h(0) circuit_gate.cx(0, 1) custom_gate = circuit_gate.to_gate(label='My Special Bell') new_circ = QuantumCircuit(2) new_circ.append(custom_gate, [0, 1], []) new_circ.draw(output='mpl') -
추가
UGate,CUGate,PhaseGate및CPhaseGate를 해당QuantumCircuit메서드u(),cu(),p()및cp(). 게이트는UGate게이트는 3개의 오일러 각을 가진 일반적인 단일 큐비트 회전 게이트이며, 그 제어 버전인CUGate게이트는 제어 버전입니다.CUGate에는 U 게이트의 가능한 글로벌 단계를 설명하는 4개의 파라미터가 있습니다. 그리고PhaseGate및CPhaseGate게이트는 임의 각도의 일반 위상 게이트이며 제어 버전입니다. -
새로운 kwarg,
cregbundle가 추가되었습니다qiskit.visualization.circuit_drawer()함수와QuantumCircuit메서드draw().True로 설정하면text및mpl서랍에 대한 회로 시각화에서 크레그가 한 줄로 묶여 표시됩니다. 기본값은True입니다. 문제 #4290을 해결합니다.예를 들어,
from qiskit import QuantumCircuit circuit = QuantumCircuit(2) circuit.measure_all() circuit.draw(output='mpl', cregbundle=True) -
새로운 kwarg,
initial_state가 추가되었습니다qiskit.visualization.circuit_drawer()함수와QuantumCircuit메서드draw().True으로 설정하면 이제 모든 서랍의 회로 시각화에 초기 상태가 포함됩니다. 문제 #4293을 해결합니다.예를 들어,
from qiskit import QuantumCircuit circuit = QuantumCircuit(2) circuit.measure_all() circuit.draw(output='mpl', initial_state=True) -
이제 'mpl' 서랍을 사용할 때 라벨이 표시됩니다. 레이블에는 게이트 레이블과 제어 레이블의 두 가지 유형이 있습니다. 게이트 레이블이 디스플레이의 게이트 이름을 대체합니다. 컨트롤 레이블은 게이트의 컨트롤 위 또는 아래에 표시됩니다. 3766, #4580 문제 수정 3766 및 4580 문제를 해결합니다.
예를 들어,
from qiskit import QuantumCircuit from qiskit.circuit.library.standard_gates import YGate circuit = QuantumCircuit(2) circuit.append(YGate(label='A Y Gate').control(label='Y Control'), [0, 1]) circuit.draw(output='mpl')
업그레이드 주의사항
-
다중 제어 X 게이트 구현(
MCXGrayCode,MCXRecursive및MCXVChain)의 구현을 보다 정확하게 설명하기 위해name속성이 변경되었습니다:mcx_gray,mcx_recursive, 및mcx_vchain으로 각각 변경되었습니다. 이전에는 이러한 게이트가mcx라는 이름을 공유하여MCXGate로 공유했기 때문에 이러한 게이트가 잘못 트랜스파일되고 시뮬레이션되었습니다. -
기본적으로 사전 설정된 패스매니저는
qiskit.transpiler.preset_passmanagers의 사전 설정 패스 관리자는UnrollCustomDefinitions와BasisTranslator를 사용하여 이전 기본값 대신 기준 변경을 처리합니다Unroller. 이는 새로운 패스가 더 유연하고 모든 기준 집합을 타겟팅할 수 있지만, 결과물은 다를 수 있기 때문입니다. 이전 기본값을 사용하려면translation_methodkwarg를transpile()을'unroller'으로 설정하면 됩니다. -
그리고
qiskit.converters.circuit_to_gate()및 :func` qiskit.converters.circuit_to_instruction\변환기 함수는 이전에는 생성된 게이트 또는 명령어를 활성SessionEquivalenceLibrary에 자동으로 포함했습니다. 이러한 변환기는 이제 변환된 인스턴스를 등록할지 여부와 위치를 지정하는equivalence_library` 키워드 인수를 선택 사항으로 허용합니다. 기본 동작이 변환된 인스턴스를 등록하지 않도록 변경되었습니다. -
메서드의 기본값은
cregbundlekwarg입니다qiskit.circuit.QuantumCircuit.draw()메서드 및qiskit.visualization.circuit_drawer()함수의 기본값이True로 변경되었습니다. 예를 들어 회로도의 클래식 비트가 이제 기본적으로 번들로 제공된다는 뜻입니다:from qiskit.circuit import QuantumCircuit circ = QuantumCircuit(4) circ.x(0) circ.h(1) circ.measure_all() circ.draw(output='mpl')회로 도면에 이전 동작을 유지하고 다이어그램에 각 클래식 비트를 표시하려면
cregbundlekwarg를False으로 설정하면 됩니다. 예를 들어,from qiskit.circuit import QuantumCircuit circ = QuantumCircuit(4) circ.x(0) circ.h(1) circ.measure_all() circ.draw(output='mpl', cregbundle=False) -
Schedule를 사용하여 플로팅qiskit.pulse.Schedule.draw()및qiskit.visualization.pulse_drawer()를 사용하면 기본적으로 이벤트 테이블이 더 이상 표시되지 않습니다.tablekwarg를True으로 설정하여 다시 활성화할 수 있습니다. -
패스
RemoveResetInZeroState는 이전에 사전 설정된 패스 관리자level_0_pass_manager()에 포함되어 있었는데, 이는optimization_level=0fortranspile()및execute()함수와 함께 사용되었습니다. 그러나RemoveResetInZeroState는 최적화 패스로 최적화 레벨 0에 포함되어서는 안 되는 항목이므로 제거되었습니다. 실행해야 하는 경우transpile()와RemoveResetInZeroState사용자 지정 패스 관리자 또는optimization_level1, 2, 3을 사용하세요. -
더 이상 사용되지 않는 kwarg
line_lengthqiskit.visualization.circuit_drawer()함수와qiskit.circuit.QuantumCircuit.draw()메서드가 제거되었습니다. 0.10.0 릴리스 이후 더 이상 사용되지 않습니다. 대신foldkwarg를 사용하여 회로도의 너비를 조정할 수 있습니다. -
'mpl'출력 모드의qiskit.circuit.QuantumCircuit.draw()메서드 및circuit_drawer()를 사용하려면 이제 pylatexenc 라이브러리를 설치해야 합니다. 이는 시각화에 대한 선택적 종속성이었지만 이전에는'latex'출력 모드에만 필요했습니다. 이제 matplotlib 서랍에도 필요하게 되었는데, 이는 게이트에 대한 matplotlib의 수학 텍스트 레이블을 사용하여 게이트의 올바른 크기 조정을 처리하는 데 필요하기 때문입니다. -
더 이상 사용되지 않는
get_tokens메서드qiskit.qasm.Qasm및qiskit.qasm.QasmParser메서드가 제거되었습니다. 이러한 메서드는 0.9.0 릴리스 이후 더 이상 사용되지 않습니다. 대신qiskit.qasm.Qasm.generate_tokens()및qiskit.qasm.QasmParser.generate_tokens()방법을 사용해야 합니다. -
더 이상 사용되지 않는 kwarg
channels_to_plotqiskit.pulse.Schedule.draw(),qiskit.pulse.Instruction.draw(),qiskit.visualization.pulse.matplotlib.ScheduleDrawer.draw및pulse_drawer()가 제거되었습니다. Kwarg는 0.11.0 릴리스 이후 더 이상 사용되지 않으며, 동일한 기능을 하는channelskwarg로 대체되었으므로 대신 사용해야 합니다. -
더 이상 사용되지 않는
circuit_instruction_map속성이qiskit.providers.models.PulseDefaults클래스의 속성이 제거되었습니다. 이 속성은 0.12.0 릴리스부터 더 이상 사용되지 않으며 대신 사용할 수 있는instruction_schedule_map속성으로 대체되었습니다. -
union메서드Schedule및Instruction메서드는 0.12.0 릴리스 이후 더 이상 사용되지 않으며 현재 제거되었습니다. 대신qiskit.pulse.Schedule.insert()및qiskit.pulse.Instruction.meth()메서드 대신 kwarg``time=0``. -
draw메서드에 대한scaling인수는 더 이상 사용되지 않습니다Schedule로 변경되었으며Instruction는 0.12.0 릴리스 이후scale로 대체되어 현재 제거되었습니다. 대신scalekwarg를 사용하세요. -
더 이상 사용되지 않는
period인수는qiskit.pulse.library함수에 대한 인수는 0.13.0 릴리스 이후freq로 대체되었으며 현재는 제거되었습니다.period대신freqkwarg를 사용하세요. -
Commands클래스를 포함하는qiskit.pulse.commands모듈은 0.13.0 릴리스에서 더 이상 사용되지 않으며 현재 제거되었습니다. 여전히 명령을 사용 중이라면 펄스 코드를 업그레이드해야 합니다. 예를 들어,이전새로 작성Command(args)(channel)Instruction(args, channel)```python Acquire(duration)( AcquireChannel(0 )) ``` ```python 획득(기간, AcquireChannel(0 )) | ```python Delay(duration)(channel) ``` | ```python Delay(duration, channel) ``` | | ```python FrameChange(angle)(DriveChannel(0)) ``` | ```python # FrameChange was also renamed ShiftPhase(angle, DriveChannel(0)) ``` | | ```python Gaussian(...)(DriveChannel(0)) ``` | ```python # Pulses need to be `Play`d Play(Gaussian(...), DriveChannel(0)) ``` | -
qiskit.tool.qi모듈의 모든 클래스와 함수는 0.12.0 릴리스에서 더 이상 사용되지 않으며 현재 제거되었습니다. 대신qiskit.quantum_info모듈과 양자 상태 및 연산자 작업을 위한 새로운 메서드 및 클래스를 사용하세요. -
qiskit.quantum_info.basis_state및qiskit.quantum_info.projector기능은 현재 제거되었으므로 키스킷 테라 0.12.0 에서 더 이상 사용되지 않습니다.qiskit.quantum_info.QuantumState및 그 파생상품qiskit.quantum_info.Statevector및qiskit.quantum_info.DensityMatrix를 사용하여 주와 함께 작업하세요. -
의 대화형 플롯 함수는
qiskit.visualization,iplot_bloch_multivector,iplot_state_city,iplot_state_qsphere,iplot_state_hinton,iplot_histogram,iplot_state_paulivec의 대화형 플롯 함수는 이제 matplotlib 기반 등가물에 대한 더 이상 사용되지 않는 별칭일 뿐이며 더 이상 대화형이 아닙니다. 이러한 함수가 의존하던 호스팅된 정적 JS 코드가 제거되어 더 이상 작동할 수 없게 되었습니다. 의존하는 사이트가 더 이상 존재하지 않기 때문에 일반적인 사용 중단은 불가능했습니다. -
qiskit.validation의 마시멜로를 사용하는 유효성 검사 구성 요소가 terra에서 제거되었습니다. 더 이상 테라에서 오브젝트를 제작하는 데 사용되지 않기 때문입니다. -
의 마시멜로 스키마 클래스는
qiskit.result클래스에서 더 이상 사용되지 않기 때문에 제거되었습니다qiskit.result.Result클래스에서 더 이상 사용되지 않기 때문에 제거되었습니다. -
메서드의 출력은
to_dict()메서드의 출력은qiskit.result.Result클래스의 메서드 출력은 더 이상 직접 JSON 직렬화를 위한 형식이 아닙니다. 이러한 클래스의 인스턴스에 포함된 콘텐츠에 따라 기본 JSON 인코더가 처리할 수 없는 유형(예: 복소수 또는 널 배열)이 있을 수 있습니다.to_dict()메서드의 출력을 직접 JSON으로 직렬화하는 경우 JSON 인코더가 이러한 유형을 처리할 수 있는지 확인해야 합니다. -
한 번에 여러 큐비트를 획득하는 옵션은 0.12.0 릴리스에서 더 이상 사용되지 않으며 현재 제거되었습니다. 특히, 초기화 인수
mem_slots및reg_slots은qiskit.pulse.instructions.Acquire에서 제거되었으며,channel,mem_slot및reg_slot는 목록을 입력으로 제공하면 오류를 발생시킵니다. -
0.13.0 릴리스에서 레거시 네트워크x 기반 구현에 대한 선택적 폴백을 제공하기 위해 도입된
USE_RETWORKX환경 변수 사용에 대한 지원은qiskit.dagcircuit.DAGCircuit구현에 대한 선택적 폴백을 제공하기 위해 도입된 환경 변수 사용에 대한 지원이 제거되었습니다. 이 플래그는 retworkx로 전환하는 동안 한 릴리즈의 새 구현에 문제가 발생한 사용자에게 안전장치를 제공하기 위한 것입니다. -
스케줄 변환을 담당하는
qiskit.pulse모듈의 이름이reschedule.py에서transforms.py으로 변경되었습니다. 이전 가져오기 경로는 더 이상 사용되지 않습니다. 코드를 업그레이드하려면:from qiskit.pulse.rescheduler import <X>로 대체해야 합니다:
from qiskit.pulse.transforms import <X> -
이전 릴리스에서는
PassManager는TransformationPass클래스가PropertySet을 수정하는 것을 허용하지 않았습니다. 이 제한이 해제되었으므로TransformationPass클래스는 이제PropertySet및DAGCircuit동안run(). 이 변경은 나중에 패스에 필요할 수 있는 내부 상태를 가진TransformationPass클래스를 보다 효율적으로 지원하기 위해 이루어졌습니다PassManager. 이 변경이 없었다면 내부 상태를 다시 생성하기 위해 두 번째 중복AnalysisPass이 필요했을 것이며, 이로 인해 상당한 오버헤드가 추가될 수 있습니다.
지원 중단 노트
-
함수에 대한 첫 번째 위치 매개변수의 이름입니다
qiskit.visualization함수plot_state_hinton(),plot_bloch_multivector(),plot_state_city(),plot_state_paulivec()및plot_state_qsphere()의 이름이rho에서state으로 변경되었습니다.rho에 이름으로 값을 전달하는 것은 더 이상 사용되지 않으며 향후 릴리스에서 제거될 예정입니다. 대신 인수를 위치적으로 전달하거나 새 매개변수 이름state을 사용해야 합니다. -
qiskit.pulse.pulse_lib모듈은 더 이상 사용되지 않으며 향후 릴리스에서 제거될 예정입니다. 로 이름이 변경되었습니다qiskit.pulse.library대신 사용해야 합니다. -
메서드
qiskit.circuit.QuantumCircuit메서드mirror()는 더 이상 사용되지 않으며 향후 릴리스에서 제거될 예정입니다. 메서드qiskit.circuit.QuantumCircuit.reverse_ops()대신 미러링이 회로의 출력 큐비트를 교체하는 것과 혼동될 수 있으므로 메서드 를 사용해야 합니다. 메서드는reverse_ops()메서드는 미러링 대신 적용되는 게이트의 순서만 반전시킵니다. -
qubits()및clbits()메서드qiskit.dagcircuit.DAGCircuit는 더 이상 사용되지 않으며 향후 릴리스에서 제거될 예정입니다. 같은 이름의 속성(qiskit.dagcircuit.DAGCircuit.qubits및qiskit.dagcircuit.DAGCircuit.clbits)으로 대체되었으며 캐싱되어 훨씬 빠르게 액세스할 수 있습니다. -
qiskit.pulse.library.ParametricPulse파생 클래스에 대한get_sample_pulse메서드(예GaussianSquare)는 더 이상 사용되지 않으며 향후 릴리스에서 제거될 예정입니다.get_waveform메서드(예:get_waveform())로 대체되었으며, 동일한 방식으로 작동합니다. -
선택적
condition인수를qiskit.dagcircuit.DAGNode,qiskit.dagcircuit.DAGCircuit.apply_operation_back()및qiskit.dagcircuit.DAGCircuit.apply_operation_front()는 더 이상 사용되지 않으며 향후 릴리스에서 제거될 예정입니다. 대신control에 설정된qiskit.circuit.Instruction에 추가되는 인스턴스DAGCircuit를 사용해야 합니다. -
qiskit.quantum_info.BaseOperator및qiskit.quantum_info.QuantumState클래스의set_atol및set_rtol클래스 메서드(그리고 그 하위 클래스인Operator및qiskit.quantum_info.DensityMatrix)는 더 이상 사용되지 않으며 향후 릴리스에서 제거될 예정입니다. 대신.atol및.rtol속성의 값을 클래스에 설정해야 합니다. 예를 들어,from qiskit.quantum_info import ScalarOp ScalarOp.atol = 3e-5 op = ScalarOp(2) -
의 대화형 플로팅 기능은
qiskit.visualization,iplot_bloch_multivector,iplot_state_city,iplot_state_qsphere,iplot_state_hinton,iplot_histogram,iplot_state_paulivec의 대화형 플로팅 기능은 더 이상 사용되지 않으며 향후 릴리스에서 제거될 예정입니다. 의 matplotlib 기반 등가 함수인qiskit.visualization,plot_bloch_multivector(),plot_state_city(),plot_state_qsphere(),plot_state_hinton(),plot_state_histogram(), 및plot_state_paulivec()를 대신 사용해야 합니다. -
acquires,mem_slots,reg_slots속성의qiskit.pulse.instructions.Acquire펄스 인스트럭션은 더 이상 사용되지 않으며 향후 릴리스에서 제거될 예정입니다. 의 복제본일 뿐입니다channel,mem_slot와reg_slot의 중복일 뿐입니다. 이제 단일 명령어에서 여러 큐비트를 사용하는 것에 대한 이전 지원은Acquire명령어에 대한 지원이 제거되었습니다. -
의
SamplePulse클래스가qiskit.pulse의 클래스가Waveform.SamplePulse은 더 이상 사용되지 않으며 향후 릴리스에서 제거될 예정입니다. -
스타일 사전 키
cregbundle는 더 이상 사용되지 않으며 향후 릴리스에서 제거될 예정입니다. 이것은 kwargcregbundle로 대체되었습니다qiskit.visualization.circuit_drawer()함수와QuantumCircuit메서드draw().
버그 수정
-
메서드의
qiskit.circuit.QuantumCircuit메서드num_nonlocal_gates이전에는 다중 큐비트qiskit.circuit.Instruction객체(예Barrier)를 비로컬 게이트 수에 포함시켰습니다. 로컬이 아닌 객체만 계산되도록 수정되었습니다Gate객체만 계산되도록 수정되었습니다. 수정 #4500 -
ControlledGate를 설정한 인스턴스(ctrl_state)는 비교된 게이트가 동등한 경우에도 동등한 것으로 평가되지 않는 경우가 있었습니다. 이 문제가 해결되어 #4573이 수정되었습니다 -
에서 비트에 액세스하는 경우
qiskit.circuit.QuantumRegister또는qiskit.circuit.ClassicalRegister에서 인덱스로 비트에 액세스할 때 <https://numpy.org/doc/stable/user/basics.types.html> `__는 이전에는CircuitError예외를 발생시켰습니다. 이 문제가 해결되어 Python 의 기본 제공int유형 외에 numpy 유형을 사용할 수 있습니다. 3929 수정. -
qiskit.pulse.Acquire에 동시에 여러 개의 획득이 있을 때 첫 번째qiskit.pulse.configuration.Kernel또는qiskit.pulse.configuration.Discriminator만 사용되던 버그가 수정되었습니다qiskit.pulse.Schedule. -
qiskit.pulse.SetFrequency객체를 구성하는 데 사용되는 SI 단위는 Hz이지만, 인스턴스에서 생성된PulseQobjInstruction객체를SetFrequency인스턴스에서 생성할 때는 GHz로 변환해야 합니다. 이 변환은 이전 릴리스에서 누락되었으나 수정되었습니다. -
이전에는 제어 큐비트 수를 0으로 설정할 수 있었는데, 이 경우 제어되지 않을 가능성이 있는 원래의 연산이 반환되었습니다. 호출자가 객체에만 있는 어트리뷰트에 액세스하려고 시도하면
AttributeError이 발생할 수 있습니다ControlledGate객체에만 있는 어트리뷰트에 액세스하려고 하면 이 문제는 유효한 값이 사용되고 있는지 확인하기 위해num_ctrl_qubits에 대한 게터와 세터를 추가하여 유효한 값이 사용되고 있는지 확인합니다. 수정 #4576 -
개방형 컨트롤은
Gate객체definition. 그러나 게이트가 이미 베이시스 세트에 존재하는 경우 이 정의가 사용되지 않아 변환 후 잘못된 회로가 백엔드로 전송되는 문제가 발생했습니다. 이 문제는 열린 컨트롤이 있는 제어 게이트를 만나면 정의를 사용하도록Unroller패스를 수정하여 해결되었습니다. 수정 #4437 -
클래스의
insert_barriers키워드 인수는ZZFeatureMap클래스의 키워드 인수는 실제로 하다마드 레이어와 에볼루션 레이어 사이에 장벽을 삽입하지 않았습니다. 이제 장벽이 제대로 삽입되도록 수정되었습니다. -
큐비트가 3개 이상인 일부 게이트가 특정 인스턴스에서 컴파일에 실패하던 문제를 수정했습니다. 자세한 내용은 #4577 <https://github.com/Qiskit/qiskit/issues/4577 을 참조하세요.
-
Matplotlib (
'mpl') 출력 백엔드의qiskit.circuit.QuantumCircuit메서드draw()와qiskit.visualization.circuit_drawer()scale함수의 스케일링이 제대로 작동하지 않는 문제가 있었습니다. 글꼴과 선 너비가 이미지의 나머지 부분에 따라 조정되지 않았습니다. 이 문제가 수정되어 이제 회로도의 모든 요소가 제대로 확장됩니다. 예를 들어,from qiskit import QuantumCircuit circuit = QuantumCircuit(2) circuit.h(0) circuit.cx(0, 1) circuit.draw(output='mpl', scale=0.5)수정 #4179.
-
초기화 또는 진화하는 동안
qiskit.quantum_info.Statevector및qiskit.quantum_info.DensityMatrixBarrier명령어를 포함하는 회로별 클래스에서 예외가 발생하는 문제를 수정했습니다. 수정 #4461 -
이전에는
QuantumCircuit에Gate를 포함하는 경우 트랜스파일러가 때때로optimization_level=3를 사용할 때 실패했습니다transpile()또는execute()이UnboundLocalError을 발생시키면 실패했습니다. 이 문제는 기존 조건을 고려하도록ConsolidateBlocks패스를 업데이트하여 이 문제를 해결했습니다. 수정 #4672. -
'mpl'출력 백엔드를 사용할 때 긴 게이트 및 레지스터 이름이 넘치거나 주변에 과도한 빈 공간이 남는 경우가 있습니다qiskit.circuit.QuantumCircuit.draw()메서드 및qiskit.visualization.circuit_drawer()함수. 비례 글꼴에 올바른 텍스트 너비를 사용하여 이 문제가 해결되었습니다. 4611, #4605, #4545, #4497, #4449 및 #3641을 수정합니다. -
style` kwarg on the :meth:`qiskit.circuit.QuantumCircuit.draw` or :func:`qiskit.visualization.circuit_drawer` with the ``'mpl'출력 백엔드에서 사전 키'showindex'가True로 설정된 경우 열 상단의 색인 번호가 제대로 정렬되지 않습니다. 이 문제점이 수정되었습니다. -
'mpl'출력 백엔드와 함께cregbunde=True사용 시qiskit.circuit.QuantumCircuit.draw()메서드 및qiskit.visualization.circuit_drawer()함수를 사용하고 두 번째 접기로 측정하면 측정 화살표가 크레그 수를 덮어쓰게 됩니다. 이를 방지하기 위해 카운트가 왼쪽으로 이동했습니다. 수정 #4148. -
'mpl'출력 백엔드를 사용하는 경우qiskit.circuit.QuantumCircuit.draw()메서드 및qiskit.visualization.circuit_drawer()함수CSwapGate게이트와 제어RZZGate게이트는 이제 상자가 아닌 해당 기호와 함께 표시됩니다. -
'mpl'출력 백엔드를 사용하는 경우qiskit.circuit.QuantumCircuit.draw()메서드 및qiskit.visualization.circuit_drawer()메서드를 사용하여 생성된 함수 제어 게이트의to_gate()메서드에 대한 출력 백엔드의 간격이 적절하지 않아 회로 다이어그램에서 다른 게이트와 겹칠 수 있습니다. 이 문제점이 해결되었습니다. -
'mpl'출력 백엔드를 사용하는 경우qiskit.circuit.QuantumCircuit.draw()메서드 및qiskit.visualization.circuit_drawer()와 같이 배열을 매개변수로 사용하는 함수 게이트는 더 이상 주변에 과도한 공백으로 표시되지 않습니다(예:HamiltonianGate). 수정 #4352. -
'mpl'출력 백엔드를 사용하는 경우qiskit.circuit.QuantumCircuit.draw()메서드 및qiskit.visualization.circuit_drawer()함수 제네릭 게이트를 직접 인스턴스화하여 생성한 경우qiskit.circuit.Gate메서드를 직접 인스턴스화하여 생성된 일반 게이트는 이제 게이트에 적합한 배경색을 표시합니다. 수정 #4496. -
'mpl'출력 백엔드를 사용하는 경우qiskit.circuit.QuantumCircuit.draw()메서드 및qiskit.visualization.circuit_drawer()함수에서Isometry또는Initialize사용 시 발생하던AttributeError오류가 수정되었습니다. 4439 수정. -
'mpl'출력 백엔드를 사용하는 경우qiskit.circuit.QuantumCircuit.draw()메서드 및qiskit.visualization.circuit_drawer()함수에서 일부 개방형 제어 게이트가 개방형 제어를 제대로 표시하지 않았습니다. 열린 컨트롤이 열린 원으로 올바르게 표시되도록 수정되었습니다. 수정 #4248. -
'mpl'출력 백엔드를 사용하는 경우qiskit.circuit.QuantumCircuit.draw()메서드 및qiskit.visualization.circuit_drawer()함수에서foldkwarg를 -1 로 설정하면 이제 접히지 않고 회로를 제대로 표시합니다. 수정 #4506. -
qiskit.pulse.library.discrete의 파라메트릭 펄스는 이제 기본적으로 파라메트릭 펄스의 끝이 0입니다. 엔드포인트는 함수의 경우 다음 이 되도록 정의됩니다. 수정 #4317
기타 참고사항
- 이전에 마시멜로 라이브러리를 사용하여 생성된
qiskit.result.Result클래스는 더 이상 마시멜로 라이브러리에 의존하지 않도록 리팩터링되었습니다. 이 새로운 구현은 원활하게 전환되어야 하지만 이전에 마시멜로에서 상속된 일부 특정 동작이 작동하지 않을 수 있습니다. 호환되지 않는 문제가 발견되면 문제를 제기해 주세요.
에어 0.6.1
Prelude
이번 0.6.0 릴리스에는 Aer 제공업체의 모든 시뮬레이터에 대한 수많은 성능 개선 사항과 소스에서 빌드할 때 빌드 시스템에 대한 중요한 변경 사항이 포함되어 있습니다. 주요 변경 사항은 SIMD 벡터화 지원, 결합 차원 절단을 통한 행렬 곱 상태 방법의 근사화, 보다 효율적인 폴리 기대값 계산, C++ 결과 객체의 Python 변환의 대폭 향상된 효율성입니다. 소스에서 빌드할 때 일반적인 C++ 종속성을 관리하기 위해 코난을 사용하도록 빌드 시스템이 업그레이드되었습니다.
새 기능
-
밀도 행렬 스냅샷 지원을 QasmSimulator 의 "statevector" 및 "statevector_gpu" 메서드에 추가합니다.
-
모든 큐비트뿐만 아니라 특정 큐비트에 대한 밀도 매트릭스 스냅샷을 허용합니다. 이렇게 하면 나머지 큐비트에 대한 상태의 부분 추적을 계산합니다.
-
qiskit.providers.aer.QasmSimulator의 "density_matrix" 시뮬레이션 메서드에 폴리 기대값 스냅샷 지원을 추가합니다.qiskit.providers.aer.extensions.SnapshotExpectationValue확장자를 사용하여 회로에 스냅샷을 추가합니다. -
qiskit.providers.aer.QasmSimulator의 "statevector", "statevector_gpu, "density_matrix" 및 "density_matrix_gpu" 시뮬레이션 메서드의 폴리 기대값 스냅샷 알고리즘 성능을 크게 개선했습니다. -
qiskit.providers.aer.StatevectorSimulator및qiskit.providers.aer.UnitarySimulator백엔드 모두에서 게이트 퓨전 회로 최적화(qiskit.providers.aer.QasmSimulator)를 활성화합니다. -
시뮬레이터 결과에서 평균 스냅샷 데이터의 성능을 개선합니다. 이는 다음 확장을 사용하여 확률, 폴리 기대값, 밀도 행렬 스냅샷에 영향을 줍니다:
qiskit.providers.aer.extensions.SnapshotExpectationValueqiskit.providers.aer.extensions.SnapshotProbabilitiesqiskit.providers.aer.extensions.SnapshotDensityMatrix
-
시뮬레이터의 출력을 결과로 이동할 때 행렬의 복사본을 최소화하기 위해 이동 생성자를 추가하고 C++ 행렬 클래스의 메모리 사용량을 개선했습니다.
-
유니티 시뮬레이터의 성능을 개선합니다.
-
QasmSimulator의 "매트릭스_제품_상태" 시뮬레이션 방법에 근사치를 추가하여 MPS의 결합 차원을 제한합니다.근사치에는 두 가지 모드가 있습니다. 둘 다 SVD 알고리즘에 따라 가장 작은 슈미트 계수를 버립니다. 근사 정도를 제어하는 두 가지 매개 변수가 있습니다:
"matrix_product_state_max_bond_dimension"(int): Svd 알고리즘이 끝날 때 유지되는 슈미트 계수 수에 대한 제한을 설정합니다. 이 한도를 초과하는 계수는 폐기됩니다. (기본값: 없음, 즉 결합 차원에 제한이 없음)."matrix_product_state_truncation_threshold"(더블): 제곱의 합이 이 임계값보다 작은 가장 작은 계수를 버립니다. (기본값: 1e-16 ). -
"matrix_product_state"
QasmSimulator시뮬레이션 방법을 사용할 때 측정값 샘플링의 성능을 개선합니다. -
Delay,Phase및SetPhase펄스 지침에 대한 지원을qiskit.providers.aer.PulseSimulator에 추가합니다. -
RHS 함수에 대한 호출을 캐싱하여
qiskit.providers.aer.PulseSimulator의 성능을 개선합니다 -
qiskit.providers.aer.PulseSimulator에서backend_options을 통해 지정할 수 있는 대체 DE 해결 방법을 소개합니다. -
이동 시맨틱을 사용하고 개별 실험의 결과를 최종 결과 오브젝트에 결합할 때 발생하던 불필요한 복사본을 제거하여 시뮬레이터 결과 클래스의 성능을 개선합니다.
-
가능한 경우 이동 시맨틱을 사용하고 벡터 및 행렬 결과를 복사본 없이 Numpy 배열로 이동하여 시뮬레이터 결과의 pybind11 변환 성능을 크게 개선합니다.
-
시뮬레이터용 RNG 엔진을 32비트 메르센 트위스터에서 64비트 메르센 트위스터 엔진으로 변경합니다.
-
AVX2 명령어 집합을 지원하는 시스템에서 SIMD 내재성을 사용하여
qiskit.providers.aer.QasmSimulator및qiskit.providers.aer.StatevectorSimulator의 "상태 벡터" 시뮬레이션 방법의 성능을 개선합니다. AVX2 지원은 런타임에 자동으로 감지되어 활성화됩니다.
업그레이드 주의사항
-
코난 패키지 매니저를 사용하도록 빌드 시스템을 변경합니다. 이 도구는 C++ 소스 코드에 필요한 대부분의 종속성을 처리합니다. 첫 번째 빌드 또는 종속성이 추가되거나 업데이트될 때 필요한 패키지가 Conan 로컬 저장소에 없는 경우 다운로드하기 위해 인터넷 연결이 필요할 수 있습니다.
독립 실행형 버전의 qiskit-aer를 빌드할 때는 먼저 conan을 설치해야 합니다:
pip install conan -
C++ 컨트롤러 클래스에서 트랜스퓔레이션 패스가 처리되는 방식을 변경하여 각 패스를 명시적으로 호출해야 합니다. 이를 통해 각 패스가 언제 호출되어야 하는지, 어떤 매개변수를 사용해야 하는지에 대한 사용자 지정이 가능합니다. 특히 QasmController 시뮬레이션 방법에 따라 게이트 퓨전 최적화 패스에 대한 다양한 파라미터를 설정할 수 있습니다.
-
내부 코드의 단위 변환을 처리하기 위해 디바이스 노이즈 모델 함수에서 사용자 지정
gate_lengths을 지정하려면qiskit.providers.aer.noise.NoiseModel.from_device()에gate_length_unitskwarg를 추가하세요. -
안정화 시뮬레이터 메서드 지원 게이트셋에 제어-Y("cy") 게이트를 추가합니다.
-
Aer의 백엔드에서는 이제 기본적으로 활성화되는 대신 테라의 입력 qobj 객체에 대한 jsonschema 유효성 검사가 선택 사항으로 설정됩니다. 백엔드 오브젝트에 대한
qiskit.providers.aer.QasmSimualtor.run()메서드의validatekwarg를True로 설정하여 qobj의 jsonschema 유효성 검사를 활성화하려면. -
시뮬레이터가 지원하는 명령어, 게이트 및 스냅샷의 유효성을 쉽게 검사할 수 있도록 기본 시뮬레이터 State 클래스에 OpSet 객체를 추가합니다.
-
OpSet 클래스를 리팩터링합니다. OpSet 을 별도의 헤더 파일로 옮기고
std::set::contains및std::algorithm::set_difference을 기반으로contains및difference메서드를 추가했습니다. 이는 OpSet, 에서 제거된 유효하지 않은 유효성 검사 지침을 대체하지만 순서가 뒤바뀝니다. 현재 옵셋에 없는 명령어 대신 현재 옵셋에 없는 다른 명령어 목록을 반환합니다. -
측정 샘플링 최적화를 확인하는 방법을 개선합니다. 메모리 요구 사항, 시뮬레이션 방법 및 최종 실행을 확인하기 위해 시뮬레이션을 여러 번 수행하지 않고 회로 구성 중에 이 작업을 한 번만 수행하면 되므로 비용이 많이 드는 부분입니다.
버그 수정
-
자동으로 선택된 시뮬레이션 방법에서 "확장_안정화"를 제거합니다. 확장 안정기 방법은 정확하지 않으며 사용자가 구성 매개변수를 최적화하는 방법을 알지 못하면 특정 회로에 대해 잘못된 결과를 제공할 수 있으므로 이 방법이 필요합니다.
이제 자동 메서드는 "stabilizer", "density_matrix", "statevector" 메서드 중에서만 선택합니다. 상태 벡터 메서드에 비해 너무 큰 비클리포드 회로가 실행되면 예외가 발생하여 대신 "확장_안정기" 또는 "매트릭스_제품_상태" 메서드를 명시적으로 사용해 볼 수 있음을 제안하는 예외가 발생합니다.
-
경우에 따라 잘못된 결과가 반환되는 문제가 발생하므로 행렬 제품 상태 시뮬레이션 방법에 대한 게이트 융합을 비활성화합니다.
-
qiskit.providers.aer.PulseSimulator에서 잘못된 채널 평가를 유발하는 버그를 수정했습니다. -
qiskit.providers.aer.pulse.system_models.hamiltonian_model.HamiltonianModel클래스의 해밀턴 파싱 에지 케이스에 대한 몇 가지 사소한 버그가 수정되었습니다.
이그니스 0.4.0
Prelude
이번 릴리스의 주요 변경 사항은 무작위 벤치마킹 코드의 리팩터링으로 테라의 업데이트된 클리포드 클래스를 통합하고 qiskit.quantum_info.Clifford 클래스를 통합하고 CNOT-Dihedral 클래스를 개선하기 위한 것입니다.
새 기능
qiskit.ignis.verification.randomized_benchmarking.randomized_benchmarking_seq()함수는 업데이트된 클리포드 클래스를 사용하도록 리팩터링되었습니다Clifford를 사용하여 2큐비트가 넘는 클리포드 시퀀스에서 효율적인 무작위 벤치마킹(RB)이 가능하도록 리팩터링되었습니다. 또한, 모든 2쿼비트 그룹 요소를 저장하는 사전 생성된 피클 파일을 사용하지 않고 널피 배열을 사용하여 CNOT-Dihedral 클래스qiskit.ignis.verification.randomized_benchmarking.CNOTDihedral의 코드를 보다 효율적으로 리팩터링했습니다.qiskit.ignis.verification.randomized_benchmarking.randomized_benchmarking_seq()함수에는 RB 회로를 생성하는 데 사용되는 난수 생성기의 시드를 지정하는 데 사용할 수 있는 새로운 kwargrand_seed함수가 있습니다. 이는 재현 가능한 회로를 만드는 데 유용할 수 있습니다.qiskit.ignis.verification.qv_circuits()함수에는 퀀텀 볼륨 회로를 생성하는 데 사용되는 난수 생성기의 시드를 지정하는 데 사용할 수 있는 새로운 kwargseed함수가 있습니다. 이는 재현 가능한 회로를 만드는 데 유용할 수 있습니다.
업그레이드 주의사항
qiskit.ignis.verification.randomized_benchmarking.randomized_benchmarking_seq()함수는 이제 업데이트된 Clifford 클래스와Clifford와 피클 파일에 저장된 Clifford 및 CNOT-Dihedral 그룹 요소에 대해 미리 생성된 그룹 테이블을 사용하는 대신 업데이트된 CNOT-Dihedral 클래스qiskit.ignis.verification.randomized_benchmarking.CNOTDihedral를 사용하여 출력을 구성합니다. 이로 인해 이전 버전의 출력과 미묘한 차이가 발생할 수 있습니다.- 요구 사항 목록에 새로운 요구 사항인 scikit-learn이 추가되었습니다. 이 종속성은 0.3.0 릴리스에 추가되었지만 해당 릴리스에서 종속성으로 제대로 노출되지 않았습니다.
qiskit.ignis.measurement.discriminator.iq_discriminators모듈을 가져온 경우ImportError으로 연결됩니다. 이제 종속성으로 올바르게 나열되어scikit-learn이 qiskit-ignis와 함께 설치됩니다. qiskit.ignis.verification.qv_circuits()함수는 이제 회로 라이브러리 클래스(QuantumVolume를 사용하여 회로를 처음부터 빌드하는 대신 출력을 구성합니다. 이로 인해 이전 버전의 출력과 미묘한 차이가 발생할 수 있습니다.- 이제 단층 촬영 피터는 320호에서 요청한 대로 단일 결과 대신 결과 개체 목록을 가져올 수도 있습니다.
지원 중단 노트
-
qiskit.ignis.verification.randomized_benchmarking.randomized_benchmarking_seq()함수에 대한 kwarginterleaved_gates은 더 이상 사용되지 않으며 향후 릴리스에서 제거될 예정입니다.interleaved_elem로 대체되었습니다. 도우미 함수qiskit.ignis.verification.randomized_benchmarking.BasicUtils,qiskit.ignis.verification.randomized_benchmarking.CliffordUtils및qiskit.ignis.verification.randomized_benchmarking.DihedralUtils는 더 이상 사용되지 않습니다. 이러한 클래스는 RB에 필요한 그룹 작업을 처리하는qiskit.ignis.verification.randomized_benchmarking.RBgroup으로 대체됩니다.qiskit.ignis.verification.randomized_benchmarking.Clifford클래스는Clifford. -
qiskit.ignis.verification.qv_circuits()함수에 대한 kwargsqr및cr는 더 이상 사용되지 않으며 향후 릴리스에서 제거될 예정입니다. 이 kwarg는 문서화되어 있습니다qiskit.circuit.QuantumRegister와qiskit.circuit.ClassicalRegister를 지정하여 새로운 퀀텀 볼륨 회로를 만드는 대신 생성된 퀀텀 볼륨 회로에서 사용할 수 있습니다. 그러나 매개변수는 실제로 존중되지 않았고 설정 여부에 관계없이 항상 새 레지스터가 생성되었습니다. 이 동작은 변경되지 않으며 이러한 kwarg는 여전히 아무런 영향을 미치지 않지만, 설정한 사용자에게 혼란을 주지 않기 위해 제거하기 전에 더 이상 사용되지 않습니다. -
qiskit.ignis.verification.qv_circuits()함수에 대한qubit_lists매개변수에 큐비트 하위 집합을 목록으로 전달하는 기능은 더 이상 지원되지 않으며 향후 릴리스에서 제거될 예정입니다. 과거에는 디바이스에서 회로를 실행하기 위한 레이아웃을 지정하는 데 사용되었습니다. 즉, 5큐비트 디바이스가 있고 해당 디바이스의 큐비트 1, 3, 4에서 2큐비트 QV 회로를 실행하고 싶다고 가정해 보겠습니다.qubit_lists의 목록 중 하나로[1, 3, 4]을 전달하면 5큐비트 가상 회로가 생성되고 해당 가상 회로의 큐비트 1, 3, 4에 qv가 적용될 것입니다. 그러나 이 기능은 필요하지 않으며 트랜스파일러의initial_layout개념 및 레이아웃 세트에 회로가 포함되었는지 여부와 겹칩니다. 대신 초기 레이아웃을transpile()또는 초기 레이아웃을 설정한execute()을 실행하면 됩니다. 예를 들어 위의 예제를 실행하면 다음과 같이 됩니다:from qiskit import execute from qiskit.ignis.verification import qv_circuits initial_layout = [1, 3, 4] qv_circs, _ = qv_circuits([list(range3)]) execute(qv_circuits, initial_layout=initial_layout)
버그 수정
- py:func:qiskit.ignis.characterization.calibrations.pulse_schedules.drag_schedules 에서 삽입된 측정 펄스의 위치 버그 수정. 수정 #465
아쿠아 0.7.5
새 기능
- ADMMOptimizer에서 CPLEX에 대한 소프트 종속성을 제거했습니다. 이제 ADMMOptimizer에서 사용하는 기본 최적화 도구는 QUBO 문제에 대한 MinimumEigenOptimizer 및 연속 최적화 도구로 SlsqpOptimizer 입니다. CplexOptimizer 을 ADMMOptimizer의 최적화 도구로 계속 사용할 수 있지만 명시적으로 설정해야 합니다.
- 새로운 야후! 금융 제공업체가 생성되었습니다.
- 변환기를 위한 추상 클래스인
QuadraticProgramConverter을 도입했습니다.encode/decode대신 변환기에 대한convert/interpret메소드를 추가했습니다.QuadraticProgram클래스에to_ising및from_ising을 추가했습니다.convert에서name을 제외한 모든 파라미터를 생성자로 이동했습니다. 변환기 매개변수에 대한 세터/게터를 생성했습니다.auto_define_penalty및interpretfor``LinearEqualityToPenalty`` 을 추가했습니다. 이제 변환기의 오류 메시지가 더 많은 정보를 제공합니다. - 해당 SciPy 최적화 방법의 래퍼로 SLSQP 최적화 프로그램
qiskit.optimization.algorithms.SlsqpOptimizer을 추가했습니다. 이것은 고전적인 최적화 도구로, 양자 알고리즘에 의존하지 않으며CobylaOptimizer을 대체하여 사용할 수 있습니다. - 코빌라 옵티마이저는 SLSQP 옵티마이저에 도입된 멀티 스타트 기능을 수용하도록 수정되었습니다. 기본적으로 최적화 도구는 다중 시작 모드에서 실행되지 않습니다.
SummedOp은 수학적으로 더 정확한 동일성 검사를 수행하며,X + X == 2*X및X + Z == Z + X과 같은 표현식은True으로 평가됩니다.
지원 중단 노트
- GSLS 옵티마이저 클래스는
__init__매개 변수max_iter를maxiter로 대체하여 더 이상 사용되지 않습니다. SPSA 최적화 클래스에서__init__매개변수max_trials를maxiter로 대체하여 사용되지 않습니다. 최적화_svm 함수는max_iters매개 변수를maxiter으로 대체하여 더 이상 사용되지 않습니다. ADMMParameters 클래스는__init__매개 변수max_iter를maxiter로 대체하여 더 이상 사용되지 않습니다. qiskit.optimization.converters.QuadraticProgramToIsing및qiskit.optimization.converters.IsingToQuadraticProgram변환 클래스는 더 이상 사용되지 않으며 향후 릴리스에서 제거될 예정입니다. 대신qiskit.optimization.QuadraticProgram대신to_ising()및from_ising()방법을 사용해야 합니다.pprint_as_string메서드(qiskit.optimization.QuadraticProgram)는 더 이상 사용되지 않으며 향후 릴리스에서 제거될 예정입니다. 대신 다음 출력에서.pprint_as_string()을 실행해야 합니다to_docplex()prettyprint메서드(qiskit.optimization.QuadraticProgram)는 더 이상 사용되지 않으며 향후 릴리스에서 제거될 예정입니다. 대신 다음 출력에서.prettyprint()을 실행해야 합니다to_docplex()
버그 수정
- 파이썬 버전 3.8: 에서 변경됨 macOS, 이제 스폰 시작 메서드가 기본값입니다. 포크 시작 방법은 하위 프로세스에서 충돌을 일으킬 수 있으므로 안전하지 않은 것으로 간주해야 합니다. 그러나 P_BFGS는 스폰을 지원하지 않으므로 단일 프로세스로 되돌아갑니다. 자세한 내용은 #1109 <https://github.com/qiskit-community/qiskit-aqua/issues/1109> 를 참조하세요.
CircuitStateFn의 바인딩 매개 변수는is_measurement의 값을 복사하지 않고 항상is_measurement=False로 설정했습니다. 이 문제점이 수정되었습니다.- 이전에는 SummedOp.to_matrix_op가 MatrixOp’s (널 행렬 포함) 목록을 만든 다음 이를 합산하여 단일 MatrixOp 을 반환했습니다. 일부 알고리즘(예: vqe)은 수천 개의 행렬을 합산해야 하므로 행렬 목록을 작성할 때 메모리를 많이 소모합니다. 이 변경 사항에서는 목록이 생성되지 않습니다. 오히려 합계의 각 피연산자는 행렬로 변환되어 누적기에 더해진 후 버려집니다.
- VQE의 백엔드를 statevector에서 qasm_simulator 또는 실제 장치로 변경하면 CircuitSampler 호환되지 않는 재사용으로 인해 오류가 발생했습니다. 사용자가 입력하지 않은 경우 항상 CircuitSampler 을 새로 생성하고 새 기대치를 생성하도록 VQE가 변경되었습니다. 자세한 내용은 #1153 <https://github.com/qiskit-community/qiskit-aqua/issues/1153> 을 참조하세요.
- 거래소 및 위키피디아 금융 제공업체가 콴들 데이터를 올바르게 처리하도록 수정되었습니다. 자세한 내용은 #775 <https://github.com/qiskit-community/qiskit-aqua/issues/775> 을 참조하세요. 금융 제공자 평균 벡터 및 공분산 행렬 계산에서 0으로 나누기 오류를 수정합니다. 자세한 내용은 #781 <https://github.com/qiskit-community/qiskit-aqua/issues/781> 을 참조하세요.
ListOp.combo_fn속성은 다른 연산자 유형으로 변환, 순회, 축소 또는 곱셈과 같은 여러 변환에서 손실되었습니다. 이제 이 속성이 결과 연산자에게 전파됩니다.SummedOp``s and evaluations with the ``CircuitSampler와 같은 일부 연산자 표현식의 평가는 계수를 올바르게 처리하지 않거나 완전히 무시했습니다. E.g.~StateFn(0 * (I + Z)) @ Plus을 평가하면 0이 나오지 않거나~StateFn(I) @ ((Plus + Minus) / sqrt(2))의 정규화에서sqrt(2)의 계수가 누락되었습니다. 이 문제점이 수정되었습니다.OptimizationResult에는 일부 공용 세터와 클래스 변수가 포함되어 있으며Optional. 이 수정은 모든 클래스 변수를 읽기 전용으로 만들어 mypy와 pylint가 유형을 더 효과적으로 검사할 수 있도록 합니다.MinimumEigenOptimizer.solve로 생성된 비트스트링을str으로 표시합니다. 이 수정으로 다른 알고리즘과 마찬가지로 결과가List[float]로 변경되었습니다. 최적화 알고리즘과 관련된 일부 공개 클래스가qiskit.optimization.algorithms의 문서에서 누락되었습니다. 이 수정으로 이러한 모든 클래스가 문서 문자열에 추가되었습니다. 자세한 내용은 #1131 <https://github.com/qiskit-community/qiskit-aqua/issues/1131> 을 참조하세요.OptimizationResult.__init__의 크기가x와variables의 크기가 일치하는지 확인하지 않았습니다(일치해야 합니다). 이 수정은 일치하지 않는 경우 오류를 발생시키는 검사를 추가하고 검사에서 감지된 버그를 수정합니다. 이 수정은 또한test_converters에서OptimizationResult.variable_names및OptimizationResult.variables_dict과 관련된 누락된 단위 테스트를 추가합니다. 자세한 내용은 #1167 <https://github.com/qiskit-community/qiskit-aqua/issues/1167> 을 참조하세요.- 기본 프리미티브의 매개변수를 바인딩하지 않고 계수만 바인딩하는
OperatorStateFn에서 매개변수 바인딩을 수정했습니다. op.eval(other)에서op는OperatorBase유형이며,op와other의 큐비트 수가 같지 않을 때 무의미한 값을 자동으로 반환하는 경우가 있습니다. 이 경우 입력이 유효하지 않으므로 값을 반환하는 대신 오류를 던지는 올바른 동작으로 수정됩니다.VQE의construct_circuit메서드는 이전에OperatorBase유형으로 평가할 기대값을 반환했습니다. 이 기능은construct_expectation으로 이전되었으며construct_circuit은 기대값을 계산하기 위해 평가된 회로 목록을 반환합니다.
IBM Q 제공자 0.8.0
새 기능
IBMQBackend이제 필터링 옵션과 함께 백엔드에 예약 정보를 반환하는 새로운reservations()메서드가 추가되었습니다. 또한, 이제provider.backends.my_reservations()을 사용하여 직접 예약을 조회할 수 있습니다.qiskit.providers.ibmq.job.IBMQJob.result()는 작업이 실패한 경우IBMQJobFailureError예외를 발생시킵니다. 이제 전체 작업이 단일 이유로 실패한 경우 예외 메시지에 작업이 실패한 이유가 포함됩니다.IBMQJob에 새로운 속성client_version이 추가되었고qiskit.result.Result를 통해 검색된 객체qiskit.providers.ibmq.job.IBMQJob.result().client_version는 키가 이름이고 값이 키스킷과 같이 작업을 제출하는 데 사용된 클라이언트의 버전인 딕셔너리입니다.least_busy()함수는 이제 새로운 선택적 매개변수reservation_lookahead를 사용합니다. 지정하거나 기본값으로 설정한 경우 백엔드는 다음n분(n은reservation_lookahead의 값)에 예약이 있는 경우 사용할 수 없는 것으로 간주됩니다. 예를 들어 기본값인 60을 사용하면 다음 60분 내에 예약이 있는 모든 백엔드는 사용할 수 없는 것으로 간주됩니다.ManagedResults이제 관리되는 모든 작업의 결과를 결합하여 단일 객체를 반환하는 새로운combine_results()메서드가 추가되었습니다Result객체를 반환합니다. 이Result객체는 예를 들어qiskit-ignisfitter 메서드에서 사용할 수 있습니다.
업그레이드 주의사항
-
다음 필드의 타임스탬프는 이제 UTC가 아닌 현지 시간으로 표시됩니다:
qiskit.providers.ibmq.IBMQBackend.properties()에서 반환하는 백엔드 속성.qiskit.providers.ibmq.job.IBMQJob.properties()에서 반환하는 백엔드 속성.estimated_start_time및QueueInfo에서estimated_complete_time,qiskit.providers.ibmq.job.IBMQJob.queue_info()로 반환됩니다.date에서Result에서 반환된qiskit.providers.ibmq.job.IBMQJob.result().
또한
qiskit.providers.ibmq.IBMQBackend.properties()의datetime매개변수는 UTC 시간대 정보가 없는 경우 현지 시간으로 예상됩니다. -
websockets8.0 또는 그 이상을 사용하는 경우 Python 3.7 이상이 필요합니다.websockets7.0 Python 3.6 이하에 계속 사용됩니다. -
Windows에서는 이벤트 루프 정책이 기본값
WindowsProactorEventLoopPolicy대신WindowsSelectorEventLoopPolicy으로 설정됩니다. 이렇게 하면qiskit.providers.ibmq.job.IBMQJob.result()메서드가 Windows에서 중단될 수 있는 문제가 해결됩니다. 수정 #691
지원 중단 노트
- IBM 퀀텀 경험 자격 증명을 저장하기 위해
Qconfig.py을 사용하는 것은 더 이상 사용되지 않으며 다음 릴리스에서 제거될 예정입니다. 대신qiskitrc(기본값)을 사용해야 합니다.
버그 수정
- 반환되는 작업 수가 많을 경우
qiskit.providers.ibmq.IBMQBackend.jobs()로의 호출이 중단될 수 있는 문제를 수정합니다. 수정 #674 - 오프라인 상태인 백엔드에 대해 Jupyter에서 오류 맵을 작성할 때
ValueError이 발생하는 문제를 수정했습니다. 수정 #706 qiskit.providers.ibmq.IBMQBackend.jobs()는 이제statuskwarg가'RUNNING'로 설정된 경우 올바른IBMQJob객체 목록을 반환합니다.- 패키지 메타데이터가
qiskit-terra>= 0.14.0 에 대한 종속성을 올바르게 반영하도록 업데이트되었습니다. 이 종속성은 0.7.0 릴리스의 일부로 암시적으로 추가되었지만 패키지 요구 사항에 반영되지 않았기 때문에 이전에는 너무 오래된qiskit-terra버전으로qiskit-ibmq-provider을 설치할 수 있었습니다. 수정 #677