다음을 통해 공유


Azure Quantum의 QIR target 프로필 형식

이 문서에서는 Azure Quantum의 양자 컴퓨팅 공급자에서 사용할 수 있는 다양한 유형의 QIR target 프로필 형식에 대해 설명합니다. QIR target 프로필 형식은 Q# 프로그램에서 사용할 수 target 있는 양자 디바이스의 기능을 정의하는 데 사용됩니다.

Target 프로필 및 해당 제한 사항

양자 디바이스는 여전히 새로운 기술이며 모든 Q# 코드를 실행할 수 있는 것은 아닙니다. 따라서 다른 targets프로그램을 개발할 때 몇 가지 제한 사항을 염두에 두어야 합니다. 현재 Azure Quantum과 QDK는 세 가지 다른 target 프로필을 관리합니다.

  • Unrestricted: 이 프로필은 시뮬레이터의 메모리 제한 또는 물리적 양자 컴퓨터의 큐비트 수 내에서 QIR 프로그램을 실행할 수 있습니다.
  • QIR base: 이 프로필은 큐비트 측정 결과를 사용하여 프로그램 흐름을 제어할 필요가 없는 Q# 프로그램을 실행할 수 있습니다. 이러한 종류의 QPU를 대상으로 하는 Q# 프로그램 내에서 Result 형식의 값은 같음 비교를 지원하지 않습니다.
  • QIR Adaptive RI: 이 프로필에는 큐비트 측정 결과를 사용하여 프로그램 흐름을 제어하는 기능이 제한되어 있습니다. 이러한 종류의 QPU를 대상으로 하는 Q# 프로그램 내에서 작업의 문 내에서 if 조건의 일부로 형식 Result 값을 비교하여 중간 회로 측정을 허용할 수 있습니다.

프로필용 Unrestrictedtarget 애플리케이션 만들기 및 실행

Unrestrictedtarget 프로필은 모든 프로그램을 실행할 수 있습니다. 즉, 기능 제한 없이 Q# 프로그램을 작성할 수 있습니다. Azure Quantum은 이 프로필을 제공하지 target 않습니다. 그러나 QDK에서 제공하는 시뮬레이터에서 Q# 프로그램을 실행할 Unrestricted 수 있습니다.

프로필 구성 Unrestrictedtarget

Visual Studio Code:

  1. 보기 - 명령 팔레트를 선택하고 Q#을 입력합니다. Azure Quantum QIR target 프로필을 설정합니다.> Enter 키를 누릅니다.
  2. 제한 없음을 선택합니다.

Python에서는 메서드를 target 사용하여 qsharp.init 프로필을 설정할 수 있습니다.

qsharp.init(target_profile=qsharp.TargetProfile.Unrestricted) 

프로필용 QIR Basetarget 애플리케이션 만들기 및 실행

QIR Basetarget 프로필은 큐비트 측정 결과를 사용하여 프로그램 흐름을 제어할 수 없다는 제약 조건과 함께 다양한 Q# 애플리케이션을 실행할 수 있습니다. 더 구체적으로, 형식 Result 의 값은 같음 비교를 지원하지 않습니다.

예를 들어 이 작업은 다음에서 실행할 수 없습니다.QIR Basetarget

    operation FlipQubitOnZero() : Unit {
        use q = Qubit();
        if M(q) == Zero {
            X(q);
        }
    }

이 연산을 QIR Basetarget실행하려고 하면 측정 결과(M(q) == Zero)를 사용하여 문으로 계산 흐름을 if 제어하는 비교를 수행하므로 작업이 실패합니다. 문과 else 같은 elif 조건부 분기 유형에도 동일하게 적용됩니다.

프로필 구성 QIR Basetarget

Visual Studio Code:

  1. 보기 - 명령 팔레트를 선택하고 Q#을 입력합니다. Azure Quantum QIR target 프로필을 설정합니다.> Enter 키를 누릅니다.
  2. QIR 베이스를 선택합니다.

Python에서는 메서드를 target 사용하여 qsharp.init 프로필을 설정할 수 있습니다.

qsharp.init(target_profile=qsharp.TargetProfile.Base) 

targets 지원됨

현재 QIR Basetargets Azure Quantum에 사용할 수 있는 항목은 다음과 같습니다.

프로필용 QIR Adaptive RI 애플리케이션 만들기 및 실행 targets

QIR Adaptive RI 프로필 targets 은 몇 가지 제약 조건과 함께 다양한 Q# 애플리케이션을 실행할 수 있습니다. 이 프로필 형식은 프로필에 비해 QIR Base 향상된 것으로 가정하지만 여전히 몇 가지 제한 사항이 적용됩니다.

QIR Adaptive RI 프로필 targets 은 측정 기반 조건부 작업 및 중간 회로 측정을 허용합니다. 즉, 큐비트는 양자 프로그램의 최종 문이 아닌 지점에서 선택적으로 측정할 수 있으며 측정 출력은 다른 작업에 사용할 수 있습니다. 중간 회로 측정을 사용하면 양자 프로그램 전체에서 언제든지 여러 측정을 수행할 수 있습니다. 측정된 큐비트의 양자 정보는 클래식 상태(0 또는 1)로 축소되지만 측정하지 않은 큐비트는 양자 상태로 유지됩니다.

Q#에서 큐비트를 측정할 때 형식 Result 값이 반환됩니다. 조건문에서 이 결과를 사용하려면 조건문에서 직접 비교해야 합니다. 이에 해당하는 조건부 블록에는 return 또는 set 문이 포함되지 않을 수 있습니다.

예를 들어 다음 Q# 코드는 다음에서 허용됩니다.QIR Adaptive RItarget

operation MeasureQubit(q : Qubit) : Result { 
    return M(q); 
}

operation SetToZero(q : Qubit) : Unit {
     if MeasureQubit(q) == One { X(q); }
}

프로필 구성 QIR Adaptive RItarget

Visual Studio Code:

  1. 보기 - 명령 팔레트를 선택하고 Q#을 입력합니다. Azure Quantum QIR target 프로필을 설정합니다.> Enter 키를 누릅니다.
  2. QIR Adaptive RI를 선택합니다.

Python에서는 메서드를 target 사용하여 qsharp.init 프로필을 설정할 수 있습니다.

qsharp.init(target_profile=qsharp.TargetProfile.Adaptive_RI) 

targets 지원됨

현재 QIR Adaptive RItargets Azure Quantum에 사용할 수 있는 항목은 다음과 같습니다.