共用方式為


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 中:

  1. 選取 [檢視 -> 命令選擇區 ],然後輸入 Q#:設定 Azure Quantum QIR target 配置檔。 按 Enter 鍵。
  2. 選取 [不受限制]。

在 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 語句來控制計算流程。 這也適用於任何類型的 條件式分支,例如 elifelse 語句。

設定 QIR Basetarget 設定檔

在 Visual Studio Code 中:

  1. 選取 [檢視 -> 命令選擇區 ],然後輸入 Q#:設定 Azure Quantum QIR target 配置檔。 按 Enter 鍵。
  2. 選取 [QIR 基底]。

在 Python 中,您可以使用 方法來設定 target 設定檔 qsharp.init

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

支援 targets

目前,這些 QIR Basetargets 適用於 Azure Quantum:

建立及執行配置檔的應用程式QIR Adaptive RItargets

QIR Adaptive RI 配置檔 targets 可以執行各種不同的 Q# 應用程式,但有一些條件約束。 此配置檔類型假設配置檔有所 QIR Base 改善,但仍受限於一些限制。

QIR Adaptive RI 配置文件 targets 允許以測量為基礎的條件作業和 中電路測量,這表示量子位可以在量子程序最後語句以外的時間點選擇性測量,而且測量的輸出可用於其他作業。 中間電路測量可在量子程式的任何時間點進行多個測量。 測量量子位的量子資訊會折疊為傳統狀態(零或一個),但非測量量子位會維持在其量子狀態。

在 Q# 中測量量子位時,會傳回 類型的 Result 值。 如果您想要在條件語句中使用這個結果,則必須直接在條件語句中比較。 對應的條件式區塊不能包含 returnset 語句。

例如,在 中 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 中:

  1. 選取 [檢視 -> 命令選擇區 ],然後輸入 Q#:設定 Azure Quantum QIR target 配置檔。 按 Enter 鍵。
  2. 選取 QIR Adaptive RI

在 Python 中,您可以使用 方法來設定 target 設定檔 qsharp.init

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

支援 targets

目前,這些 QIR Adaptive RItargets 適用於 Azure Quantum: