Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Microsoft Quantum Development Kit (QDK) zawiera zestaw interfejsów API do symulacji urządzeń opartych na atomach neutralnych, których można używać do modelowania działania programu na komputerze kwantowym opartym na atomach neutralnych. Te interfejsy API modelują typy szumów występujące specyficznie w sprzęcie opartym na atomach neutralnych. Pakiet QDKPython umożliwia modelowanie szumów dla symulacji z klasą NoiseConfig .
Aby uzyskać więcej informacji na temat modeli szumu w QDK symulacjach, zobacz Jak tworzyć modele szumów na potrzeby symulacji kwantowych w programie QDK.
Aby uzyskać instrukcje dotyczące sposobu instalowania i używania QDKsymulatorów, zobacz Jak zainstalować i uruchomić QDK symulatory kwantowe.
Interfejsy API do symulacji urządzeń opartych na atomach neutralnych
QDK obejmuje dwa interfejsy API do symulacji urządzeń opartych na atomach neutralnych: NeutralAtomDevice i NeutralAtomBackend. Te interfejsy API modelują szum występujący konkretnie na komputerach kwantowych z neutralnymi atomami. Aby uzyskać więcej informacji, zobacz Symulowanie programów kwantowych na neutralnym sprzęcie urządzenia atomowego.
Rodzaje szumów w symulatorach urządzeń z atomami neutralnymi
W urządzeniach atomów neutralnych lasery fizycznie przenoszą kubity między różnymi strefami w urządzeniu. Szum może wystąpić w urządzeniach wykorzystujących atomy neutralne w następujących sytuacjach:
- Ruchy kubitów między strefami
- Operacje bramy kwantowej na kubitach w strefie interakcji
- Pomiary kubitów w strefie pomiaru
Urządzenia wykorzystujące neutralne atomy mają ograniczony zestaw bram kwantowych. Symulacje urządzeń z atomami neutralnymi w module QDK obsługują szum z następujących źródeł.
| Źródło szumu | Parametr modelu szumu | Opis źródła |
|---|---|---|
| brama kwantowa $S_X$ | sx |
Bramka z pojedynczym kubitem, przerzucanie o połowę bitu |
| bramka kwantowa $R_Z$ | rz |
Bramka z pojedynczym kubitem, ogólna rotacja faz |
| brama kwantowa $CZ$ | cz |
Bramka dwóch kubitów, sterowane odwrócenie fazy $Z$ |
| Pomiar i resetowanie kubitów | mresetz |
Pomiar pojedynczego kubitu i resetowanie do stanu 0 |
| Ruch kubitu | mov |
Ruch kubitu między strefami urządzeń |
W przypadku tych źródeł szumów można skonfigurować wszystkie typy szumów obsługiwane przez QDK symulatory.
Program kwantowy może zawierać dowolny typ bramy obsługiwanej przez profil docelowy QIR. Interfejsy API symulacji atomów neutralnych kompilują wejściowy kod QIR i dekomponują bramy programu na zestaw bram dostępnych na urządzeniach wykorzystujących atomy neutralne: $S_X$, $R_Z$ i $CZ$. Gdy używasz NeutralAtomDevice i NeutralAtomBackend do swoich symulacji, nie konfiguruj szumu dla innych bramek, ponieważ szum ten nie wpływa na symulację. Jeśli na przykład program zawiera bramki Hadamarda i skonfigurujesz szum dla bramek Hadamarda, ten szum nie jest uwzględniany w symulacji, ponieważ bramki Hadamarda są dekomponowane na bramki urządzenia z atomami neutralnymi.
Interfejsy API symulacji atomów neutralnych przekształcają wszystkie operacje pomiaru w programie w instrukcje pomiaru i resetowania. Aby uwzględnić szum pomiarowy, skonfiguruj szum na mresetz. Szum na mz nie jest uwzględniany w symulacji.
Tworzenie modelu szumu na potrzeby symulacji urządzenia neutralnego atomu
Aby utworzyć model szumu dla neutralnej symulacji urządzenia atomowego, wykonaj następujące kroki.
W VS Codeprogramie otwórz menu Widok i wybierz pozycję Paleta poleceń.
Wprowadź Utwórz: Nowy Jupyter Notebook. Jupyter Notebook Pusty plik zostanie otwarty na nowej karcie.
W pierwszej komórce notesu zaimportuj wymagane Python obiekty.
from qdk import init, TargetProfile from qdk.openqasm import compile from qdk.simulation import NeutralAtomDevice, NoiseConfig from qdk.widgets import HistogramW nowej komórce ustaw docelowy profil QIR urządzenia i skompiluj program OpenQASM do postaci QIR.
init(target_profile=TargetProfile.Base) qasm_src = """ include "stdgates.inc"; qubit[2] qs; bit[2] r; h qs[0]; cx qs[0], qs[1]; r = measure qs; """ qir = compile(qasm_src)Utwórz
NoiseConfigobiekt i zbuduj model szumu. Na przykład uruchom następujący kod w nowej komórce.noise = NoiseConfig() noise.sx.x = 0.01 noise.rz.z = 0.01 noise.cz.iy = 0.02 noise.mov.loss = 0.005Ten kod tworzy następujący model szumu, w którym szybkość szumu jest prawdopodobieństwem, że źródło powoduje odpowiedni typ szumu.
Źródło szumu Typ szumu Wskaźnik szumu bramka $S_X$ Przerzucanie bitowe 1% bramka $R_Z$ Odwrócenie fazy 1% bramka $CZ$ Bit flip i phase flip na kubicie docelowym 2% Ruch kubitu Utrata kubitu 0,5% Uruchom symulator z modelem szumu i wyświetl histogram wyników pomiaru. Na przykład uruchom następujący kod w nowej komórce, aby uruchomić 1000 zdjęć programu w symulatorze Clifford.
device = NeutralAtomDevice() results = device.simulate(qir, shots=1000, noise=noise, type="clifford") Histogram(results, labels="kets")