다음을 통해 공유


Azure Quantum의 다양한 유형의 target 프로필

양자 디바이스는 여전히 새로운 기술이며 모든 Q# 코드를 실행할 수 있는 것은 아닙니다. 따라서 양자 프로그램을 개발할 때 몇 가지 제한 사항을 염두에 두어야 합니다. target 프로필 형식은 Q# 프로그램을 사용하여 target 수 있는 양자 디바이스의 기능, 즉 Azure Quantum에서 사용할 수 있는 현재 양자 디바이스의 기능을 정의하는 데 사용됩니다.

이 문서에서는 Azure Quantum의 다양한 유형의 target 프로필, 해당 제한 사항 및 QDK(Quantum Development Kit)를 사용하여 구성하는 방법에 대해 설명합니다.

대상 프로필 및 해당 제한 사항

현재 Azure Quantum과 QDK는 QIR(양자 중간 표현) 프로그램을 실행하는 기능에 따라 세 가지 target 프로필을 관리합니다.

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

Unrestricted target 프로필에 대한 프로그램 만들기 및 실행

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

프로필 구성 Unrestrictedtarget

Visual Studio Code에서:

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

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

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

QIR Base target 프로필에 대한 프로그램 만들기 및 실행

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

예를 들어 이 작업은 수행할 수 없습니다QIR Basetarget:

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

QIR Base target에서 이 연산을 시도할 경우, 측정 결과(M(q) == Zero)를 사용하여 계산 흐름을 if 문으로 제어하려고 하는 비교가 이루어지므로 작업이 실패합니다. 조건부 분기elifelse 문과 같은 모든 유형에도 동일하게 적용됩니다.

프로필 구성 QIR Basetarget

Visual Studio Code에서:

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

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

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

targets가 QIR Basetarget 프로필에 지원됨

현재 다음 QIR Basetargets Azure Quantum에서 사용할 수 있습니다.

QIR Adaptive RI target 프로필에 대한 프로그램 만들기 및 실행

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#을 입력target 설정합니다. Enter 키를 누릅니다.
  2. QIR Adaptive RI를 선택합니다.

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

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

QIR Adaptive RI target 프로필에 targets이 지원됩니다.

현재 다음 QIR Adaptive RItargets Azure Quantum에서 사용할 수 있습니다.