Rychlý start: Vytvoření kvantového generátoru náhodných čísel v Azure Quantum
Poznámka
Příklady v tomto tématu používají sadu Microsoft Quantum Development Kit (Classic QDK) a ještě nejsou kompatibilní se sadou Azure Quantum Development Kit Preview (Moderní sada QDK). Další informace o moderní sadě QDK najdete na wikiwebu QSharp Na GitHubu.
Naučte se používat Azure Quantum k vytvoření jednoduchého kvantového generátoru náhodných čísel.
Požadavky
K dokončení tohoto kurzu potřebujete
- Účet Azure s aktivním předplatným. Pokud nemáte účet Azure, zaregistrujte se zdarma a zaregistrujte si předplatné s průběžným platbou.
- Visual Studio Code, který si můžete zdarma stáhnout a používat.
- Rozšíření Microsoft QDK for VS Code.
- Azure CLI a rozšíření kvantového rozhraní příkazového řádku.
- Pracovní prostor Azure Quantum s povoleným poskytovatelem IonQ Další informace najdete v tématu Vytvoření pracovního prostoru Azure Quantum.
Vytvoření projektu Q# v editoru Visual Studio Code
Ve VS Code otevřete nabídku Zobrazení a vyberte Paleta příkazů.
Zadejte Q#: Create New Project (Q#: Create New Project).
Vyberte Standalone console application (Samostatná konzolová aplikace).
Vyberte adresář, do kterého chcete uložit svůj projekt, například váš domovský adresář. Jako název projektu zadejte QuantumRNG a potom vyberte Create Project (Vytvořit projekt).
V okně, které se zobrazí v dolní části, vyberte Open new project (Otevřít nový projekt).
Měli byste vidět dva soubory: QuantumRNG.csproj , soubor projektu a Program.qs, který obsahuje počáteční kód.
Začněte tím, že otevřete soubor QuantumRNG.csproj a přidáte
ExecutionTarget
vlastnost, která vám poskytne zpětnou vazbu při návrhu o kompatibilitě vašeho programu pro hardware IonQ.<Project Sdk="Microsoft.Quantum.Sdk"> <PropertyGroup> <OutputType>Exe</OutputType> <TargetFramework>net6.0</TargetFramework> <ExecutionTarget>ionq.qpu</ExecutionTarget> </PropertyGroup> </Project>
Obsah souboru Program.qs nahraďte programem:
namespace QuantumRNG { open Microsoft.Quantum.Intrinsic; open Microsoft.Quantum.Measurement; open Microsoft.Quantum.Canon; @EntryPoint() operation GenerateRandomBits() : Result[] { use qubits = Qubit[4]; ApplyToEach(H, qubits); return MultiM(qubits); } }
Poznámka
Pokud chcete získat další informace o tomto kódu programu, přečtěte si téma Vytvoření prvního programu v jazyce Q# pomocí sady Quantum Development Kit.
Příprava Azure CLI
Dále připravíme vaše prostředí pro spuštění programu v pracovním prostoru, který jste vytvořili.
V nabídce Editoru Visual Studio Code vyberte Terminál>Nový terminál.
Přihlaste se k Azure pomocí svých přihlašovacích údajů. Získáte seznam předplatných přidružených k vašemu účtu.
az login
Zadejte předplatné, které chcete použít, z předplatného přidruženého k vašemu účtu Azure. ID předplatného najdete také v přehledu pracovního prostoru v Azure Portal.
az account set -s MySubscriptionID
Použijte
quantum workspace set
k výběru pracovního prostoru, který jste vytvořili výše jako výchozí pracovní prostor. Všimněte si, že je také potřeba zadat skupinu prostředků a umístění, ve kterém jste ji vytvořili:az quantum workspace set -g MyResourceGroup -w MyWorkspace -l MyLocation -o table
Location Name ProvisioningState ResourceGroup StorageAccount Usable ---------- ----------- ------------------- --------------- ------------------ -------- MyLocation MyWorkspace Succeeded MyResourceGroup /subscriptions/... Yes
Poznámka
Parametr MyLocation ve výše uvedeném příkladu je oblast zadaná na stránce Vytvořit kvantový pracovní prostor při použití kroků v tématu Vytvoření pracovního prostoru Azure Quantum. Oblast a umístění jsou synonyma. Hodnota parametru může být vyjádřena ve smíšených a malých písmenech v uvozovkách,
-l "West US 2"
například , nebo malá písmena bez mezer nebo uvozovek, například-l westus2
.V pracovním prostoru jsou k dispozici různí targets poskytovatelé, které jste přidali při vytváření pracovního prostoru. Seznam všech dostupných targets položek můžete zobrazit pomocí příkazu
az quantum target list -o table
:az quantum target list -o table
V závislosti na vybraném poskytovateli uvidíte:
Provider Target-id Current Availability Average Queue Time (seconds) ------------ --------------------------------------------------- ---------------------- ------------------------------ ionq ionq.qpu Available 38715 ionq ionq.qpu.aria-1 Available 2042052 ionq ionq.simulator Available 2 microsoft-qc microsoft.estimator Available 0 quantinuum quantinuum.hqs-lt-s1 Available 232817 quantinuum quantinuum.hqs-lt-s1-apival Available 331 quantinuum quantinuum.hqs-lt-s2 Unavailable 0 quantinuum quantinuum.hqs-lt-s2-apival Available 7 quantinuum quantinuum.hqs-lt-s1-sim Available 19488 quantinuum quantinuum.hqs-lt-s2-sim Available 1577 quantinuum quantinuum.hqs-lt Available 0 quantinuum quantinuum.qpu.h1-1 Available 232817 quantinuum quantinuum.sim.h1-1sc Available 331 quantinuum quantinuum.qpu.h1-2 Unavailable 0 quantinuum quantinuum.sim.h1-2sc Available 7 quantinuum quantinuum.sim.h1-1e Available 19488 quantinuum quantinuum.sim.h1-2e Available 1577 quantinuum quantinuum.qpu.h1 Unavailable 0 rigetti rigetti.sim.qvm Available 5 rigetti rigetti.qpu.aspen-11 Unavailable 0 rigetti rigetti.qpu.aspen-m-2 Available 5 rigetti rigetti.qpu.aspen-m-3 Available 5 Microsoft microsoft.paralleltempering-parameterfree.cpu Available 0 Microsoft microsoft.paralleltempering.cpu Available 0 Microsoft microsoft.simulatedannealing-parameterfree.cpu Available 0 Microsoft microsoft.simulatedannealing.cpu Available 0 Microsoft microsoft.tabu-parameterfree.cpu Available 0 Microsoft microsoft.tabu.cpu Available 0 Microsoft microsoft.qmc.cpu Available 0 Microsoft microsoft.populationannealing.cpu Available 0 Microsoft microsoft.populationannealing-parameterfree.cpu Available 0 Microsoft microsoft.substochasticmontecarlo.cpu Available 0 Microsoft microsoft.substochasticmontecarlo-parameterfree.cpu Available 0
Poznámka
Když odešlete úlohu v Azure Quantum, počká ve frontě, dokud nebude poskytovatel připraven spustit váš program. Sloupec targetAverage Queue Time (Průměrná doba fronty) příkazu seznamu ukazuje, kolik sekund nedávno spustily úlohy čekající ve frontě. Můžete tak získat představu o tom, jak dlouho možná budete muset čekat.
Simulace programu ve zprostředkovatele IonQ
Než spustíte program na skutečném hardwaru, doporučujeme ho nejprve simulovat (pokud je to možné na základě požadovaného počtu qubitů), abyste měli jistotu, že váš algoritmus dělá to, co chcete. IonQ naštěstí poskytuje idealizovaný simulátor, který můžete použít.
Poznámka
Programy v jazyce Q# můžete také simulovat místně pomocí simulátoru :::no-loc text="Úplný stav::: .
Spusťte program pomocí az quantum execute --target-id ionq.simulator -o table
příkazu . Tento příkaz zkompiluje program, odešle ho do Azure Quantum a počká, dokud IonQ nedokončí simulaci programu. Po dokončení se zobrazí histogram, který by měl vypadat podobně jako následující:
az quantum execute --target-id ionq.simulator -o table
Result Frequency
--------- ----------- -------------------------
[0,0,0,0] 0.06250000 ▐█ |
[1,0,0,0] 0.06250000 ▐█ |
[0,1,0,0] 0.06250000 ▐█ |
[1,1,0,0] 0.06250000 ▐█ |
[0,0,1,0] 0.06250000 ▐█ |
[1,0,1,0] 0.06250000 ▐█ |
[0,1,1,0] 0.06250000 ▐█ |
[1,1,1,0] 0.06250000 ▐█ |
[0,0,0,1] 0.06250000 ▐█ |
[1,0,0,1] 0.06250000 ▐█ |
[0,1,0,1] 0.06250000 ▐█ |
[1,1,0,1] 0.06250000 ▐█ |
[0,0,1,1] 0.06250000 ▐█ |
[1,0,1,1] 0.06250000 ▐█ |
[0,1,1,1] 0.06250000 ▐█ |
[1,1,1,1] 0.06250000 ▐█ |
To ukazuje stejnou frekvenci pro každý z 16 možných stavů měření 4 qubitů, což je to, co očekáváme od idealizovaného simulátoru! To znamená, že jsme připraveni ji spustit na QPU.
Spuštění programu na hardwaru
Ke spuštění programu na hardwaru použijeme asynchronní příkaz az quantum job submit
pro odeslání úlohy . Stejně jako příkaz execute
se tento příkaz zkompiluje a odešle program, ale nebude čekat na dokončení provádění. Tento model doporučujeme pro spuštění na hardwaru, protože možná budete muset chvíli počkat, než se úloha dokončí. Pokud chcete získat představu o tom, jak dlouho to může být, můžete spustit příkaz, az quantum target list -o table
jak je popsáno výše.
az quantum job submit --target-id ionq.qpu -o table
Name ID Status Target Submission time
---------- ------------------------------------ -------- -------- ---------------------------------
QuantumRNG 5aa8ce7a-25d2-44db-bbc3-87e48a97249c Waiting ionq.qpu 2020-10-22T22:41:27.8855301+00:00
Tabulka ukazuje, že vaše úloha byla odeslána a čeká na její spuštění. Pokud chcete zkontrolovat stav, použijte az quantum job show
příkaz a nezapomeňte nahradit job-id
parametr výstupem ID předchozím příkazem, například:
az quantum job show -o table --job-id 5aa8ce7a-25d2-44db-bbc3-87e48a97249c
Name ID Status Target Submission time
---------- ------------------------------------ -------- -------- ---------------------------------
QuantumRNG 5aa8ce7a-25d2-44db-bbc3-87e48a97249c Waiting ionq.qpu 2020-10-22T22:41:27.8855301+00:00
Nakonec se Status
ve výše uvedené tabulce změní na Succeeded
. Jakmile to uděláte, můžete získat výsledky z úlohy spuštěním az quantum job output
příkazu :
az quantum job output -o table --job-id 5aa8ce7a-25d2-44db-bbc3-87e48a97249c
Result Frequency
--------- ----------- -------------------------
[0,0,0,0] 0.05200000 ▐█ |
[1,0,0,0] 0.07200000 ▐█ |
[0,1,0,0] 0.05000000 ▐█ |
[1,1,0,0] 0.06800000 ▐█ |
[0,0,1,0] 0.04600000 ▐█ |
[1,0,1,0] 0.06000000 ▐█ |
[0,1,1,0] 0.06400000 ▐█ |
[1,1,1,0] 0.07600000 ▐██ |
[0,0,0,1] 0.04800000 ▐█ |
[1,0,0,1] 0.06200000 ▐█ |
[0,1,0,1] 0.07400000 ▐█ |
[1,1,0,1] 0.08000000 ▐██ |
[0,0,1,1] 0.05800000 ▐█ |
[1,0,1,1] 0.06800000 ▐█ |
[0,1,1,1] 0.05200000 ▐█ |
[1,1,1,1] 0.07000000 ▐█ |
Histogram, který obdržíte, se může mírně lišit od výše uvedeného, ale měli byste zjistit, že stavy jsou obecně pozorovány se stejnou frekvencí.
Požadavky
K dokončení tohoto kurzu potřebujete
- Účet Azure s aktivním předplatným. Pokud nemáte účet Azure, zaregistrujte se zdarma a zaregistrujte si předplatné s průběžným platbou.
- Visual Studio Code, který si můžete zdarma stáhnout a používat.
- Rozšíření Microsoft QDK for VS Code.
- Azure CLI a rozšíření kvantového rozhraní příkazového řádku.
- Pracovní prostor Azure Quantum s povoleným poskytovatelem Quantinuum Další informace najdete v tématu Vytvoření pracovního prostoru Azure Quantum.
Vytvoření projektu Q# v editoru Visual Studio Code
Ve VS Code otevřete nabídku Zobrazení a vyberte Paleta příkazů.
Zadejte Q#: Create New Project (Q#: Create New Project).
Vyberte Standalone console application (Samostatná konzolová aplikace).
Vyberte adresář, do kterého chcete uložit svůj projekt, například váš domovský adresář. Jako název projektu zadejte QuantumRNG a potom vyberte Create Project (Vytvořit projekt).
V okně, které se zobrazí v dolní části, vyberte Open new project (Otevřít nový projekt).
Měli byste vidět dva soubory: QuantumRNG.csproj , soubor projektu a Program.qs, který obsahuje počáteční kód.
Začněte tím, že otevřete soubor QuantumRNG.csproj a přidáte
ExecutionTarget
vlastnost, která poskytuje zpětnou vazbu v době návrhu o kompatibilitě programu pro hardware společnosti Quantinuum.<Project Sdk="Microsoft.Quantum.Sdk"> <PropertyGroup> <OutputType>Exe</OutputType> <TargetFramework>net6.0</TargetFramework> <ExecutionTarget>quantinuum.qpu.h1-1</ExecutionTarget> </PropertyGroup> </Project>
Obsah souboru Program.qs nahraďte programem:
namespace QuantumRNG { open Microsoft.Quantum.Intrinsic; open Microsoft.Quantum.Measurement; open Microsoft.Quantum.Canon; @EntryPoint() operation GenerateRandomBits() : Result[] { use qubits = Qubit[4]; ApplyToEach(H, qubits); return MultiM(qubits); } }
Poznámka
Pokud chcete získat další informace o tomto kódu programu, přečtěte si téma Vytvoření prvního programu v jazyce Q# pomocí sady Quantum Development Kit.
Příprava Azure CLI
Dále připravíme vaše prostředí pro spuštění programu v pracovním prostoru, který jste vytvořili.
V nabídce Editoru Visual Studio Code vyberte Terminál>Nový terminál.
Přihlaste se k Azure pomocí svých přihlašovacích údajů. Získáte seznam předplatných přidružených k vašemu účtu.
az login
Zadejte předplatné, které chcete použít, z předplatného přidruženého k vašemu účtu Azure. ID předplatného najdete také v přehledu pracovního prostoru v Azure Portal.
az account set -s MySubscriptionID
Použijte
quantum workspace set
k výběru pracovního prostoru, který jste vytvořili výše jako výchozí pracovní prostor. Všimněte si, že je také potřeba zadat skupinu prostředků a umístění, ve kterém jste ji vytvořili:az quantum workspace set -g MyResourceGroup -w MyWorkspace -l MyLocation -o table
Location Name ProvisioningState ResourceGroup StorageAccount Usable ---------- ----------- ------------------- --------------- ------------------ -------- MyLocation MyWorkspace Succeeded MyResourceGroup /subscriptions/... Yes
Poznámka
Parametr MyLocation ve výše uvedeném příkladu je oblast zadaná na stránce Vytvořit pracovní prostor Quantum při použití kroků v části Vytvoření pracovního prostoru Azure Quantum. Oblast a Umístění jsou synonyma. Hodnota parametru může být vyjádřena ve smíšených malých a malých písmenech v uvozovkách,
-l "West US 2"
například , nebo malá písmena bez mezer nebo uvozovek, například-l westus2
.V pracovním prostoru jsou k dispozici různí targets poskytovatelé než poskytovatelé, které jste přidali při vytváření pracovního prostoru. Pomocí příkazu
az quantum target list -o table
můžete zobrazit seznam všech dostupných targets možností:Poznámka
Nedávno target se změnily názvy pro nástroje Quantinuum Syntax Checker, Emulators a QPU. Aktualizované názvy se používají v tomto tématu. Podrobnosti najdete v tématu o poskytovateli Quantinuum .
az quantum target list -o table
který vám poskytne výstup
Provider Target-id Current Availability Average Queue Time (seconds) ------------ --------------------------------------------------- ---------------------- ------------------------------ ionq ionq.qpu Available 38715 ionq ionq.qpu.aria-1 Available 2042052 ionq ionq.simulator Available 2 microsoft-qc microsoft.estimator Available 0 quantinuum quantinuum.hqs-lt-s1 Available 232817 quantinuum quantinuum.hqs-lt-s1-apival Available 331 quantinuum quantinuum.hqs-lt-s2 Unavailable 0 quantinuum quantinuum.hqs-lt-s2-apival Available 7 quantinuum quantinuum.hqs-lt-s1-sim Available 19488 quantinuum quantinuum.hqs-lt-s2-sim Available 1577 quantinuum quantinuum.hqs-lt Available 0 quantinuum quantinuum.qpu.h1-1 Available 232817 quantinuum quantinuum.sim.h1-1sc Available 331 quantinuum quantinuum.qpu.h1-2 Unavailable 0 quantinuum quantinuum.sim.h1-2sc Available 7 quantinuum quantinuum.sim.h1-1e Available 19488 quantinuum quantinuum.sim.h1-2e Available 1577 quantinuum quantinuum.qpu.h1 Unavailable 0 rigetti rigetti.sim.qvm Available 5 rigetti rigetti.qpu.aspen-11 Unavailable 0 rigetti rigetti.qpu.aspen-m-2 Available 5 rigetti rigetti.qpu.aspen-m-3 Available 5 Microsoft microsoft.paralleltempering-parameterfree.cpu Available 0 Microsoft microsoft.paralleltempering.cpu Available 0 Microsoft microsoft.simulatedannealing-parameterfree.cpu Available 0 Microsoft microsoft.simulatedannealing.cpu Available 0 Microsoft microsoft.tabu-parameterfree.cpu Available 0 Microsoft microsoft.tabu.cpu Available 0 Microsoft microsoft.qmc.cpu Available 0 Microsoft microsoft.populationannealing.cpu Available 0 Microsoft microsoft.populationannealing-parameterfree.cpu Available 0 Microsoft microsoft.substochasticmontecarlo.cpu Available 0 Microsoft microsoft.substochasticmontecarlo-parameterfree.cpu Available 0
Poznámka
Když odešlete úlohu ve službě Azure Quantum, počká ve frontě, dokud poskytovatel nebude připravený spustit váš program. Sloupec targetAverage Queue Time (Průměrná doba fronty) příkazu seznamu ukazuje, kolik sekund nedávno čekaly úlohy ve frontě. Získáte tak představu o tom, jak dlouho budete muset čekat.
Kontrola programu v nástroji pro kontrolu syntaxe Quantinuum
Než program spustíte na skutečném hardwaru, doporučujeme ho nejprve spustit v kvantovém simulátoru (pokud je to možné, na základě požadovaného počtu qubitů), aby se zajistilo, že váš algoritmus dělá to, co chcete.
Pokud chcete program spustit pomocí kontroly syntaxe Quantinuum, odešlete následující příkaz:
az quantum execute --target-id quantinuum.sim.h1-1sc -o table
Tento příkaz zkompiluje program, odešle ho do kontroly syntaxe Quantinuum a počká, dokud nedokončí simulaci programu. Po dokončení se zobrazí histogram podobný tomuto:
Result Frequency
--------- ----------- ----------------------
[0,0,0,0] 1.00000000 |████████████████████|
Při pohledu na histogram si můžete všimnout, že generátor náhodných čísel pokaždé vrátil hodnotu 0, což není příliš náhodné. Důvodem je to, že zatímco kontrola syntaxe zajišťuje úspěšné spuštění kódu na hardwaru Quantinuum, vrátí také hodnotu 0 pro každé kvantové měření. Pro generátor skutečně náhodných čísel musíte okruh spustit na kvantovém hardwaru.
Spuštění programu na hardwaru
Ke spuštění programu na hardwaru použijeme příkaz az quantum job submit
pro asynchronní odesílání úloh . Podobně jako u execute
příkazu se program zkompiluje a odešle, ale nebude čekat na dokončení provádění. Tento model doporučujeme pro spuštění na hardwaru, protože možná budete muset chvíli počkat, než se úloha dokončí. Pokud chcete získat představu o tom, jak dlouho to může být, můžete spustit příkaz az quantum target list -o table
, jak je popsáno výše.
az quantum job submit --target-id quantinuum.qpu.h1-1 -o table
Name ID Status Target Submission time
---------- ------------------------------------ -------- -------- ---------------------------------
QuantumRNG b4d17c63-2119-4d92-91d9-c18d1a07e08f Waiting quantinuum.qpu.h1-1 2020-01-12T22:41:27.8855301+00:00
Tabulka ukazuje, že vaše úloha byla odeslána a čeká na její spuštění. Pokud chcete zkontrolovat stav, použijte az quantum job show
příkaz . Nezapomeňte nahradit job-id
parametr výstupem ID předchozího příkazu, například:
az quantum job show -o table --job-id b4d17c63-2119-4d92-91d9-c18d1a07e08f
Name ID Status Target Submission time
---------- ------------------------------------ -------- -------- ---------------------------------
QuantumRNG b4d17c63-2119-4d92-91d9-c18d1a07e08f Waiting quantinuum.qpu.h1-1 2020-10-22T22:41:27.8855301+00:00
Status
ve výše uvedené tabulce se změní na Succeeded
. Jakmile to uděláte, můžete získat výsledky z úlohy spuštěním az quantum job output
příkazu :
az quantum job output -o table --job-id b4d17c63-2119-4d92-91d9-c18d1a07e08f
Result Frequency
--------- ----------- -------------------------
[0,0,0,0] 0.05200000 ▐█ |
[1,0,0,0] 0.07200000 ▐█ |
[0,1,0,0] 0.05000000 ▐█ |
[1,1,0,0] 0.06800000 ▐█ |
[0,0,1,0] 0.04600000 ▐█ |
[1,0,1,0] 0.06000000 ▐█ |
[0,1,1,0] 0.06400000 ▐█ |
[1,1,1,0] 0.07600000 ▐██ |
[0,0,0,1] 0.04800000 ▐█ |
[1,0,0,1] 0.06200000 ▐█ |
[0,1,0,1] 0.07400000 ▐█ |
[1,1,0,1] 0.08000000 ▐██ |
[0,0,1,1] 0.05800000 ▐█ |
[1,0,1,1] 0.06800000 ▐█ |
[0,1,1,1] 0.05200000 ▐█ |
[1,1,1,1] 0.07000000 ▐█ |
Zobrazený histogram se může mírně lišit od výše uvedeného histogramu, ale měli byste zjistit, že stavy jsou obecně pozorovány se stejnou frekvencí.
Požadavky
K dokončení tohoto kurzu potřebujete
- Účet Azure s aktivním předplatným. Pokud nemáte účet Azure, zaregistrujte se zdarma a zaregistrujte si předplatné s průběžnými platbou.
- Visual Studio Code, který si můžete zdarma stáhnout a používat.
- Rozšíření Microsoft QDK pro VS Code
- Azure CLI a rozšíření quantum CLI.
- Pracovní prostor Azure Quantum s povoleným poskytovatelem Rigetti . Další informace najdete v tématu Vytvoření pracovního prostoru Azure Quantum.
Vytvoření projektu Q# v editoru Visual Studio Code
Ve VS Code otevřete nabídku View (Zobrazení ) a vyberte Command Palette (Paleta příkazů).
Zadejte Q#: Create New Project (Vytvořit nový projekt).
Vyberte Standalone console application (Samostatná konzolová aplikace).
Vyberte adresář, do kterého chcete uložit svůj projekt, například váš domovský adresář. Jako název projektu zadejte QuantumRNG a potom vyberte Create Project (Vytvořit projekt).
V okně, které se zobrazí v dolní části, vyberte Open new project (Otevřít nový projekt).
Měly by se zobrazit dva soubory: QuantumRNG.csproj , soubor projektu a Program.qs, který obsahuje počáteční kód.
Začněte otevřením souboru QuantumRNG.csproj a přidáním
ExecutionTarget
vlastnosti, která poskytuje zpětnou vazbu v době návrhu týkající se kompatibility programu pro hardware společnosti Rigetti.<Project Sdk="Microsoft.Quantum.Sdk"> <PropertyGroup> <OutputType>Exe</OutputType> <TargetFramework>net6.0</TargetFramework> <ExecutionTarget>rigetti.qpu.aspen-m-3</ExecutionTarget> </PropertyGroup> </Project>
Obsah souboru Program.qs nahraďte programem :
namespace QuantumRNG { open Microsoft.Quantum.Intrinsic; open Microsoft.Quantum.Measurement; open Microsoft.Quantum.Canon; @EntryPoint() operation GenerateRandomBits() : Result[] { use qubits = Qubit[4]; for q in qubits { H(q); } return MeasureEachZ(qubits); } }
Poznámka
Při dosažení stejných výsledků se vzorový kód pro Rigetti liší od ostatních příkladů v tomto rychlém startu a používá smyčku
for
k provedení kvantovéH
operace aMeasureEachZ
měření výsledků. V současné době Rigetti targets nepodporují měnitelná pole, a proto nepodporujíApplyToEach
operace neboMultiM
.
Příprava Azure CLI
V dalším kroku připravíme vaše prostředí pro spuštění programu v pracovním prostoru, který jste vytvořili.
V nabídce editoru Visual Studio Code vyberteTerminal New Terminal (Nový terminál).>
Přihlaste se k Azure pomocí svých přihlašovacích údajů. Zobrazí se seznam předplatných přidružených k vašemu účtu.
az login
Zadejte předplatné, které chcete použít, z předplatného přidruženého k vašemu účtu Azure. ID předplatného najdete také v přehledu pracovního prostoru v Azure Portal.
az account set -s MySubscriptionID
Použijte
quantum workspace set
k výběru pracovního prostoru, který jste vytvořili výše jako výchozí pracovní prostor. Všimněte si, že je také potřeba zadat skupinu prostředků a umístění, ve kterém jste ji vytvořili:az quantum workspace set -g MyResourceGroup -w MyWorkspace -l MyLocation -o table
Location Name ProvisioningState ResourceGroup StorageAccount Usable ---------- ----------- ------------------- --------------- ------------------ -------- MyLocation MyWorkspace Succeeded MyResourceGroup /subscriptions/... Yes
Poznámka
Parametr MyLocation ve výše uvedeném příkladu je oblast zadaná na stránce Vytvořit pracovní prostor Quantum při použití kroků v části Vytvoření pracovního prostoru Azure Quantum. Oblast a Umístění jsou synonyma. Hodnota parametru může být vyjádřena ve smíšených malých a malých písmenech v uvozovkách,
-l "West US 2"
například , nebo malá písmena bez mezer nebo uvozovek, například-l westus2
.V pracovním prostoru jsou k dispozici různí targets poskytovatelé než poskytovatelé, které jste přidali při vytváření pracovního prostoru. Pomocí příkazu
az quantum target list -o table
můžete zobrazit seznam všech dostupných targets možností:az quantum target list -o table
, který vám poskytne výstup podobný
Provider Target-id Current Availability Average Queue Time ---------- ------------------------------------------- -------------------- -------------------- ionq ionq.qpu Available 0 ionq ionq.qpu.aria-1 Available 0 ionq ionq.simulator Available 0 microsoft-q c microsoft.estimator quantinuum quantinuum.qpu.h1-1 Available 0 quantinuum quantinuum.qpu.h1-1sc Available 0 quantinuum quantinuum.qpu.h1-1e Available 0 quantinuum quantinuum.qpu.h1-2 Available 0 quantinuum quantinuum.qpu.h1-2sc Available 0 quantinuum quantinuum.qpu.h1-2e Available 0 rigetti rigetti.sim.qvm Available 5 rigetti rigetti.qpu.aspen-11 Unavailable 0 rigetti rigetti.qpu.aspen-m-2 Available 5 rigetti rigetti.qpu.aspen-m-3 Available 5
Poznámka
Když odešlete úlohu ve službě Azure Quantum, počká ve frontě, dokud poskytovatel nebude připravený spustit váš program. Sloupec targetAverage Queue Time (Průměrná doba fronty) příkazu seznamu ukazuje, kolik sekund nedávno čekaly úlohy ve frontě. Získáte tak představu o tom, jak dlouho budete muset čekat.
Simulace programu v simulátoru Rigetti
Než program spustíte na skutečném hardwaru, doporučujeme ho nejprve spustit v kvantovém simulátoru (pokud je to možné, na základě požadovaného počtu qubitů), aby se zajistilo, že váš algoritmus dělá to, co chcete.
Pokud chcete spustit program pomocí simulátoru Rigetti QVM, odešlete následující příkaz:
az quantum execute --target-id rigetti.sim.qvm -o table
Tento příkaz zkompiluje program, odešle ho do simulátoru Rigetti QVM a počká, dokud nedokončí simulaci programu. Po dokončení se zobrazí histogram podobný tomuto:
Result Frequency
------------ ----------- ----------------------[0, 0, 0, 0] 0.06600000 |█ |
[1, 1, 1, 1] 0.05800000 |█ |
[0, 0, 0, 1] 0.06000000 |█ |
[0, 1, 1, 1] 0.07400000 |█ |
[0, 0, 1, 1] 0.05800000 |█ |
[1, 0, 1, 0] 0.06400000 |█ |
[1, 1, 0, 1] 0.07600000 |██ |
[1, 1, 0, 0] 0.04400000 |█ |
[0, 1, 0, 1] 0.06000000 |█ |
[1, 0, 1, 1] 0.07400000 |█ |
[0, 1, 0, 0] 0.05800000 |█ |
[0, 0, 1, 0] 0.07200000 |█ |
[0, 1, 1, 0] 0.06800000 |█ |
[1, 1, 1, 0] 0.05600000 |█ |
[1, 0, 0, 0] 0.05600000 |█ |
[1, 0, 0, 1] 0.05600000 |█ |
Spuštění programu na hardwaru
Ke spuštění programu na hardwaru použijeme příkaz az quantum job submit
pro asynchronní odesílání úloh . Podobně jako u execute
příkazu se program zkompiluje a odešle, ale nebude čekat na dokončení provádění. Tento model doporučujeme pro spuštění na hardwaru, protože možná budete muset chvíli počkat, než se úloha dokončí. Pokud chcete získat představu o tom, jak dlouho to může být, můžete spustit příkaz az quantum target list -o table
, jak je popsáno výše.
az quantum job submit --target-id rigetti.qpu.aspen-m-3 -o table
Name ID Status Target Submission time
---------- ------------------------------------ -------- -------- ---------------------------------
QuantumRNG b4d17c63-2119-4d92-91d9-c18d1a07e08f Waiting rigetti.qpu.aspen-m-3 2020-01-12T22:41:27.8855301+00:00
Tabulka ukazuje, že vaše úloha byla odeslána a čeká na její spuštění. Pokud chcete zkontrolovat stav, použijte az quantum job show
příkaz . Nezapomeňte nahradit job-id
parametr výstupem ID předchozího příkazu, například:
az quantum job show -o table --job-id b4d17c63-2119-4d92-91d9-c18d1a07e08f
Name ID Status Target Submission time
---------- ------------------------------------ -------- -------- ---------------------------------
QuantumRNG b4d17c63-2119-4d92-91d9-c18d1a07e08f Waiting rigetti.qpu.aspen-m-3 2020-10-22T22:41:27.8855301+00:00
Nakonec uvidíte Status
ve výše uvedené tabulce změnu na Succeeded
. Jakmile to uděláte, můžete získat výsledky z úlohy spuštěním az quantum job output
příkazu :
az quantum job output -o table --job-id b4d17c63-2119-4d92-91d9-c18d1a07e08f
Result Frequency
--------- ----------- -------------------------
[0,0,0,0] 0.05200000 ▐█ |
[1,0,0,0] 0.07200000 ▐█ |
[0,1,0,0] 0.05000000 ▐█ |
[1,1,0,0] 0.06800000 ▐█ |
[0,0,1,0] 0.04600000 ▐█ |
[1,0,1,0] 0.06000000 ▐█ |
[0,1,1,0] 0.06400000 ▐█ |
[1,1,1,0] 0.07600000 ▐██ |
[0,0,0,1] 0.04800000 ▐█ |
[1,0,0,1] 0.06200000 ▐█ |
[0,1,0,1] 0.07400000 ▐█ |
[1,1,0,1] 0.08000000 ▐██ |
[0,0,1,1] 0.05800000 ▐█ |
[1,0,1,1] 0.06800000 ▐█ |
[0,1,1,1] 0.05200000 ▐█ |
[1,1,1,1] 0.07000000 ▐█ |
Zobrazený histogram se může mírně lišit od výše uvedeného histogramu, ale měli byste zjistit, že stavy jsou obecně pozorovány se stejnou frekvencí.
Poznámka
Pokud při práci s Azure Quantum narazíte na chybu, můžete se podívat na náš seznam běžných problémů.
Další kroky
Tento rychlý start ukázal, jak začít spouštět programy v Q# v různých simulátorech kvantových výpočtů a QPU. Další informace o dostupných poskytovatelích najdete v dokumentaci s přehledem zprostředkovatele kvantových výpočtů .
Doporučujeme pokračovat v cestě tím, že se dozvíte více o různých typech targets nástrojů v Azure Quantum, které určují typy programů q#, které můžete spouštět pro daného poskytovatele. Mohlo by vás také zajímat, jak odesílat úlohy Q# pomocí Pythonu, poznámkových bloků Jupyter nebo Azure CLI.
Hledáte další ukázky ke spuštění? Podívejte se na adresář ukázek pro Azure Quantum.
A konečně, pokud se chcete dozvědět více o psaní programů v Q#, projděte si uživatelskou příručku pro programovací jazyk Q#.