Skip to main content
IBM Quantum Platform

키스킷 0.15 릴리즈 노트


0.15.0

테라 0.12.0

Prelude

0.12.0 릴리스에는 몇 가지 새로운 기능과 버그 수정이 포함되어 있습니다. 이번 릴리스의 가장 큰 변화는 OpenPulse 에 파라메트릭 펄스 지원이 추가된 것입니다. 펄스를 설명하기 위해 샘플 포인트가 아닌 매개변수를 사용하는 펄스 명령입니다. 0.12.0 Python 에 대한 지원을 포함하는 첫 번째 릴리스입니다 3.8. 또한 업스트림 커뮤니티에서 지원을 중단하면 제거될 Python 3.5 지원 중단의 시작을 알립니다.

새 기능

  • 패스 qiskit.transpiler.passes.CSPLayoutcall_limittime_limit 라는 두 개의 새로운 매개 변수로 확장되었습니다. 이 옵션을 사용하면 패스의 실행 기간을 제한할 수 있습니다. call_limit 옵션은 역추적 솔버의 재귀 함수가 호출될 수 있는 횟수를 제한합니다. 마찬가지로 time_limit 은 솔버를 실행할 수 있는 시간(초)을 제한합니다. 기본값은 각각 1000 호출 및 10 초입니다.

  • qiskit.pulse.Acquire 이제 단일 큐비트에 적용할 수 있습니다. 이제 모든 작업이 단일 채널에 적용되므로 펄스 프로그래밍이 더욱 일관되고 추론하기 쉬워집니다. 예를 들어,

    acquire = Acquire(duration=10)
    schedule = Schedule()
    schedule.insert(60, acquire(AcquireChannel(0), MemorySlot(0), RegisterSlot(0)))
    schedule.insert(60, acquire(AcquireChannel(1), MemorySlot(1), RegisterSlot(1)))
  • 새로운 메서드 qiskit.transpiler.CouplingMap.draw() 에 새로운 메서드 qiskit.transpiler.CouplingMap 에 새로운 메서드가 추가되어 커플링 맵 그래프에서 그래프 시각화 이미지를 생성할 수 있습니다. 예를 들어,

    from qiskit.transpiler import CouplingMap
    
    coupling_map = CouplingMap(
        [[0, 1], [1, 0], [1, 2], [1, 3], [2, 1], [3, 1], [3, 4], [4, 3]])
    coupling_map.draw()
  • 파라메트릭 펄스가 OpenPulse 에 추가되었습니다. 이는 백엔드에서 매개변수화되고 이해되는 펄스 명령입니다. 임의의 펄스 모양은 SamplePulse 명령으로 계속 지원됩니다. 새로 지원되는 펄스 클래스는 다음과 같습니다:

    • qiskit.pulse.ConstantPulse
    • qiskit.pulse.Drag
    • qiskit.pulse.Gaussian
    • qiskit.pulse.GaussianSquare

    다른 펄스 명령과 마찬가지로 사용할 수 있습니다. 예:

    from qiskit.pulse import (Schedule, Gaussian, Drag, ConstantPulse,
                              GaussianSquare)
    
    sched = Schedule(name='parametric_demo')
    sched += Gaussian(duration=25, sigma=4, amp=0.5j)(DriveChannel(0))
    sched += Drag(duration=25, amp=0.1, sigma=5, beta=4)(DriveChannel(1))
    sched += ConstantPulse(duration=25, amp=0.3+0.1j)(DriveChannel(1))
    sched += GaussianSquare(duration=1500, amp=0.2, sigma=8,
                            width=140)(MeasureChannel(0)) << sched.duration

    결과 일정은 qiskit.pulse.pulse_lib 을 사용하여 구축한 SamplePulse 일정과 유사하지만 파형 샘플링은 백엔드에서 수행됩니다. 메서드 qiskit.pulse.Schedule.draw() 를 평소처럼 사용할 수 있습니다. 그러나 명령은 qiskit.pulse.ParametricPulse.get_sample_pulse() 메서드를 사용하여 SamplePulse 로 변환되므로 표시되는 펄스가 백엔드에서와 같은 방식으로 연속 함수를 샘플링하지 않을 수 있습니다.

    이 기능은 모든 백엔드에 대한 펄스 프로그램을 구성하는 데 사용할 수 있지만, 백엔드가 파라메트릭 펄스를 지원하지 않는 경우 펄스는 SamplePulse 개체로 변환됩니다. 이를 지원하는 백엔드에는 다음과 같은 새로운 속성이 추가됩니다:

    backend.configuration().parametric_pulses: List[str]
    # e.g. ['gaussian', 'drag', 'constant']

    백엔드가 키스킷에 정의된 모든 파라메트릭 펄스를 지원할 필요는 없다는 점에 유의하세요.

    백엔드가 파라메트릭 펄스를 지원하고 펄스 스케줄이 이를 통해 빌드되면 조립된 Qobj의 크기가 훨씬 작아집니다. 파라메트릭 펄스로만 빌드된 PulseQobj 의 크기는 명령어 수에만 의존하는 반면, 그렇지 않고 빌드된 PulseQobj 의 크기는 명령어 지속 시간에 따라 커집니다(모든 샘플에 값을 지정해야 하므로).

  • qiskit.scheduler 모듈에 유틸리티 기능( qiskit.scheduler.measure()qiskit.scheduler.measure_all() )을 추가했습니다. 이 함수는 큐비트를 측정하는 qiskit.pulse.Schedule 객체를 반환하며, OpenPulse 을 사용하여 큐비트를 측정합니다. 예를 들어,

    from qiskit.scheduler import measure, measure_all
    
    measure_q0_schedule = measure(qubits=[0], backend=backend)
    measure_all_schedule = measure_all(backend)
    measure_custom_schedule = measure(qubits=[0],
                                      inst_map=backend.defaults().instruction_schedule_map,
                                      meas_map=[[0]],
                                      qubit_mem_slots={0: 1})
  • Pulse qiskit.pulse.Schedule 객체는 이제 간단한 일정의 경우 유효한 Python 표현식으로 더 잘 표현됩니다.

  • 메서드의 qiskit.circuit.QuantumCircuit 메서드 qiskit.circuit.QuantumCircuit.measure_active(), qiskit.circuit.QuantumCircuit.measure_all()qiskit.circuit.QuantumCircuit.remove_final_measurements() 메서드가 추가되었습니다 inplace. inplaceFalse 으로 설정하면 이 함수는 회로의 수정된 사본을 반환합니다. 이는 회로 객체를 제자리에서 수정하고 아무것도 반환하지 않는 기본 동작과 다릅니다.

  • 클래스에 몇 가지 새로운 생성자 메서드가 추가되었습니다 qiskit.transpiler.CouplingMap 클래스에 기본 큐비트 커플링 그래프로 오브젝트를 빌드하기 위한 몇 가지 새로운 생성자 메서드가 추가되었습니다. 새로운 생성자 메서드는 다음과 같습니다:

    예를 들어, 새로운 생성자를 사용하여 선형 체인으로 연결된 5개의 큐비트로 구성된 커플링 맵을 얻으려면 이제 실행할 수 있습니다:

    from qiskit.transpiler import CouplingMap
    
    coupling_map = CouplingMap.from_line(5)
    coupling_map.draw()
  • 새로운 패스 소개 qiskit.transpiler.passes.CrosstalkAdaptiveSchedule. 이 패스는 크로스토크 노이즈가 프로그램에 미치는 영향을 줄이는 것을 목표로 합니다. 백엔드의 크로스토크 특성화 데이터를 사용하여 게이트를 예약합니다. 한 쌍의 게이트에 높은 누화가 있는 경우 배리어를 사용하여 직렬화합니다. 순진한 직렬화는 비일관성 오류가 발생하기 때문에 해롭습니다. 따라서 이 패스는 SMT 최적화 접근 방식을 사용하여 크로스토크와 디코히어런스 오류의 영향을 최소화하는 스케줄을 계산합니다.

    패스는 이미 백엔드에 트랜스파일된 회로, 즉 회로를 물리적 큐비트로 표현하고 필요한 경우 스왑 게이트를 삽입하여 CNOT로 분해한 회로를 입력으로 받습니다. 이 회로 및 누화 특성화 데이터를 사용하여 Z3 최적화를 통해 새로운 예약 회로를 출력으로 구성합니다.

    서킷에서 패스를 사용하려면

    dag = circuit_to_dag(circ)
    pass_ = CrosstalkAdaptiveSchedule(backend_prop, crosstalk_prop)
    scheduled_dag = pass_.run(dag)
    scheduled_circ = dag_to_circuit(scheduled_dag)

    backend_prop 는 대상 백엔드의 qiskit.providers.models.BackendProperties 객체입니다. crosstalk_prop 는 조건부 오류율을 지정하는 딕셔너리입니다. 두 개의 게이트 g1g2 의 경우 crosstalk_prop[g1][g2]g1g2 가 동시에 실행될 때 g1 의 조건부 오류율을 지정합니다. crosstalk_prop 를 생성하는 메서드는 향후 qiskit-ignis 릴리스에 추가될 예정입니다. 그때까지는 디바이스의 크로스토크 속성을 이미 알고 있거나 직접 디바이스 특성화 실험을 직접 작성해야 합니다.

  • 최적화 레벨 1에 대한 사전 설정 패스 관리자에서, qiskit.transpiler.preset_passmanagers.level_1_pass_manager() 만약 qiskit.transpiler.passes.TrivialLayout 레이아웃 패스가 특정 회로와 완벽하게 일치하지 않으면 qiskit.transpiler.passes.DenseLayout 레이아웃 패스가 대신 사용됩니다.

  • 새로운 추상 메서드 qiskit.quantum_info.Operator.dot() 를 추상 BaseOperator 클래스에 추가하여 해당 추상 클래스의 모든 구현에 포함되도록 했습니다 qiskit.quantum_info.OperatorQuantumChannel (예 qiskit.quantum_info.Choi) 객체를 포함합니다. 이 메서드는 올바른 연산자 곱셈 a.dot(b) =ab= a \cdot b 을 반환합니다. 이것은 연산자 qiskit.quantum_info.Operator.compose()front 메서드를 True 으로 설정하여 호출하는 것과 같습니다.

  • 추가 qiskit.quantum_info.average_gate_fidelity()qiskit.quantum_info.gate_error() 함수를 추가하고 qiskit.quantum_info 모듈에 추가 및 기능 qiskit.quantum_info.OperatorQuantumChannel (예:, qiskit.quantum_info.Choi) 객체를 지원합니다.

  • 함수를 추가했습니다 qiskit.quantum_info.partial_trace() 함수를 qiskit.quantum_info 와 함께 작동하는 qiskit.quantum_info.Statevectorqiskit.quantum_info.DensityMatrix 양자 상태 클래스. 예를 들어,

    from qiskit.quantum_info.states import Statevector
    from qiskit.quantum_info.states import DensityMatrix
    from qiskit.quantum_info.states import partial_trace
    
    psi = Statevector.from_label('10+')
    partial_trace(psi, [0, 1])
    rho = DensityMatrix.from_label('10+')
    partial_trace(rho, [0, 1])
  • 언제 qiskit.circuit.QuantumCircuit.draw() 또는 qiskit.visualization.circuit_drawer() 를 True(기본값)로 설정한 with_layout kwarg와 함께 호출하면 출력 시각화는 이제 물리적 큐비트를 정수로 표시하여 가상 큐비트와 명확하게 구분합니다.

    예를 들면 다음과 같습니다.

    from qiskit import QuantumCircuit
    from qiskit import transpile
    from qiskit.test.mock import FakeVigo
    
    qc = QuantumCircuit(3)
    qc.h(0)
    qc.cx(0, 1)
    qc.cx(0, 2)
    transpiled_qc = transpile(qc, FakeVigo())
    transpiled_qc.draw(output='mpl')
  • 모듈에 새로운 상태 측정 함수를 추가했습니다 qiskit.quantum_info 모듈에 새로운 상태 측정 함수를 추가했습니다: qiskit.quantum_info.entropy(), qiskit.quantum_info.mutual_information(), qiskit.quantum_info.concurrence()qiskit.quantum_info.entanglement_of_formation(). 이러한 기능은 qiskit.quantum_info.Statevectorqiskit.quantum_info.DensityMatrix 클래스와 함께 작동합니다.

  • 단일 큐비트 게이트의 분해 방법은 qiskit.quantum_info.synthesis.one_qubit_decompose.OneQubitEulerDecomposer 의 단일 비트 게이트 분해 방법은 이제 Z,X,Z 축을 중심으로 세 번의 회전이 특징인 'ZXZ' 기반도 포함하도록 확장되었습니다. 이제 일반 2x2 연산자를 다음과 같은 기수로 분해할 수 있습니다: U3, U1X, ZYZ, ZXZ, XYX, ZXZ.

알려진 문제점

  • 를 사용하는 함수 실행 qiskit.tools.parallel_map() (예: qiskit.execute.execute(), qiskit.compiler.transpile()qiskit.transpiler.PassManager.run()if __name__ == '__main__': )를 사용하는 함수는 Python 3.8 에서 MacOS 블록 외부에서 실행되는 스크립트에서 호출할 때 작동하지 않을 수 있습니다. 다른 환경은 이 문제의 영향을 받지 않습니다. 이는 병렬 프로세스가 Python 3.8 에서 MacOS 로 시작되는 방식이 변경되었기 때문입니다. parallel_map() 를 직접 호출하는 스크립트에서 RuntimeError 또는 AttributeError 이 발생하거나 Python 3.8 에서 내부적으로 이를 사용하는 함수를 호출할 때 MacOS 안에 스크립트 호출을 포함하면 if __name__ == '__main__': 이 문제를 해결할 수 있습니다. 예를 들어,

    from qiskit import QuantumCircuit, QiskitError
    from qiskit import execute, BasicAer
    
    qc1 = QuantumCircuit(2, 2)
    qc1.h(0)
    qc1.cx(0, 1)
    qc1.measure([0,1], [0,1])
    # making another circuit: superpositions
    qc2 = QuantumCircuit(2, 2)
    qc2.h([0,1])
    qc2.measure([0,1], [0,1])
    execute([qc1, qc2], BasicAer.get_backend('qasm_simulator'))

    는 다음과 같이 변경되어야 합니다.

    from qiskit import QuantumCircuit, QiskitError
    from qiskit import execute, BasicAer
    
    def main():
        qc1 = QuantumCircuit(2, 2)
        qc1.h(0)
        qc1.cx(0, 1)
        qc1.measure([0,1], [0,1])
        # making another circuit: superpositions
        qc2 = QuantumCircuit(2, 2)
        qc2.h([0,1])
        qc2.measure([0,1], [0,1])
        execute([qc1, qc2], BasicAer.get_backend('qasm_simulator'))
    
    if __name__ == '__main__':
        main()

    Python 3.8 에서 오류가 발생하면 MacOS.

