如何使用資源估算器優化執行大型程式
在本文中,您將瞭解如何使用 Azure Quantum Resource Estimator 執行大型Q#程式時,將運行時間優化。
如需如何執行資源估算器的資訊,請參閱執行 資源估算器的不同方式。
必要條件
- 最新版的 Visual Studio Code 或開啟 Web 上的 VS Code。
- 最新版的 Azure Quantum 開發工具包 擴充功能。 如需安裝詳細數據,請參閱 在 VS Code 上安裝新式 QDK。
如果您想要在 VS Code 中使用 Python,您也需要下列專案:
最新的 Azure Quantum
qsharp
套件。python -m pip install --upgrade qsharp
如何處理大型 Q# 程式
當您將資源估計作業提交至資源估算器時,會完全評估量子程式以擷取資源估計值。 例如,如果您想要估計多次叫用之 Q# 作業的資源,例如,在具有許多反覆項目的迴圈中,資源估計作業的執行可能需要很長的時間。 減少長時間運行時間的其中一種方式是執行作業一次、計算和快取其成本,並在後續呼叫上使用數據。 這項技術稱為手動快取。
資源估算器 target 支援兩 Q# 個函式來執行手動快取: BeginEstimateCaching(name: String, variant: Int): Bool
和 EndEstimateCaching(): Unit
。 BeginEstimateCaching
函式會接受 做為輸入, name
這是您要快取成本之代碼段的唯一名稱,以及區分相同片段不同成本變異的整數 variant
。
注意
這兩個特殊作業 BeginEstimateCaching
和 EndEstimateCaching
是資源估算器的內建作業。 其他執行 targets不支持它們。
例如,假設您有一個 Q# 稱為 ExpensiveOperation
的作業,會在反覆專案中多次呼叫。 您可以使用快取來減少其估計時間:
operation ExpensiveOperation(c: Int, b : Bool): Unit {
if BeginEstimateCaching("MyNamespace.ExpensiveOperation", SingleVariant()) {
// Code block to be cached
EndEstimateCaching();
}
}
重複使用 時 ExpensiveOperation
, BeginEstimateCaching
每次都會呼叫 。 第一次呼叫 時 BeginEstimateCaching
,它會傳回 true
並開始累積成本數據。 這會導致程式代碼繼續執行昂貴的代碼段。 呼叫 時 EndEstimateCaching
,成本數據會儲存以供日後使用,並併入計劃的整體成本。
當 ExpensiveOperation
第二次呼叫 (且後續) 時,資源估算器會尋找儲存的 (快取) 成本數據,並將它併入程式的整體成本,並傳 false
回 。 這會導致略過昂貴的代碼段,因此資源估算器會更快速地執行程式。 EndEstimateCaching
應該放在條件的結尾,而括在 中的 BeginEstimateCaching-EndEstimateCaching
區域可以巢狀化。
SingleVariant()
表示第一次執行時收集的成本數據可以在代碼段的所有後續執行中重複使用。 這可能不一定是這種情況。 例如,如果您的程式代碼對奇數和偶數變數 'c' 的值有不同的成本,您可以提供 variant
值:
operation ExpensiveOperation(c: Int, b : Bool): Unit {
if BeginEstimateCaching("MyNamespace.ExpensiveOperation", c % 2) {
// Some code
EndEstimateCaching();
}
}
在此情況下,奇數和偶數值的 c
快取會有所不同。 換句話說,針對的偶數值 c
所收集的數據只會針對 的偶數值 c
重複使用,而且同樣適用於的 c
奇數值。
注意
如果您在使用資源估算器時遇到任何問題,請參閱 疑難解答頁面,或連絡 AzureQuantumInfo@microsoft.com。
下一步
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應