Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
In dit artikel leert u hoe u de uitvoeringstijd kunt optimaliseren bij het uitvoeren van een groot programma in Q# met de Azure Quantum Resource Estimator.
Voor informatie over hoe de Resource Estimator moet worden uitgevoerd, zie Verschillende manieren om de Resource Estimator uit te voeren.
Vereisten
- De nieuwste versie van Visual Studio Code of open VS Code op het web.
- De nieuwste versie van de Quantum Development Kit-extensie. Zie De QDK-extensie instellenvoor 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
qsharp
-pakket.python -m pip install --upgrade qsharp
Handmatig cachen met programma's van Q#
Wanneer u een taak voor resourceraming indient bij de resource-estimator, wordt het kwantumprogramma volledig geëvalueerd met als doel de resourceramingen te verkrijgen. Als u de bronnen van een Q#-bewerking wilt schatten die vaak wordt aangeroepen, bijvoorbeeld in een lus met veel iteraties, kan het uitvoeren van de bronramingstaak lang duren. Een manier om lange uitvoeringstijden te verminderen, is door de bewerking één keer uit te voeren, de kosten ervan te berekenen en in de cache te plaatsen en de gegevens te gebruiken voor volgende aanroepen. Deze techniek wordt handmatige cachinggenoemd.
De resource-estimator target ondersteunt twee Q# functies voor het uitvoeren van handmatige caching: BeginEstimateCaching(name: String, variant: Int): Bool
en EndEstimateCaching(): Unit
.
BeginEstimateCaching
functie gebruikt een name
dat de unieke naam is van het codefragment waarvoor u 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.
Stel dat u een Q#-bewerking hebt die ExpensiveOperation
wordt genoemd en die vaak wordt aangeroepen in een iteratie. U kunt caching gebruiken om de schattingstijd te verminderen:
operation ExpensiveOperation(c: Int, b : Bool): Unit {
if BeginEstimateCaching("MyNamespace.ExpensiveOperation", SingleVariant()) {
// Code block to be cached
EndEstimateCaching();
}
}
Wanneer ExpensiveOperation
herhaaldelijk wordt gebruikt, wordt BeginEstimateCaching
elke keer aangeroepen. Wanneer BeginEstimateCaching
voor de eerste keer wordt aangeroepen, retourneert true
en begint de verzameling 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 worden ze opgenomen in de totale kosten van het programma.
Wanneer ExpensiveOperation
de tweede keer (en vervolgens) wordt aangeroepen, vindt de resource-estimator de gecachete kostengegevens, neemt deze op in de totale kosten van het programma en retourneert false
. Dit zorgt ervoor dat dure codefragmenten worden overgeslagen, daarom wordt het programma sneller uitgevoerd door de Resource Estimator.
EndEstimateCaching
moet aan het einde van de voorwaarde worden geplaatst en regio's omsloten door BeginEstimateCaching-EndEstimateCaching
kunnen worden genest.
SingleVariant()
geeft aan dat de kostengegevens die tijdens de eerste uitvoering verzameld worden, opnieuw kunnen worden gebruikt in alle volgende uitvoeringen van het codefragment. Dit is misschien niet altijd het geval. Als uw code bijvoorbeeld verschillende kosten heeft voor oneven en even waarden van een variabele 'c', kunt u een waarde variant
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 er een probleem optreedt tijdens het werken met de Resource Estimator, raadpleeg de Troubleshooting-pagina, of neem contact op via AzureQuantumInfo@microsoft.com.
Gerelateerde inhoud
- de resultaten van de resource-estimator ophalen
- Verschillende manieren om de Resource-Estimator uit te voeren
- De parameters van de Resource Estimator target aanpassen