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에 사용할 수 있습니다.
공급자: IonQ
- IonQ 시뮬레이터(
ionq.simulator
) - IonQ QPU(
ionq.qpu
)
- IonQ 시뮬레이터(
공급자: Rigetti
- Rigetti 시뮬레이터(
rigetti.sim.*
) - Rigetti QPU(
rigetti.qpu.*
)
- Rigetti 시뮬레이터(
프로필용 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에 사용할 수 있습니다.
- 공급자: Quantinuum
- Quantinuum 에뮬레이터 (
quantinuum.sim.h1-1e
,quantinuum.sim.h2-1e
) - Quantinuum QPU (
quantinuum.qpu.h1-1
,quantinuum.qpu.h2-1
)
- Quantinuum 에뮬레이터 (
피드백
https://aka.ms/ContentUserFeedback
출시 예정: 2024년 내내 콘텐츠에 대한 피드백 메커니즘으로 GitHub 문제를 단계적으로 폐지하고 이를 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은 다음을 참조하세요.다음에 대한 사용자 의견 제출 및 보기