업그레이드 주의사항

  • Pulse 백엔드의 구성 개체에 대한 rep_time 매개변수 값은 이제 마이크로초가 아닌 초 단위로 표시됩니다. PulseBackendConfiguration 객체가 처음 초기화될 때 사용자에게 이를 알리는 경고가 한 번 발생합니다.

  • rep_time 인수는 qiskit.compiler.assemble() 의 인수는 이제 마이크로초가 아닌 초 단위의 값을 받습니다. 이것은 다른 모든 것을 펄스 단위로 만들기 위해 수행되었습니다. rep_time 값을 전달한 경우 이 변경 사항을 고려하여 값을 업데이트해야 합니다.

  • 객체의 base_gate 속성 값이 qiskit.circuit.ControlledGate 객체의 속성 값이 베이스 게이트의 클래스에서 베이스 게이트 클래스의 인스턴스로 변경되었습니다.

  • base_gate_name 속성이 제거되었습니다 qiskit.circuit.ControlledGate 가 제거되었으므로 객체에서 base_gate.name 에 액세스하여 기본 게이트의 이름을 가져올 수 있습니다. 예를 들어,

    from qiskit import QuantumCircuit
    from qiskit.extensions import HGate
    
    qc = QuantumCircuit(3)
    cch_gate = HGate().control(2)
    base_gate_name = cch_gate.base_gate.name
  • 변경 qiskit.quantum_info.Operator 매직 메서드를 변경하여 __mul__ (연산 왼쪽에 정의된 경우 파이썬의 곱셈 연산에 의해 실행됨)이 오른쪽 행렬 곱셈을 구현하도록 했습니다(즉. qiskit.quantum_info.Operator.dot()), 와 __rmul__ (왼쪽에 __mul__ 이 정의되어 있지 않으면 오른쪽에서 파이썬의 곱셈 연산이 실행됨)은 스칼라 곱셈을 구현합니다(예: qiskit.quantum_info.Operator.multiply()). 이전에는 두 가지 방법 모두 스칼라 곱셈을 구현했습니다.

  • 함수의 두 번째 인수인 qiskit.quantum_info.process_fidelity() 함수의 두 번째 인수인 target 는 이제 선택 사항입니다. 대상 유니티를 지정하지 않으면 ID 연산자가 있는 입력 채널의 프로세스 충실도가 반환됩니다.

  • qiskit.compiler.assemble() 는 이제 백엔드에 대해 구성된 max_shots 값을 존중합니다. 백엔드 구성에 설정된 최대 촬영 횟수를 초과하는 shots kwarg 값이 지정되면 이제 함수는 QiskitError 예외를 발생시킵니다. 또한 샷 인수가 제공되지 않으면 기본값은 1024(이전 동작) 또는 백엔드의 max_shots 중 낮은 값으로 설정됩니다.

