Azure Quantum 中的 QIR target 配置文件類型
本文討論 Azure Quantum 中量子運算提供者中可用的不同 QIR target 配置檔類型。 QIR target 設定檔類型可用來定義您可以使用 target Q# 程式之量子裝置的功能。
Target 配置檔及其限制
量子裝置仍然是新興技術,並非所有裝置都可以執行所有 Q# 程式代碼。 因此,在開發不同 targets的程式時,您必須記住一些限制。 目前,Azure Quantum 和 QDK 會管理三個不同的 target 配置檔:
- Unrestricted:此配置檔可以在模擬器的記憶體限制內執行任何 QIR 程式,或實體量子計算機的量子位數目。
- QIR base:此設定檔可以執行任何不需要使用量子位測量結果的 Q# 程式來控制程式流程。 在以此類 QPU 為目標的 Q# 程式內,
Result
類型的值並不支援相等比較。 - QIR Adaptive RI:此配置檔有限,能夠使用量子位測量的結果來控制程式流程。 在以這類 QPU 為目標的 Q# 程式中,您可以比較類型
Result
值,做為作業中語句內if
條件的一部分,以允許中路測量。
建立及執行配置檔的應用程式Unrestrictedtarget
Unrestrictedtarget 配置檔可以執行任何程式,這表示您可以撰寫 Q# 程式而不受功能限制。 Azure Quantum 不提供任何 target 此配置檔。 不過,您可以在 QDK 提供的模擬器上執行 Unrestricted Q# 程式。
設定 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
語句來控制計算流程。 這也適用於任何類型的 條件式分支,例如 elif
和 else
語句。
設定 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
提供者: Rigetti
建立及執行配置檔的應用程式QIR Adaptive RItargets
QIR Adaptive RI 配置檔 targets 可以執行各種不同的 Q# 應用程式,但有一些條件約束。 此配置檔類型假設配置檔有所 QIR Base 改善,但仍受限於一些限制。
QIR Adaptive RI 配置文件 targets 允許以測量為基礎的條件作業和 中電路測量,這表示量子位可以在量子程序最後語句以外的時間點選擇性測量,而且測量的輸出可用於其他作業。 中間電路測量可在量子程式的任何時間點進行多個測量。 測量量子位的量子資訊會折疊為傳統狀態(零或一個),但非測量量子位會維持在其量子狀態。
在 Q# 中測量量子位時,會傳回 類型的 Result
值。 如果您想要在條件語句中使用這個結果,則必須直接在條件語句中比較。 對應的條件式區塊不能包含 return
或 set
語句。
例如,在 中 QIR Adaptive RItarget允許下列 Q# 程式代碼:
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 QPUs (
quantinuum.qpu.h1-1
,quantinuum.qpu.h2-1
)
- Quantinuum 模擬器 (