Mulai cepat: Membuat generator bilangan acak berbasis kuantum di Azure Quantum
Pelajari cara menggunakan Azure Quantum untuk membuat generator angka acak berbasis kuantum sederhana.
Prasyarat
Untuk menyelesaikan tutorial ini, Anda perlu
- Akun Azure dengan langganan aktif. Jika Anda tidak memiliki akun Azure, daftar secara gratis dan daftar untuk langganan prabayar.
- Visual Studio Code, yang dapat Anda unduh dan gunakan secara gratis.
- Ekstensi Microsoft QDK untuk VS Code.
- Ekstensi Azure CLI dan CLI kuantum.
- Ruang kerja Azure Quantum dengan penyedia IonQ diaktifkan. Untuk informasi selengkapnya, lihat Buat ruang kerja Azure Quantum.
Buat proyek Q# di Visual Studio Code
Di VS Code buka menu View, dan pilih Command Palette.
Ketik Q#: Buat Project Baru.
Pilih aplikasi konsol Mandiri.
Pilih direktori untuk menahan proyek Anda, seperti direktori beranda Anda. Masukkan QuantumRNG sebagai nama proyek, lalu pilih Buat Project.
Dari jendela yang muncul di bagian bawah, pilih Buka proyek baru.
Anda akan melihat dua file: QuantumRNG.csproj, file proyek, dan Program.qs, yang berisi kode pemula.
Mulailah dengan membuka file QuantumRNG.csproj dan menambahkan properti
ExecutionTarget
, yang akan memberi Anda umpan balik waktu desain tentang kompatibilitas program Anda untuk perangkat keras IonQ.<Project Sdk="Microsoft.Quantum.Sdk"> <PropertyGroup> <OutputType>Exe</OutputType> <TargetFramework>net6.0</TargetFramework> <ExecutionTarget>ionq.qpu</ExecutionTarget> </PropertyGroup> </Project>
Ganti isi Program.qs dengan program:
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); } }
Catatan
Jika Anda ingin mempelajari lebih lanjut tentang kode program ini, lihat Membuat program Q# pertama Anda dengan menggunakan Quantum Development Kit.
Siapkan Azure CLI
Selanjutnya, kami akan mempersiapkan lingkungan Anda untuk menjalankan program terhadap ruang kerja yang Anda buat.
Dari menu Visual Studio Code, pilih Terminal>Terminal Baru.
Masuk ke Azure menggunakan informasi masuk Anda. Anda akan mendapatkan daftar langganan yang terkait dengan akun Anda.
az login
Tentukan langganan yang ingin Anda gunakan dari langganan yang terkait dengan akun Azure Anda. Anda juga dapat menemukan ID langganan Anda di ikhtisar ruang kerja Anda di portal Microsoft Azure.
az account set -s MySubscriptionID
Gunakan
quantum workspace set
untuk memilih ruang kerja yang Anda buat di atas sebagai Workspace default. Perhatikan bahwa Anda juga perlu menentukan grup sumber daya dan lokasi tempat Anda membuatnya:az quantum workspace set -g MyResourceGroup -w MyWorkspace -l MyLocation -o table
Location Name ProvisioningState ResourceGroup StorageAccount Usable ---------- ----------- ------------------- --------------- ------------------ -------- MyLocation MyWorkspace Succeeded MyResourceGroup /subscriptions/... Yes
Catatan
Parameter MyLocation pada contoh di atas adalah Wilayah yang ditentukan pada halaman Buat Ruang Kerja Kuantum saat mengikuti langkah-langkah di Buat ruang kerja Azure Quantum. Wilayah dan lokasi adalah sinonim. Nilai parameter dapat dinyatakan dalam kasus campuran yang dikelilingi oleh kutipan, misalnya,
-l "West US 2"
, atau dalam kasus yang lebih rendah tanpa spasi atau kutipan, seperti-l westus2
.Di ruang kerja Anda, ada berbagai yang targets tersedia dari penyedia yang Anda tambahkan saat membuat ruang kerja. Anda dapat menampilkan daftar semua yang tersedia targets dengan perintah
az quantum target list -o table
:az quantum target list -o table
Bergantung pada penyedia yang Anda pilih, Anda akan melihat:
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
Catatan
Saat Anda mengirimkan pekerjaan di Azure Quantum, itu akan menunggu dalam antrean sampai penyedia siap untuk menjalankan program Anda. Kolom Waktu Antrean Rata-Rata dari target perintah daftar memperlihatkan kepada Anda berapa detik pekerjaan yang baru saja dijalankan menunggu dalam antrean. Ini dapat memberi Anda gambaran tentang berapa lama Anda mungkin harus menunggu.
Simulasikan program di penyedia IonQ
Sebelum Anda menjalankan program melawan perangkat keras nyata, kami sarankan untuk mensimulasikannya terlebih dahulu (jika mungkin, berdasarkan jumlah qubit yang diperlukan) untuk membantu memastikan bahwa algoritme Anda melakukan apa yang Anda inginkan. Untungnya, IonQ menyediakan simulator ideal yang dapat Anda gunakan.
Catatan
Anda juga dapat mensimulasikan program Q# secara lokal menggunakan :::no-loc text="Full state::: simulator.
Jalankan program Anda dengan az quantum execute --target-id ionq.simulator -o table
. Perintah ini akan mengompilasi program Anda, mengirimkannya ke Azure Quantum, dan menunggu sampai IonQ selesai mensimulasikan program. Setelah selesai, itu akan mengeluarkan histogram yang seharusnya terlihat seperti histogram di bawah ini:
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 ▐█ |
Ini menunjukkan frekuensi yang sama untuk masing-masing dari 16 kondisi yang mungkin untuk mengukur 4 qubit, yang merupakan apa yang kita harapkan dari simulator ideal! Ini berarti kami siap untuk menjalankannya di QPU.
Menjalankan program pada perangkat keras
Untuk menjalankan program pada perangkat keras, kita akan menggunakan perintah az quantum job submit
pengiriman pekerjaan asinkron. execute
Seperti perintah , ini akan mengkompilasi dan mengirimkan program Anda, tetapi tidak akan menunggu sampai eksekusi selesai. Kami merekomendasikan pola ini untuk berjalan melawan perangkat keras, karena Anda mungkin perlu menunggu beberapa saat agar pekerjaan Anda selesai. Untuk mendapatkan gambaran tentang berapa lama itu mungkin, Anda dapat menjalankan az quantum target list -o table
seperti yang dijelaskan sebelumnya.
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
Tabel menunjukkan bahwa pekerjaan Anda telah dikirimkan dan sedang menunggu gilirannya berjalan. Untuk memeriksa status, gunakan perintah az quantum job show
, pastikan untuk mengganti parameter job-id
dengan output ID dengan perintah sebelumnya, misalnya:
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
Akhirnya, Anda akan melihat di Status
tabel di atas berubah menjadi Succeeded
. Setelah selesai Anda bisa mendapatkan hasil dari pekerjaan dengan menjalankan az quantum job output
:
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 yang Anda terima mungkin sedikit berbeda dari yang di atas, tetapi Anda harus menemukan bahwa kondisi tersebut umumnya diamati dengan frekuensi yang sama.
Prasyarat
Untuk menyelesaikan tutorial ini, Anda perlu
- Akun Azure dengan langganan aktif. Jika Anda tidak memiliki akun Azure, daftar secara gratis dan daftar untuk langganan prabayar.
- Visual Studio Code, yang dapat Anda unduh dan gunakan secara gratis.
- Ekstensi Microsoft QDK untuk VS Code.
- Ekstensi Azure CLI dan CLI kuantum.
- Ruang kerja Azure Quantum dengan penyedia Quantinuum diaktifkan. Untuk informasi selengkapnya, lihat Buat ruang kerja Azure Quantum.
Buat proyek Q# di Visual Studio Code
Di VS Code buka menu View, dan pilih Command Palette.
Ketik Q#: Buat Project Baru.
Pilih aplikasi konsol Mandiri.
Pilih direktori untuk menahan proyek Anda, seperti direktori beranda Anda. Masukkan QuantumRNG sebagai nama proyek, lalu pilih Buat Project.
Dari jendela yang muncul di bagian bawah, pilih Buka proyek baru.
Anda akan melihat dua file: QuantumRNG.csproj, file proyek, dan Program.qs, yang berisi kode pemula.
Mulailah dengan membuka file QuantumRNG.csproj dan menambahkan properti
ExecutionTarget
, yang memberikan umpan balik waktu desain tentang kompatibilitas program Anda untuk perangkat keras Quantinuum.<Project Sdk="Microsoft.Quantum.Sdk"> <PropertyGroup> <OutputType>Exe</OutputType> <TargetFramework>net6.0</TargetFramework> <ExecutionTarget>quantinuum.qpu.h1-1</ExecutionTarget> </PropertyGroup> </Project>
Ganti isi Program.qs dengan program:
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); } }
Catatan
Jika Anda ingin mempelajari lebih lanjut tentang kode program ini, lihat Membuat program Q# pertama Anda dengan menggunakan Quantum Development Kit.
Siapkan Azure CLI
Selanjutnya, kami akan mempersiapkan lingkungan Anda untuk menjalankan program terhadap ruang kerja yang Anda buat.
Dari menu Visual Studio Code, pilih Terminal>Terminal Baru.
Masuk ke Azure menggunakan informasi masuk Anda. Anda akan mendapatkan daftar langganan yang terkait dengan akun Anda.
az login
Tentukan langganan yang ingin Anda gunakan dari langganan yang terkait dengan akun Azure Anda. Anda juga dapat menemukan ID langganan Anda di ikhtisar ruang kerja Anda di portal Microsoft Azure.
az account set -s MySubscriptionID
Gunakan
quantum workspace set
untuk memilih ruang kerja yang Anda buat di atas sebagai Workspace default. Perhatikan bahwa Anda juga perlu menentukan grup sumber daya dan lokasi tempat Anda membuatnya:az quantum workspace set -g MyResourceGroup -w MyWorkspace -l MyLocation -o table
Location Name ProvisioningState ResourceGroup StorageAccount Usable ---------- ----------- ------------------- --------------- ------------------ -------- MyLocation MyWorkspace Succeeded MyResourceGroup /subscriptions/... Yes
Catatan
Parameter MyLocation pada contoh di atas adalah Wilayah yang ditentukan pada halaman Buat Ruang Kerja Kuantum saat mengikuti langkah-langkah di Buat ruang kerja Azure Quantum. Wilayah dan lokasi adalah sinonim. Nilai parameter dapat dinyatakan dalam kasus campuran yang dikelilingi oleh kutipan, misalnya,
-l "West US 2"
, atau dalam kasus yang lebih rendah tanpa spasi atau kutipan, seperti-l westus2
.Di ruang kerja Anda, ada berbagai yang targets tersedia dari penyedia yang Anda tambahkan saat membuat ruang kerja. Anda dapat menampilkan daftar semua yang tersedia targets dengan perintah
az quantum target list -o table
:Catatan
Nama-nama target untuk Pemeriksa Sintaks Quantinuum, Emulator, dan QPU baru-baru ini berubah. Nama yang diperbarui digunakan dalam topik ini. Untuk detailnya, lihat topik penyedia Quantinuum .
az quantum target list -o table
yang memberi Anda output
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
Catatan
Saat Anda mengirimkan pekerjaan di Azure Quantum, itu akan menunggu dalam antrean sampai penyedia siap untuk menjalankan program Anda. Kolom Waktu Antrean Rata-rata dari target perintah daftar memperlihatkan kepada Anda berapa detik pekerjaan yang baru saja dijalankan menunggu dalam antrean. Ini dapat memberi Anda gambaran tentang berapa lama Anda mungkin harus menunggu.
Periksa program Anda di pemeriksa sintaks Quantinuum
Sebelum Anda menjalankan program terhadap perangkat keras nyata, sebaiknya jalankan terhadap simulator kuantum terlebih dahulu (jika memungkinkan, berdasarkan jumlah qubit yang diperlukan) untuk membantu memastikan bahwa algoritma Anda melakukan apa yang Anda inginkan.
Untuk menjalankan program Anda dengan pemeriksa sintaks Quantinuum, kirimkan perintah berikut:
az quantum execute --target-id quantinuum.sim.h1-1sc -o table
Perintah ini mengkompilasi program Anda, mengirimkannya ke pemeriksa sintaks Quantinuum, dan menunggu sampai selesai mensimulasikan program. Setelah selesai, ia menghasilkan histogram yang mirip dengan ini:
Result Frequency
--------- ----------- ----------------------
[0,0,0,0] 1.00000000 |████████████████████|
Melihat histogram, Anda mungkin melihat bahwa generator angka acak mengembalikan 0 setiap kali, yang tidak terlalu acak. Ini karena, sementara pemeriksa sintaks memastikan bahwa kode Anda akan berjalan dengan sukses pada perangkat keras Quantinuum, kode tersebut juga mengembalikan 0 untuk setiap pengukuran kuantum. Untuk generator angka acak nyata, Anda harus menjalankan sirkuit di perangkat keras kuantum.
Menjalankan program pada perangkat keras
Untuk menjalankan program pada perangkat keras, kita akan menggunakan perintah az quantum job submit
pengiriman pekerjaan asinkron. execute
Seperti perintah , ini akan mengkompilasi dan mengirimkan program Anda, tetapi tidak akan menunggu sampai eksekusi selesai. Kami merekomendasikan pola ini untuk berjalan melawan perangkat keras, karena Anda mungkin perlu menunggu beberapa saat agar pekerjaan Anda selesai. Untuk mendapatkan gambaran tentang berapa lama itu mungkin, Anda dapat menjalankan az quantum target list -o table
seperti yang dijelaskan sebelumnya.
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
Tabel menunjukkan bahwa pekerjaan Anda telah dikirimkan dan sedang menunggu gilirannya berjalan. Untuk memeriksa status, gunakan perintah az quantum job show
, pastikan untuk mengganti parameter job-id
dengan output Id dengan perintah sebelumnya, misalnya:
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
pada tabel di atas berubah menjadi Succeeded
. Setelah selesai Anda bisa mendapatkan hasil dari pekerjaan dengan menjalankan az quantum job output
:
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 ▐█ |
Histogram yang Anda terima mungkin sedikit berbeda dari yang di atas, tetapi Anda harus menemukan bahwa kondisi tersebut umumnya diamati dengan frekuensi yang sama.
Prasyarat
Untuk menyelesaikan tutorial ini, Anda perlu
- Akun Azure dengan langganan aktif. Jika Anda tidak memiliki akun Azure, daftarkan secara gratis dan daftar untuk langganan prabayar.
- Visual Studio Code, yang dapat Anda unduh dan gunakan secara gratis.
- Ekstensi Microsoft QDK untuk VS Code.
- Ekstensi Azure CLI dan CLI kuantum.
- Ruang kerja Azure Quantum dengan penyedia Rigetti diaktifkan. Untuk informasi selengkapnya, lihat Buat ruang kerja Azure Quantum.
Buat proyek Q# di Visual Studio Code
Di VS Code buka menu View, dan pilih Command Palette.
Ketik Q#: Buat Project Baru.
Pilih aplikasi konsol Mandiri.
Pilih direktori untuk menahan proyek Anda, seperti direktori beranda Anda. Masukkan QuantumRNG sebagai nama proyek, lalu pilih Buat Project.
Dari jendela yang muncul di bagian bawah, pilih Buka proyek baru.
Anda akan melihat dua file: QuantumRNG.csproj, file proyek, dan Program.qs, yang berisi kode pemula.
Mulailah dengan membuka file QuantumRNG.csproj dan menambahkan
ExecutionTarget
properti , yang memberikan umpan balik waktu desain tentang kompatibilitas program Anda untuk perangkat keras Rigetti.<Project Sdk="Microsoft.Quantum.Sdk"> <PropertyGroup> <OutputType>Exe</OutputType> <TargetFramework>net6.0</TargetFramework> <ExecutionTarget>rigetti.qpu.aspen-m-3</ExecutionTarget> </PropertyGroup> </Project>
Ganti isi Program.qs dengan program:
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); } }
Catatan
Saat mencapai hasil yang sama, kode contoh untuk Rigetti berbeda dari contoh lain dalam Mulai Cepat ini, menggunakan perulangan
for
untuk melakukan operasi kuantumH
danMeasureEachZ
untuk mengukur hasilnya. Saat ini, Rigetti targets tidak mendukung array yang dapat diubah, dan karenanya tidak mendukungApplyToEach
operasi atauMultiM
.
Siapkan Azure CLI
Selanjutnya, kami akan mempersiapkan lingkungan Anda untuk menjalankan program terhadap ruang kerja yang Anda buat.
Dari menu Visual Studio Code, pilih Terminal>Terminal Baru.
Masuk ke Azure menggunakan informasi masuk Anda. Anda akan mendapatkan daftar langganan yang terkait dengan akun Anda.
az login
Tentukan langganan yang ingin Anda gunakan dari langganan yang terkait dengan akun Azure Anda. Anda juga dapat menemukan ID langganan Anda di ikhtisar ruang kerja Anda di portal Microsoft Azure.
az account set -s MySubscriptionID
Gunakan
quantum workspace set
untuk memilih ruang kerja yang Anda buat di atas sebagai Workspace default. Perhatikan bahwa Anda juga perlu menentukan grup sumber daya dan lokasi tempat Anda membuatnya:az quantum workspace set -g MyResourceGroup -w MyWorkspace -l MyLocation -o table
Location Name ProvisioningState ResourceGroup StorageAccount Usable ---------- ----------- ------------------- --------------- ------------------ -------- MyLocation MyWorkspace Succeeded MyResourceGroup /subscriptions/... Yes
Catatan
Parameter MyLocation pada contoh di atas adalah Wilayah yang ditentukan pada halaman Buat Ruang Kerja Kuantum saat mengikuti langkah-langkah di Buat ruang kerja Azure Quantum. Wilayah dan lokasi adalah sinonim. Nilai parameter dapat dinyatakan dalam kasus campuran yang dikelilingi oleh kutipan, misalnya,
-l "West US 2"
, atau dalam kasus yang lebih rendah tanpa spasi atau kutipan, seperti-l westus2
.Di ruang kerja Anda, ada berbagai yang targets tersedia dari penyedia yang Anda tambahkan saat membuat ruang kerja. Anda dapat menampilkan daftar semua yang tersedia targets dengan perintah
az quantum target list -o table
:az quantum target list -o table
yang memberi Anda output yang mirip dengan
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
Catatan
Saat Anda mengirimkan pekerjaan di Azure Quantum, itu akan menunggu dalam antrean sampai penyedia siap untuk menjalankan program Anda. Kolom Waktu Antrean Rata-rata dari target perintah daftar memperlihatkan kepada Anda berapa detik pekerjaan yang baru saja dijalankan menunggu dalam antrean. Ini dapat memberi Anda gambaran tentang berapa lama Anda mungkin harus menunggu.
Simulasikan program di simulator Rigetti
Sebelum Anda menjalankan program terhadap perangkat keras nyata, sebaiknya jalankan terhadap simulator kuantum terlebih dahulu (jika memungkinkan, berdasarkan jumlah qubit yang diperlukan) untuk membantu memastikan bahwa algoritma Anda melakukan apa yang Anda inginkan.
Untuk menjalankan program Anda dengan simulator Rigetti QVM, kirimkan perintah berikut:
az quantum execute --target-id rigetti.sim.qvm -o table
Perintah ini mengkompilasi program Anda, mengirimkannya ke simulator Rigetti QVM, dan menunggu sampai selesai mensimulasikan program. Setelah selesai, ia menghasilkan histogram yang mirip dengan ini:
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 |█ |
Menjalankan program pada perangkat keras
Untuk menjalankan program pada perangkat keras, kita akan menggunakan perintah az quantum job submit
pengiriman pekerjaan asinkron. execute
Seperti perintah , ini akan mengkompilasi dan mengirimkan program Anda, tetapi tidak akan menunggu sampai eksekusi selesai. Kami merekomendasikan pola ini untuk berjalan melawan perangkat keras, karena Anda mungkin perlu menunggu beberapa saat agar pekerjaan Anda selesai. Untuk mendapatkan gambaran tentang berapa lama itu mungkin, Anda dapat menjalankan az quantum target list -o table
seperti yang dijelaskan sebelumnya.
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
Tabel menunjukkan bahwa pekerjaan Anda telah dikirimkan dan sedang menunggu gilirannya berjalan. Untuk memeriksa status, gunakan perintah az quantum job show
, pastikan untuk mengganti parameter job-id
dengan output ID dengan perintah sebelumnya, misalnya:
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
Akhirnya, Anda akan melihat Status
dalam tabel di atas berubah menjadi Succeeded
. Setelah selesai, Anda bisa mendapatkan hasil dari pekerjaan dengan menjalankan az quantum job output
:
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 ▐█ |
Histogram yang Anda terima mungkin sedikit berbeda dari yang di atas, tetapi Anda harus menemukan bahwa kondisi tersebut umumnya diamati dengan frekuensi yang sama.
Catatan
Jika Anda mengalami kesalahan saat bekerja dengan Azure Quantum, Anda dapat memeriksa daftar masalah umum kami.
Langkah berikutnya
Mulai cepat ini menunjukkan cara mulai menjalankan program Q# terhadap simulator komputasi kuantum dan QPU yang berbeda. Untuk informasi selengkapnya tentang penyedia yang tersedia, lihat dokumentasi gambaran umum penyedia komputasi kuantum.
Sebaiknya lanjutkan perjalanan Anda dengan mempelajari lebih lanjut tentang berbagai jenis targets di Azure Quantum, yang menentukan jenis program Q# yang dapat Anda jalankan terhadap penyedia tertentu. Anda mungkin juga tertarik untuk mempelajari cara mengirimkan pekerjaan Q# dengan Python, Jupyter Notebooks, atau Azure CLI.
Mencari lebih banyak sampel untuk dijalankan? Lihat direktori sampel untuk Azure Quantum.
Terakhir, jika Anda ingin mempelajari lebih lanjut tentang menulis program Q#, lihat panduan pengguna bahasa pemrograman Q#.