지원 중단 노트

  • 에 게이트를 추가하는 방법 qiskit.circuit.QuantumCircuit 에 축약된 키워드 인수를 사용하는 방법(예: ctl, tgt)은 키워드 인수가 더 설명하기 쉽도록 이름이 변경되었습니다(예: control_qubit, target_qubit). 이전 이름은 더 이상 사용되지 않습니다. QuantumCircuit 메소드의 이전 및 새 호출 서명이 포함된 표가 아래에 포함되어 있습니다.

    지시사항 유형
    이전 서명
    새 서명
    qiskit.extensions.HGateqc.h(q)qc.h(qubit)
    qiskit.extensions.CHGateqc.ch(ctl, tgt)qc.ch((control_qubit, target_qubit))
    qiskit.extensions.IdGateqc.iden(q)qc.iden(qubit)
    qiskit.extensions.RGateqc.iden(q)qc.iden(qubit)
    qiskit.extensions.RGateqc.r(theta, phi, q)qc.r(theta, phi, qubit)
    qiskit.extensions.RXGateqc.rx(theta, q)qc.rx(theta, qubit)
    qiskit.extensions.CrxGateqc.crx(theta, ctl, tgt)qc.crx(theta, control_qubit, target_qubit)
    qiskit.extensions.RYGateqc.ry(theta, q)qc.ry(theta, qubit)
    qiskit.extensions.CryGateqc.cry(theta, ctl, tgt)qc.cry(theta, control_qubit, target_qubit)
    qiskit.extensions.RZGateqc.rz(phi, q)qc.rz(phi, qubit)
    qiskit.extensions.CrzGateqc.crz(theta, ctl, tgt)qc.crz(theta, control_qubit, target_qubit)
    qiskit.extensions.SGateqc.s(q)qc.s(qubit)
    qiskit.extensions.SdgGateqc.sdg(q)qc.sdg(qubit)
    qiskit.extensions.FredkinGateqc.cswap(ctl, tgt1, tgt2)qc.cswap(control_qubit, target_qubit1, target_qubit2)
    qiskit.extensions.TGateqc.t(q)qc.t(qubit)
    qiskit.extensions.TdgGateqc.tdg(q)qc.tdg(qubit)
    qiskit.extensions.U1Gateqc.u1(theta, q)qc.u1(theta, qubit)
    qiskit.extensions.Cu1Gateqc.cu1(theta, ctl, tgt)qc.cu1(theta, control_qubit, target_qubit)
    qiskit.extensions.U2Gateqc.u2(phi, lam, q)qc.u2(phi, lam, qubit)
    qiskit.extensions.U3Gateqc.u3(theta, phi, lam, q)qc.u3(theta, phi, lam, qubit)
    qiskit.extensions.Cu3Gateqc.cu3(theta, phi, lam, ctl, tgt)qc.cu3(theta, phi, lam, control_qubit, target_qubit)
    qiskit.extensions.XGateqc.x(q)qc.x(qubit)
    qiskit.extensions.CnotGateqc.cx(ctl, tgt)qc.cx(control_qubit, target_qubit)
    qiskit.extensions.ToffoliGateqc.ccx(ctl1, ctl2, tgt)qc.ccx(control_qubit1, control_qubit2, target_qubit)
    qiskit.extensions.YGateqc.y(q)qc.y(qubit)
    qiskit.extensions.CyGateqc.cy(ctl, tgt)qc.cy(control_qubit, target_qubit)
    qiskit.extensions.ZGateqc.z(q)qc.z(qubit)
    qiskit.extensions.CzGateqc.cz(ctl, tgt)qc.cz(control_qubit, target_qubit)
  • 다중 쿼비트에서 qiskit.pulse.Acquire 실행은 더 이상 사용되지 않으며 향후 릴리스에서 제거될 예정입니다. 또한 qiskit.pulse.AcquireInstruction 매개변수 mem_slotsreg_slots 는 더 이상 사용되지 않습니다. 대신 reg_slotmem_slot 을 사용해야 합니다.

  • 속성의 qiskit.providers.models.PulseDefaults 클래스 circuit_instruction_map 의 속성은 더 이상 사용되지 않으며 향후 릴리스에서 제거될 예정입니다. 대신 새 속성 instruction_schedule_map 을 사용해야 합니다. 이는 속성 값의 유형인 InstructionScheduleMap 과 일치시키기 위해 수행되었습니다.

  • qiskit.pulse.PersistentValue 명령은 더 이상 사용되지 않으며 향후 릴리스에서 제거될 예정입니다. qiskit.pulse.ConstantPulse 명령(새로운 파라메트릭 펄스 중 하나)으로도 비슷한 기능을 수행할 수 있습니다. 다음을 비교하세요:

    from qiskit.pulse import Schedule, PersistentValue, ConstantPulse, \
                             DriveChannel
    
    # deprecated implementation
    sched_w_pv = Schedule()
    sched_w_pv += PersistentValue(value=0.5)(DriveChannel(0))
    sched_w_pv += PersistentValue(value=0)(DriveChannel(0)) << 10
    
    # preferred implementation
    sched_w_const = Schedule()
    sched_w_const += ConstantPulse(duration=10, amp=0.5)(DriveChannel(0))
  • Python 3.5 지원은 더 이상 사용되지 않습니다. 업스트림 Python 커뮤니티의 해당 버전에 대한 수명 종료일인 2020년 9월 13일 이후 첫 번째 릴리스에서 지원이 제거됩니다.

  • require_cptp kwarg의 qiskit.quantum_info.process_fidelity() 함수는 더 이상 사용되지 않으며 향후 릴리스에서 제거될 예정입니다. require_cprequire_tp 두 개의 별도 kwarg로 대체됩니다.

  • scale 파라미터 설정 qiskit.circuit.QuantumCircuit.draw()qiskit.visualization.circuit_drawer() 를 첫 번째 위치 인수로 설정하는 것은 더 이상 사용되지 않으며 향후 릴리스에서 제거될 예정입니다. 대신 scale 을 키워드 인수로 사용해야 합니다.

  • qiskit.tools.qi.qi 모듈은 더 이상 사용되지 않으며 향후 릴리스에서 제거될 예정입니다. 모듈의 레거시 함수는 모두 모듈의 함수 및 클래스로 대체되었습니다 qiskit.quantum_info 모듈의 함수와 클래스로 대체되었습니다. 더 이상 사용되지 않는 기능과 대체 기능에 대한 표는 다음과 같습니다:

    더 이상 사용되지 않음
    대체
    qiskit.tools.partial_trace()qiskit.quantum_info.partial_trace()
    qiskit.tools.choi_to_pauli()qiskit.quantum_info.Choi 그리고 quantum_info.PTM
    qiskit.tools.chop()numpy.round
    qiskit.tools.qi.qi.outernumpy.outer
    qiskit.tools.concurrence()qiskit.quantum_info.concurrence()
    qiskit.tools.shannon_entropy()qiskit.quantum_info.shannon_entropy()
    qiskit.tools.entropy()qiskit.quantum_info.entropy()
    qiskit.tools.mutual_information()qiskit.quantum_info.mutual_information()
    qiskit.tools.entanglement_of_formation()qiskit.quantum_info.entanglement_of_formation()
    qiskit.tools.is_pos_def()quantum_info.operators.predicates.is_positive_semidefinite_matrix
  • qiskit.quantum_info.states.states 모듈은 더 이상 사용되지 않으며 향후 릴리스에서 제거될 예정입니다. 모듈의 레거시 함수는 모두 모듈의 함수 및 클래스로 대체되었습니다 qiskit.quantum_info 모듈의 함수와 클래스로 대체되었습니다.

    더 이상 사용되지 않음
    대체
    qiskit.quantum_info.states.states.basis_stateqiskit.quantum_info.Statevector.from_label()
    qiskit.quantum_info.states.states.projectorqiskit.quantum_info.DensityMatrix
  • SchedulePulse 객체에 대한 draw() 메서드의 scaling 매개 변수는 더 이상 사용되지 않으며 향후 릴리스에서 제거될 예정입니다. 대신 새로운 scale 매개 변수를 사용해야 합니다. 이는 펄스 도면과 회로 도면 간의 일관된 논증을 위해 수행되었습니다. 예를 들어,

    #The consistency in parameters is seen below
    #For circuits
    circuit = QuantumCircuit()
    circuit.draw(scale=0.2)
    #For pulses
    pulse = SamplePulse()
    pulse.draw(scale=0.2)
    #For schedules
    schedule = Schedule()
    schedule.draw(scale=0.2)

