Share via


Azure Quantum 中的目標設定檔類型

本文討論 Azure Quantum 中量子運算提供者中可用的不同類型的 target 配置檔類型。 目前,由於現場的早期開發階段,量子裝置對於在它們上執行的程式有一些限制和需求。

量子處理單位 (QPU) :不同的配置檔及其限制

量子處理單位 (QPU) 是一種實體或模擬處理器,其中包含一些可操作以計算量子演算法的互連量子位。 其為量子運算器或量子模擬器的核心元件。

量子裝置仍然是一種新興的技術,而且並非所有裝置都能夠執行所有 Q# 程式碼。 因此,在開發不同 targets的程式時,您必須記住一些限制。 目前,Azure Quantum 和 QDK 會針對 QPU 管理三個不同的設定檔:

  • Full:此配置檔可以在模擬器記憶體限制內執行任何 Q# 程式,或實體量子計算機的量子位數目。
  • No Control Flow:此設定檔可以執行任何不需要使用量子位測量結果的 Q# 程式來控制程式流程。 在這類 QPU 的 Q# 程式中 target,類型的 Result 值不支援相等比較。
  • Basic Measurement Feedback:此配置檔具有使用量子位測量結果來控制程式流程的能力有限。 在針對這類 QPU 所設定的 Q# 程式中 target,您可以比較類型 Result 值做為作業中語句中 if 條件的一部分,允許中間線路測量。 對應的條件式區塊可能不會包含 returnset 陳述式。

建立和執行配置檔的應用程式Fulltargets

Full profile targets 可以執行任何 Q# 程式,這表示您可以撰寫程式而不需功能限制。 Azure Quantum 尚未提供任何 target 此配置檔。

建立和執行配置檔的應用程式No Control Flowtargets

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 執行這項作業將會失敗,因為它會評估兩個結果之間的比較 (desired != M(q)) ,以使用語句控制計算流程 if 。 這適用於任何類型的 條件式分支,例如 elifelse 語句。

注意

目前,您無法提交在 中測量 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 Feedbacktargets

Basic Measurement Feedback profile targets 可以執行各種不同的 Q# 應用程式,而且條件約束,您只能比較類型 Result 值做為作業中語句內 if 條件的一部分。 此配置檔類型假設配置檔有所改善 No Control Flow ,但仍受限於一些限制。

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

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

例如,在 中 Basic Measurement Feedbacktarget允許下列 Q# 程式代碼:

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 您未在語句中包含任何 returnset 語句,即可No Control Flow在 Basic Measurement Feedbacktargetif 中使用 中的作業。 這適用於任何類型的 條件式分支,例如 elifelse 語句。 例如,下列作業 不能 用於 Basic Measurement Feedbacktarget:

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

目前,這些 Basic Measurement Feedbacktargets 適用於 Azure Quantum: