Zintegrowane przetwarzanie hybrydowe
Zintegrowane przetwarzanie hybrydowe łączy ze sobą klasyczne i kwantowe procesy, dzięki czemu klasyczny kod może kontrolować wykonywanie operacji kwantowych na podstawie pomiarów obwodu środkowego, podczas gdy fizyczne kubity pozostają aktywne. Korzystając z typowych technik programowania, takich jak zagnieżdżone warunkowe, pętle i wywołania funkcji, pojedynczy program kwantowy może uruchamiać złożone problemy, zmniejszając liczbę potrzebnych zdjęć. Korzystając z technik ponownego użycia kubitu, większe programy mogą być uruchamiane na maszynach z mniejszą liczbą kubitów.
Ważne
Zintegrowane hybrydowe obliczenia kwantowe nie są obecnie obsługiwane przez rozszerzenie Modern Quantum Development Kit (Modern QDK) dla Visual Studio Code, wraz z innymi składnikami w przykładach na tej stronie, takich jak jądro IQ#, %azure
polecenie magic lub qsharp.azure
moduł. Aby uruchomić zintegrowane zadania hybrydowe, użyj zestawu Microsoft Quantum Development Kit (klasyczny zestaw QDK). Aby uzyskać więcej informacji, zobacz Kontynuuj pracę w klasycznym zestawie QDK.
Aby uzyskać więcej informacji, zobacz:
- Granade & Weibe, "Używanie losowych spacerów na potrzeby iteracyjnego szacowania fazy".
- Lubinski, et al., "Postęp hybrydowych obliczeń kwantowych–klasycznych przy użyciu Real-Time wykonywania"
Obsługiwane targets
Obecnie zintegrowany hybrydowy model obliczeniowy w usłudze Azure Quantum jest obsługiwany w aplikacji Quantinuumtargets.
Quantinuum
Obsługiwana funkcja | Uwagi |
---|---|
Pętle klasyczne | Tylko ograniczone pętle |
Dowolny przepływ sterowania | Użycie rozgałęziania if/else |
Pomiar w obwodzie środkowym | Korzysta z klasycznych zasobów rejestru |
Ponowne użycie kubitu | Nie dotyczy |
Obliczenia klasyczne w czasie rzeczywistym | 32-bitowa arytmetyka niepodpisanej liczby całkowitej Korzysta z klasycznych zasobów rejestru |
Wprowadzenie
Aby rozpocząć eksplorowanie zintegrowanego programowania hybrydowego, zalecamy zapoznanie się z przykładami w tym artykule lub zapoznanie się z kartą Hybrydowe obliczenia kwantowe w galerii Przykłady w witrynie Azure Quantum Portal.
Przesyłanie zintegrowanych zadań hybrydowych
Podczas przesyłania zintegrowanego zadania hybrydowego należy dodać target parametr możliwości po określeniu elementu target. Poza tym zintegrowane programy hybrydowe w usłudze Azure Quantum są uruchamiane i zarządzane tak samo jak zwykłe zadania kwantowe. Każde zadanie ma jeden identyfikator zadania, a wynik jest pojedynczym histogramem.
Ważne
Zintegrowane hybrydowe obliczenia kwantowe nie są obecnie obsługiwane przez rozszerzenie Modern Quantum Development Kit (Modern QDK) dla Visual Studio Code, wraz z innymi składnikami w przykładach na tej stronie, takich jak jądro IQ#, %azure
polecenie magic lub qsharp.azure
moduł. Aby uruchomić zintegrowane zadania hybrydowe, użyj zestawu Microsoft Quantum Development Kit (klasyczny zestaw QDK). Aby uzyskać więcej informacji, zobacz Kontynuuj pracę w klasycznym zestawie QDK.
I Q#
W przypadku korzystania z jądra IQ# w Jupyter Notebook użyj %azure.target-capability magic polecenia z parametrem AdaptiveExecution
.
%azure.target quantinuum.sim.h1-1e
%azure.target-capability AdaptiveExecution
Python + Q#
W przypadku korzystania z pakietu języka Python qsharp użyj qsharp.azure.target_capability
funkcji z parametrem AdaptiveExecution
.
qsharp.azure.target("quantinuum.sim.h1-1e")
qsharp.azure.target_capability("AdaptiveExecution")
Interfejs wiersza polecenia platformy Azure
W przypadku przesyłania zadania przy użyciu interfejsu wiersza polecenia platformy Azure dodaj --target-capability
parametr z wartością AdaptiveExecution
.
az quantum job submit \
--target-capability AdaptiveExecution \
--target-id quantinuum.sim.h1-1e \
--job-name IterativePhaseEstimation \
--shots 100 \
--output table
Przesyłanie zintegrowanych zadań hybrydowych w ramach sesji
W ramach sesji można połączyć wiele zintegrowanych zadań hybrydowych przy użyciu języków Q# i Python. Podczas przesyłania sesji dodaj targetCapability
parametr wejściowy z wartością AdaptiveExecution
.
with target.open_session(name="Q# session") as session:
target.submit(input_data=QuantumOperation, name="Job 1", input_params={"count":100, "targetCapability":"AdaptiveExecution"}) # First job submission
target.submit(input_data=QuantumOperation, name="Job 2", input_params={"count":200, "targetCapability":"AdaptiveExecution"}) # Second job submission
target.submit(input_data=QuantumOperation, name="Job 3", input_params={"count":300, "targetCapability":"AdaptiveExecution"}) # Third job submission
Aby uzyskać więcej informacji, zobacz Wprowadzenie do sesji.
Uwaga
Mimo że sesje są dostępne dla wszystkich dostawców sprzętu obliczeń kwantowych, zwróć uwagę, że zintegrowane hybrydowe zadania obliczeń kwantowych są obecnie obsługiwane w aplikacji Quantinuum targets.
Szacowanie kosztów zintegrowanego zadania hybrydowego
Koszty uruchamiania zintegrowanego zadania hybrydowego na sprzęcie Firmy Quantinuum można oszacować, uruchamiając je najpierw w emulatorze.
Po pomyślnym uruchomieniu w emulatorze:
- W obszarze roboczym usługi Azure Quantum wybierz pozycję Zarządzanie zadaniami.
- Wybierz przesłane zadanie.
- W oknie podręcznym Szczegóły zadania wybierz pozycję Szacowanie kosztów , aby wyświetlić liczbę używanych jednostek eHQC (środki emulatora Quantinuum). Ta liczba przekłada się bezpośrednio na liczbę HQC (kwantowych kredytów kwantowych Quantinuum), które są potrzebne do uruchomienia zadania na sprzęcie Firmy Quantinuum.
Uwaga
Firma Quantinuum wyrejestruje cały obwód i oblicza koszt dla wszystkich ścieżek kodu, niezależnie od tego, czy są one wykonywane warunkowo, czy nie.
Zintegrowane przykłady hybrydowe
W poniższych przykładach pokazano bieżący zestaw funkcji dla zintegrowanego przetwarzania hybrydowego.
- Weryfikowanie splątanego stanu GHZ
- Powtórzenie z trzema kubitami
- Iteracyjne szacowanie fazy
Wymagania wstępne
- Jeśli jesteś nowym użytkownikiem usługi Azure Quantum, potrzebujesz subskrypcji platformy Azure i obszaru roboczego usługi Azure Quantum, aby uruchomić przykłady na sprzęcie kwantowym. Aby uzyskać więcej informacji, zobacz Tworzenie obszaru roboczego usługi Azure Quantum.
- Program VS Code i Quantum Development Kit konfiguracja w środowisku lokalnym. Aby uzyskać więcej informacji, zobacz Konfigurowanie elementu Quantum Development Kit.
- Upewnij się, że program VS Code ma najnowszą wersję Quantum Development Kit (0.27.258160).
- W programie VS Code wybierz klawisze Ctrl + Shift + X i wyszukaj ciąg "Microsoft Quantum Development Kit".
Przykłady w tym artykule są skonfigurowane do uruchamiania w programie Visual Studio (VS) Code i używają wbudowanego interfejsu wiersza polecenia platformy Azure w celu przesłania zadania do usługi Azure Quantum. Aby uruchomić Jupyter Notebook wersję tych i innych przykładów, zaloguj się do obszaru roboczego Azure Portal i wyświetl przykłady z karty Hybrydowe obliczenia kwantowe w galerii Przykłady. Możesz uruchomić notes w chmurze lub pobrać go i uruchomić lokalnie.
Aby rozwiązać problemy ze zintegrowanymi programami hybrydowymi, zobacz Rozwiązywanie problemów ze zintegrowanym hybrydowym rozwiązaniem.
W tym przykładzie dowiesz się, jak mieszać instrukcje klasyczne i kwantowe w tym samym programie, wszystkie w pełni przetwarzane przez zaplecze obliczeń kwantowych.
Funkcje, które należy zwrócić uwagę na ten przykład:
- Pętla i pomiary kubitów odbywają się, podczas gdy kubity pozostają spójne.
- Procedura łączy klasyczne i kwantowe operacje obliczeniowe.
- Nie musisz uczyć się programowania dla wyspecjalizowanego sprzętu o wysokiej wydajności działającego obok QPU (np. układów FPGA).
- Uruchomienie równoważnego programu bez zintegrowanych funkcji hybrydowych wymagałoby zwrócenia wszystkich wyników pomiaru pośredniego, a następnie uruchomienia przetwarzania końcowego na danych.
Tworzenie projektu programu VS Code
W programie VS Code utwórz nowy Q# autonomiczny projekt aplikacji konsolowej o nazwie CheckGHZ.
- Wybierz pozycję Wyświetl > paletę >Q#poleceń: Utwórz nowy projekt > Autonomiczna aplikacja konsolowa
Zastąp konfigurację w pliku CheckGHZ.csproj następującym kodem:
<Project Sdk="Microsoft.Quantum.Sdk/0.27.258160"> <PropertyGroup> <OutputType>Exe</OutputType> <TargetFramework>net6.0</TargetFramework> <ExecutionTarget>quantinuum</ExecutionTarget> <TargetCapability>AdaptiveExecution</TargetCapability> </PropertyGroup> </Project>
Zastąp kod w pliku Program.qs następującym kodem:
namespace Microsoft.Quantum.Samples { open Microsoft.Quantum.Measurement; open Microsoft.Quantum.Intrinsic; /// # Summary /// Counts the number of times measurements of a prepared GHZ state did not match the expected correlations. @EntryPoint() // The EntryPoint attribute is used to mark that this operation is where a quantum program will start running. operation CheckGHZ() : Int { use q = Qubit[3]; mutable mismatch = 0; for _ in 1..10 { // Prepare the GHZ state. H(q[0]); CNOT(q[0], q[1]); CNOT(q[1], q[2]); // Measures and resets the 3 qubits let (r0, r1, r2) = (MResetZ(q[0]), MResetZ(q[1]), MResetZ(q[2])); // Adjusts classical value based on qubit measurement results if not (r0 == r1 and r1 == r2) { set mismatch += 1; } } return mismatch; } }
W oknie terminalu w programie VS Code połącz się z obszarem roboczym usługi Azure Quantum i ustaw domyślne zasoby.
az login
Uwaga
Identyfikator subskrypcji platformy Azure, grupa zasobów i nazwa obszaru roboczego można wyświetlić w oknie terminalu po zalogowaniu się, uruchamiając polecenie az quantum workspace list. Alternatywnie można je znaleźć w Azure Portal na stronie Przegląd obszaru roboczego usługi Azure Quantum.
az account set --subscription <MySubscriptionID> az quantum workspace set --resource-group <MyResourceGroup> --workspace <MyWorkspace> --location <MyLocation>
Prześlij zadanie i wyświetl wyniki. W tym przebiegu jest używanych około 10,65 eHQC (jednostki rozliczeniowe emulatora firmy Quantinuum)
az quantum job submit \ --target-id quantinuum.sim.h1-1e \ --job-name CheckGHZ \ --target-capability AdaptiveExecution \ --shots 50
az quantum job output \ -o table \ --job-id [job-id]
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