Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W tym artykule dowiesz się, jak zoptymalizować czas wykonywania podczas uruchamiania dużych Q# programów z użyciem usługi Azure Quantum Resource Estimator.
Aby uzyskać informacje o sposobie uruchamiania narzędzia do szacowania zasobów, zobacz Różne sposoby uruchamiania narzędzia do szacowania zasobów.
Wymagania wstępne
- Najnowsza wersja programu Visual Studio Code lub otwórz VS Code w Internecie.
- Najnowsza wersja rozszerzenia Quantum Development Kit. Aby uzyskać szczegółowe informacje na temat instalacji, zobacz Konfigurowanie rozszerzenia zestawu QDK.
Jeśli chcesz użyć języka Python w programie VS Code, potrzebne są również następujące elementy:
Zainstaluj najnowszą wersję rozszerzeń Python i Jupyter dla programu VS Code.
Najnowszy
qdkpakiet języka Python.python -m pip install --upgrade qdk
Ręczne buforowanie za pomocą programów Q#
Po przesłaniu zadania szacowania zasobów do narzędzia do szacowania zasobów program kwantowy jest obliczany całkowicie w celu wyodrębnienia oszacowań zasobów. Jeśli chcesz oszacować zasoby operacji Q# wywoływanej wiele razy, na przykład w pętli z wieloma iteracjami, wykonanie zadania szacowania zasobów może zająć dużo czasu. Jednym ze sposobów zmniejszenia długiego czasu wykonywania jest uruchomienie operacji raz, obliczenie i buforowanie kosztów oraz użycie danych w kolejnych wywołaniach. Ta technika nazywa się buforowaniem ręcznym.
Narzędzie do szacowania zasobów obsługuje dwie funkcje do ręcznego buforowania: BeginEstimateCaching(name: String, variant: Int): Bool i EndEstimateCaching(): Unit.
BeginEstimateCaching funkcja przyjmuje jako dane wejściowe name, która jest unikatową nazwą fragmentu kodu, dla którego chcesz buforować koszty, oraz liczbę całkowitą variant rozróżniającą różne warianty kosztów dla tego samego fragmentu.
Uwaga
Te dwie specjalne operacje BeginEstimateCaching i EndEstimateCaching są operacjami wewnętrznymi narzędzia do szacowania zasobów. Nie są obsługiwane przez inne wykonanie targets.
Załóżmy na przykład, że masz operację Q# o nazwie ExpensiveOperation , która jest wywoływana wiele razy w iteracji. Możesz użyć buforowania, aby zmniejszyć czas obliczeń.
operation ExpensiveOperation(c: Int, b : Bool): Unit {
if BeginEstimateCaching("MyNamespace.ExpensiveOperation", SingleVariant()) {
// Code block to be cached
EndEstimateCaching();
}
}
Gdy ExpensiveOperation jest używany wielokrotnie, BeginEstimateCaching jest wywoływany za każdym razem. Gdy BeginEstimateCaching jest wywoływany po raz pierwszy, zwraca true i rozpoczyna gromadzenie danych o kosztach. Spowoduje to wykonanie kosztownego fragmentu kodu przez program. Gdy EndEstimateCaching zostanie wywołane, dane kosztów są przechowywane na przyszłe potrzeby i są włączane do ogólnego kosztu programu.
Gdy ExpensiveOperation jest wywoływany po raz drugi (a następnie), narzędzie do szacowania zasobów znajduje przechowywane (buforowane) dane kosztów, uwzględnia je w ogólnym koszcie programu i zwraca false. Powoduje to pominięcie kosztownego fragmentu kodu, dlatego narzędzie do szacowania zasobów wykonuje program szybciej.
EndEstimateCaching powinno być umieszczone na końcu warunku, a regiony ujęte w BeginEstimateCaching-EndEstimateCaching mogą być zagnieżdżone.
SingleVariant() wskazuje, że zebrane podczas pierwszego wykonania dane dotyczące kosztów mogą być ponownie używane we wszystkich kolejnych wykonaniach fragmentu kodu. Może to nie zawsze być tak. Jeśli na przykład twój kod ma inny koszt dla nieparzystych i parzystych wartości zmiennej "c", możesz podać wartość variant.
operation ExpensiveOperation(c: Int, b : Bool): Unit {
if BeginEstimateCaching("MyNamespace.ExpensiveOperation", c % 2) {
// Some code
EndEstimateCaching();
}
}
W tym przypadku pamięć podręczna różni się dla nieparzystych i parzystych wartości c. Innymi słowy, dane zebrane dla parzystych c wartości są ponownie używane tylko dla parzystych c wartości, a to samo dotyczy nieparzystych wartości c.
Uwaga
Jeśli napotkasz jakikolwiek problem podczas pracy z Narzędziem do Szacowania Zasobów, sprawdź stronę rozwiązywania problemów lub skontaktuj się AzureQuantumInfo@microsoft.com.
Powiązana zawartość
- Pobieranie wyników narzędzia do szacowania zasobów
- Różne sposoby uruchamiania Resource Estimator
- Dostosowywanie parametrów target narzędzia do szacowania zasobów