Het uitvoeren van grote programma's optimaliseren met de resource-estimator
In dit artikel leert u hoe u de uitvoeringstijd kunt optimaliseren bij het uitvoeren van grote Q# programma's met de Azure Quantum Resource Estimator.
Vereisten
- De nieuwste versie van Visual Studio Code of open VS Code op het web.
- De nieuwste versie van de Azure Quantum Development Kit-extensie . Zie Installing the Modern QDK on VS Code (De moderne QDK installeren in VS Code) voor installatiedetails.
Als u Python in VS Code wilt gebruiken, hebt u ook het volgende nodig:
Installeer de nieuwste versie van de Python- en Jupyter-extensies voor VS Code.
Het nieuwste Azure Quantum-pakket
qsharp
.python -m pip install --upgrade qsharp
Omgaan met grote Q# programma's
Wanneer u een resourceschattingstaak naar de Resource Estimator verzendt, wordt het kwantumprogramma volledig geƫvalueerd om de resourceschattingen te extraheren. Als u een schatting wilt maken van de resources van een Q# bewerking die vaak wordt aangeroepen, bijvoorbeeld in een lus met veel iteraties, kan de uitvoering van de resourceschattingstaak lang duren. Een manier om lange uitvoeringstijden te verminderen, is door de bewerking eenmaal uit te voeren, de kosten ervan te berekenen en in de cache op te slaan, en de gegevens te gebruiken bij volgende aanroepen. Deze techniek wordt handmatig opslaan in cache genoemd.
De resource-estimator target ondersteunt twee Q# functies voor het handmatig opslaan in cache: BeginEstimateCaching(name: String, variant: Int): Bool
en EndEstimateCaching(): Unit
. BeginEstimateCaching
functie gebruikt als invoer een name
die de unieke naam is van het codefragment waarvoor u de kosten in de cache wilt opslaan, en een geheel getal variant
dat verschillende varianten van kosten voor hetzelfde fragment onderscheidt.
Notitie
De twee speciale bewerkingen BeginEstimateCaching
en EndEstimateCaching
zijn intrinsieke bewerkingen voor de resource-estimator. Ze worden niet ondersteund door andere uitvoeringen targets.
Stel dat u een Q# bewerking hebt met de naam ExpensiveOperation
die vaak wordt aangeroepen in een iteratie. U kunt caching gebruiken om de schattingstijd te verkorten:
operation ExpensiveOperation(c: Int, b : Bool): Unit {
if BeginEstimateCaching("MyNamespace.ExpensiveOperation", SingleVariant()) {
// Code block to be cached
EndEstimateCaching();
}
}
Wanneer ExpensiveOperation
herhaaldelijk wordt gebruikt, BeginEstimateCaching
wordt elke keer aangeroepen. Wanneer BeginEstimateCaching
voor de eerste keer wordt aangeroepen, retourneert true
en begint de accumulatie van kostengegevens. Dit zorgt ervoor dat code doorgaat met het uitvoeren van het dure codefragment. Wanneer EndEstimateCaching
wordt aangeroepen, worden de kostengegevens opgeslagen voor toekomstig gebruik en opgenomen in de totale kosten van het programma.
Wanneer ExpensiveOperation
de tweede keer wordt aangeroepen (en vervolgens), vindt de resource-estimator de opgeslagen (in de cache opgeslagen) kostengegevens, neemt deze op in de totale kosten van het programma en retourneert false
. Dit zorgt ervoor dat dure codefragmenten worden overgeslagen, waardoor de Resource Estimator het programma sneller uitvoert. EndEstimateCaching
moet aan het einde van de voorwaarde worden geplaatst en gebieden die zijn ingesloten in BeginEstimateCaching-EndEstimateCaching
kunnen worden genest.
SingleVariant()
geeft aan dat de kostengegevens die bij de eerste uitvoering zijn verzameld, opnieuw kunnen worden gebruikt in alle volgende uitvoeringen van het codefragment. Dit is mogelijk niet altijd het geval. Als uw code bijvoorbeeld verschillende kosten heeft voor oneven en even waarden van een variabele 'c', kunt u een variant
waarde opgeven:
operation ExpensiveOperation(c: Int, b : Bool): Unit {
if BeginEstimateCaching("MyNamespace.ExpensiveOperation", c % 2) {
// Some code
EndEstimateCaching();
}
}
In dit geval verschilt de cache voor oneven en even waarden van c
. Met andere woorden, gegevens die worden verzameld voor even waarden van c
worden alleen hergebruikt voor even waarden van c
, en hetzelfde geldt voor oneven waarden van c
.
Notitie
Als u een probleem ondervindt tijdens het werken met de resource-estimator, gaat u naar de pagina Probleemoplossing of neemt u contact op met AzureQuantumInfo@microsoft.com.
Volgende stappen
Feedback
https://aka.ms/ContentUserFeedback.
Binnenkort beschikbaar: In de loop van 2024 zullen we GitHub-problemen geleidelijk uitfaseren als het feedbackmechanisme voor inhoud en deze vervangen door een nieuw feedbacksysteem. Zie voor meer informatie:Feedback verzenden en weergeven voor