Azure Quantum의 대상 프로필 유형

이 문서에서는 Azure Quantum의 target 양자 컴퓨팅 공급자에서 사용할 수 있는 다양한 유형의 프로필 형식에 대해 설명합니다. 지금은 이 분야의 발전 초기 단계이기 때문에 양자 디바이스에서 실행되는 프로그램에 몇 가지 제한 사항과 요구 사항이 있습니다.

QPU(양자 처리 단위): 다양한 프로필 및 해당 제한 사항

QPU(양자 처리 장치)는 양자 알고리즘을 계산하기 위해 조작할 수 있는 상호 연결된 다양한 큐비트가 있는 물리적 또는 시뮬레이션된 프로세서입니다. 양자 컴퓨터 또는 양자 시뮬레이터의 핵심 구성 요소입니다.

양자 디바이스는 아직 생겨난 지 얼마 안 된 기술이며, 모든 디바이스가 모든 Q# 코드를 실행할 수 있는 것은 아닙니다. 따라서 다른 targets에 대한 프로그램을 개발할 때 몇 가지 제한 사항을 염두에 두어야 합니다. 현재 Azure Quantum 및 QDK는 QPU에 대해 3개의 서로 다른 프로필을 관리합니다.

  • Full: 이 프로필은 시뮬레이터의 메모리 제한 또는 물리적 양자 컴퓨터의 큐비트 수 내에서 Q# 프로그램을 실행할 수 있습니다.
  • No Control Flow: 이 프로필은 큐비트 측정 결과를 사용하여 프로그램 흐름을 제어할 필요가 없는 Q# 프로그램을 실행할 수 있습니다. 이러한 종류의 QPU에 대한 Q# 프로그램 target내에서 형식 Result 의 값은 같음 비교를 지원하지 않습니다.
  • Basic Measurement Feedback: 이 프로필은 큐비트 측정 결과를 사용하여 프로그램 흐름을 제어하는 기능이 제한되어 있습니다. 이러한 종류의 QPU에 대한 Q# 프로그램 target내에서 작업의 문 내에서 if 조건의 일부로 형식 Result 값을 비교하여 중간 회로 측정을 허용할 수 있습니다. 이에 해당하는 조건부 블록에는 return 또는 set 문이 포함되지 않을 수 있습니다.

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

Full 프로필 targets 은 Q# 프로그램을 실행할 수 있습니다. 즉, 기능 제한 없이 프로그램을 작성할 수 있습니다. Azure Quantum은 아직 이 프로필을 제공하지 target 않습니다.

프로필용 No Control Flow 애플리케이션 만들기 및 실행 targets

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

예를 들어 이 작업은 에서 No Control Flowtarget실행할 수 없습니다.

    operation SetQubitState(desired : Result, q : Qubit) : Result {
        if (desired != M(q)) {
            X(q);
        }
    }

에서 No Control Flowtarget 이 작업을 실행하려고 하면 문을 사용하여 계산 흐름을 if 제어하기 위해 두 결과(desired != M(q))의 비교를 평가하기 때문에 실패합니다. 이는 및 문과 else 같은 elif 모든 유형의 조건부 분기에 적용할 수 있습니다.

참고

현재는 결과를 사용하여 프로그램 흐름을 제어하지 않더라도 에서 No Control Flowtargets측정된 큐비트에 작업을 적용하는 양자 프로그램을 제출할 수 없습니다. 즉, No Control Flowtargets 중간 회로 측정을 허용하지 않습니다.

예를 들어 다음 코드는 에서 실행할 수 없습니다.No Control Flowtarget

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

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

현재 No Control Flowtargets Azure Quantum에 사용할 수 있습니다.

프로필용 Basic Measurement Feedback 애플리케이션 만들기 및 실행 targets

Basic Measurement Feedback프로필 targets 은 다양한 Q# 애플리케이션을 실행할 수 있으며, 연산에서 문 내에서 if 조건의 일부로 형식 Result 의 값만 비교할 수 있는 제약 조건을 사용할 수 있습니다. 이 프로필 유형은 프로필에 비해 No Control Flow 개선된 것으로 가정하지만 여전히 몇 가지 제한 사항이 적용됩니다.

Basic Measurement Feedback 프로필 targets 은 측정 기반 조건부 연산 및 중간 회로 측정을 허용합니다. 즉, 큐비트는 양자 프로그램의 최종 문 이외의 지점에서 선택적으로 측정할 수 있으며 측정 출력은 다른 연산에서 사용할 수 있습니다. 중간 회로 측정은 양자 프로그램 전체의 모든 지점에서 여러 측정을 가능하게 합니다. 측정된 큐비트의 양자 정보는 클래식 상태(0 또는 1)로 축소되지만 측정되지 않은 큐비트는 양자 상태를 유지합니다.

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

예를 들어 다음 Q# 코드는 에서 Basic Measurement Feedbacktarget허용됩니다.

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

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

그러나 부울 평가가 이동된 동일한 코드는 허용되지 않습니다 .

operation BeOne(q : Qubit) : Bool {
     return M(q) == One;
}

operation SetToZeroUsingBeOne(q : Qubit) : Unit {
     if BeOne(q) { X(q); }
}

SetQubitState 의 No Control Flow 작업은 문 내에 if 또는 set 문을 포함하지 return 않는 한 에서 Basic Measurement Feedbacktarget 사용할 수 있습니다. 이는 및 문과 else 같은 elif 모든 유형의 조건부 분기에 적용할 수 있습니다. 예를 들어 다음 작업은 에서 사용할 수 없습니다.Basic Measurement Feedbacktarget

    operation SetQubitState(desired : Result, q : Qubit) : Result {
    if desired != M(q) {
        X(q);
        return M(q);
    }
}

현재 Basic Measurement Feedbacktargets Azure Quantum에 사용할 수 있습니다.