버그 수정

기타 참고사항

  • 트랜스파일러 패스는 qiskit.transpiler.passes 디렉터리에 있는 트랜스파일러 패스를 기능별로 더 잘 분류하기 위해 하위 디렉터리로 정리했습니다. 여전히 qiskit.transpiler.passes 네임스페이스에서 모두 액세스할 수 있습니다.

에어 0.4.0

추가됨

  • IBMQ 백엔드용 기본 디바이스 노이즈 모델 구축을 위한 NoiseModel.from_backend 추가(#569)
  • QasmSimulator, StatevectorSimulator, UnitarySimulator 에 멀티 GPU 지원 시뮬레이션 메서드를 추가했습니다. Qasm 시뮬레이터에는 밀도 행렬 및 상태 벡터 메서드의 GPU 버전이 있으며 backend_options 에서 "method": "density_matrix_gpu" 또는 "method": "statevector_gpu" 을 사용하여 액세스할 수 있습니다. 상태 벡터 시뮬레이터 GPU 메서드는 "method": "statevector_gpu" 를 사용하여 액세스할 수 있습니다. 단일 시뮬레이터 GPU 방식은 "method": "unitary_gpu" 을 사용하여 액세스할 수 있습니다. 이러한 백엔드는 CUDA를 사용하며 NVidia GPU가 필요합니다(#544)
  • PulseSimulator 백엔드 추가(#542)
  • PulseSimulator (#496, #493)에서 사용할 모델을 나타내는 PulseSystemModelHamiltonianModel 클래스를 추가했습니다
  • 매개변수 목록에서 PulseSystemModel 객체를 생성하는 duffing_model_generators 추가(#516)
  • ODE 함수 솔버를 C++로 마이그레이션(#442, #350)
  • 높은 수준의 펄스 시뮬레이터 테스트 추가(#379)
  • CMake BLAS_LIB_PATH 플래그를 사용하여 BLAS 라이브러리를 찾을 경로를 설정합니다(#543)

변경됨

  • 시뮬레이터 소스 코드를 정리하기 위해 src 디렉터리의 구조를 변경했습니다. 시뮬레이터 컨트롤러 헤더는 src/controllers 로 이동했으며 시뮬레이터 메서드 상태 헤더는 src/simulators (#544)에 있습니다
  • 여러 함수의 위치를 이동했습니다(#568): * qiskit.provider.aer.noise.errors 의 콘텐츠를 qiskit.providers.noise 모듈로 이동 * qiskit.provider.aer.noise.utils 의 콘텐츠를 qiskit.provider.aer.utils 모듈로 이동했습니다.
  • 기본적으로 회로(퓨전)에서 연속된 게이트를 집계하는 최적화를 활성화했습니다(#579).

더 이상 사용되지 않음

  • 사용되지 않는 utils.qobj_utils 함수(#568)
  • 사용 중단됨 qiskit.providers.aer.noise.device.basic_device_noise_model. NoiseModel.from_backend 메서드(#569)로 대체되었습니다

제거됨

  • 0.3 (#568)에서 사용되지 않는 NoiseModel.as_dict, QuantumError.as_dict, ReadoutError.as_dict, QuantumError.kron 메서드를 제거했습니다.

이그니스 0.2

변경 없음

아쿠아 0.6

변경 없음

IBM Q 제공자 0.4.6

추가됨

  • IBMQBackend 에 몇 가지 새로운 메서드가 추가되었습니다:

    • wait_for_final_state() 블록을 차단합니다. 피드백을 제공하기 위해 모든 쿼리 후에 호출하는 콜백 함수를 사용합니다.
    • active_jobs() 는 백엔드에 제출된 작업 중 현재 미완료 상태인 작업을 반환합니다.
    • job_limit() 는 백엔드의 작업 한도를 반환합니다.
    • remaining_jobs_count() 는 작업 제한에 도달하기 전에 백엔드에 제출할 수 있는 작업 수를 반환합니다.
  • QueueInfo 에는 이제 대기열 정보의 형식이 지정된 문자열을 반환하는 새로운 format() 메서드가 추가되었습니다.

  • IBMQJob 에는 이제 세 가지 새로운 메서드가 추가되었습니다: done(), running(), cancelled() 으로 작업 상태를 표시하는 데 사용됩니다.

  • qiskit.providers.ibmq.ibmqbackend.IBMQBackend.run() 이제 선택적 job_tags 매개변수를 허용합니다. 지정하면 job_tag가 작업에 할당되며, 나중에 qiskit.providers.ibmq.ibmqbackend.IBMQBackend.jobs() 에서 필터로 사용할 수 있습니다.

  • IBMQJobManager 에는 이제 작업 세트 ID를 사용하여 이전에 제출한 작업 세트를 검색할 수 있는 새로운 메서드 retrieve_job_set() 가 추가되었습니다.

변경됨

  • Exception 계층 구조가 보다 전문화된 클래스로 세분화되었습니다. 그러나 상위 예외(예: IBMQAccountError)는 계속 잡을 수 있습니다. 또한 예외 클래스 IBMQApiUrlErrorIBMQAccountCredentialsInvalidUrlIBMQAccountCredentialsInvalidToken 로 대체되었습니다.

더 이상 사용되지 않음

  • 프로토콜이 없는 프록시 URL 사용(예: http://) 은 최근 Python 변경으로 인해 더 이상 사용되지 않습니다.
이 페이지가 도움이 되었습니까?
GitHub에서 버그, 오타를 보고하거나 컨텐츠를 요청하십시오.