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:
- 보기 - 명령 팔레트를 선택하고 Q#을 입력합니다. Azure Quantum QIR target 프로필을 설정합니다.> Enter 키를 누릅니다.
- 제한 없음을 선택합니다.
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:
- 보기 - 명령 팔레트를 선택하고 Q#을 입력합니다. Azure Quantum QIR target 프로필을 설정합니다.> Enter 키를 누릅니다.
- QIR 베이스를 선택합니다.
Python에서는 메서드를 target 사용하여 qsharp.init
프로필을 설정할 수 있습니다.
qsharp.init(target_profile=qsharp.TargetProfile.Base)
targets 지원됨
현재 QIR Basetargets Azure Quantum에 사용할 수 있는 항목은 다음과 같습니다.
공급자: IonQ
- IonQ 시뮬레이터(
ionq.simulator
) - IonQ QPU(
ionq.qpu.*
)
- IonQ 시뮬레이터(
공급자: Rigetti
- Rigetti 시뮬레이터(
rigetti.sim.*
) - Rigetti QPU(
rigetti.qpu.*
)
- Rigetti 시뮬레이터(
프로필용 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:
- 보기 - 명령 팔레트를 선택하고 Q#을 입력합니다. Azure Quantum QIR target 프로필을 설정합니다.> Enter 키를 누릅니다.
- QIR Adaptive RI를 선택합니다.
Python에서는 메서드를 target 사용하여 qsharp.init
프로필을 설정할 수 있습니다.
qsharp.init(target_profile=qsharp.TargetProfile.Adaptive_RI)
targets 지원됨
현재 QIR Adaptive RItargets Azure Quantum에 사용할 수 있는 항목은 다음과 같습니다.
- 공급자: Quantinuum
- Quantinuum 에뮬레이터 (
quantinuum.sim.h1-1e
,quantinuum.sim.h2-1e
) - Quantinuum QPU (
quantinuum.qpu.h1-1
,quantinuum.qpu.h2-1
)
- Quantinuum 에뮬레이터 (