Jak zoptymalizować uruchamianie dużych programów za pomocą narzędzia do szacowania zasobów
W tym artykule dowiesz się, jak zoptymalizować czas wykonywania podczas uruchamiania dużych Q# programów za pomocą narzędzia do szacowania zasobów usługi Azure Quantum.
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 Visual Studio Code lub otwórz program VS Code w sieci Web.
- Najnowsza wersja rozszerzenia zestawu Azure Quantum Development Kit . Aby uzyskać szczegółowe informacje na temat instalacji, zobacz Instalowanie nowoczesnego zestawu QDK w programie VS Code.
Jeśli chcesz użyć języka Python w programie VS Code, potrzebne są również następujące elementy:
Zainstaluj najnowszą wersję rozszerzeń języka Python i programu Jupyter dla programu VS Code.
Najnowszy pakiet usługi Azure Quantum
qsharp
.python -m pip install --upgrade qsharp
Jak obsługiwać duże Q# programy
Podczas przesyłania 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 Q# operacji wywoływanej wiele razy, na przykład w pętli z wieloma iteracji, 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 jest nazywana buforowaniem ręcznym.
Narzędzie do szacowania target zasobów obsługuje dwie Q# funkcje do ręcznego buforowania: BeginEstimateCaching(name: String, variant: Int): Bool
i EndEstimateCaching(): Unit
. BeginEstimateCaching
funkcja przyjmuje jako dane wejściowe name
unikatową nazwę fragmentu kodu, dla którego chcesz buforować koszty, oraz liczbę całkowitą variant
, która rozróżnia różne warianty kosztów dla tego samego fragmentu.
Uwaga
Dwie operacje BeginEstimateCaching
specjalne i EndEstimateCaching
są operacjami wewnętrznymi narzędzia do szacowania zasobów. Nie są one 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 skrócić czas szacowania:
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 akumulację danych kosztów. Powoduje to kontynuowanie wykonywania kosztownego fragmentu kodu. Po EndEstimateCaching
wywołaniu dane kosztów są przechowywane na potrzeby przyszłego użycia i są uwzględniane w ogólnym koszcie 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 wartość false
. Powoduje to pominięcie kosztownego fragmentu kodu, dlatego narzędzie do szacowania zasobów wykonuje program szybciej. EndEstimateCaching
należy umieścić na końcu warunku, a regiony ujęte w BeginEstimateCaching-EndEstimateCaching
elementy można zagnieżdżać.
SingleVariant()
wskazuje, że dane kosztów zebrane podczas pierwszego wykonania mogą być ponownie używane we wszystkich kolejnych wykonaniach fragmentu kodu. Może to nie być zawsze przypadek. Jeśli na przykład kod ma inny koszt dla nieparzystnych, a nawet wartości zmiennej "c", możesz podać variant
wartość:
operation ExpensiveOperation(c: Int, b : Bool): Unit {
if BeginEstimateCaching("MyNamespace.ExpensiveOperation", c % 2) {
// Some code
EndEstimateCaching();
}
}
W takim przypadku pamięć podręczna jest inna dla nieparzyszonych, a parzysłych wartości .c
Innymi słowy, dane zebrane dla parzysłych c
wartości są ponownie używane tylko dla parzysłych wartości , c
a to samo dotyczy nieparzystwych wartości .c
Uwaga
Jeśli wystąpi jakikolwiek problem podczas pracy z narzędziem do szacowania zasobów, zapoznaj się ze stroną Rozwiązywanie problemów lub skontaktuj się z AzureQuantumInfo@microsoft.comprogramem .
Następne kroki
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla