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

Buat proyek Q# di Visual Studio Code

  1. Di VS Code buka menu View, dan pilih Command Palette.

  2. Ketik Q#: Buat Project Baru.

  3. Pilih aplikasi konsol Mandiri.

  4. Pilih direktori untuk menahan proyek Anda, seperti direktori beranda Anda. Masukkan QuantumRNG sebagai nama proyek, lalu pilih Buat Project.

  5. Dari jendela yang muncul di bagian bawah, pilih Buka proyek baru.

  6. Anda akan melihat dua file: QuantumRNG.csproj, file proyek, dan Program.qs, yang berisi kode pemula.

  7. 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>
    
  8. 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.

  1. Dari menu Visual Studio Code, pilih Terminal>Terminal Baru.

  2. Masuk ke Azure menggunakan informasi masuk Anda. Anda akan mendapatkan daftar langganan yang terkait dengan akun Anda.

    az login
    
  3. 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
    
  4. 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.

  5. 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 submitpengiriman 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

Buat proyek Q# di Visual Studio Code

  1. Di VS Code buka menu View, dan pilih Command Palette.

  2. Ketik Q#: Buat Project Baru.

  3. Pilih aplikasi konsol Mandiri.

  4. Pilih direktori untuk menahan proyek Anda, seperti direktori beranda Anda. Masukkan QuantumRNG sebagai nama proyek, lalu pilih Buat Project.

  5. Dari jendela yang muncul di bagian bawah, pilih Buka proyek baru.

  6. Anda akan melihat dua file: QuantumRNG.csproj, file proyek, dan Program.qs, yang berisi kode pemula.

  7. 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>
    
  8. 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.

  1. Dari menu Visual Studio Code, pilih Terminal>Terminal Baru.

  2. Masuk ke Azure menggunakan informasi masuk Anda. Anda akan mendapatkan daftar langganan yang terkait dengan akun Anda.

    az login
    
  3. 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
    
  4. 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.

  5. 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 submitpengiriman 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

Buat proyek Q# di Visual Studio Code

  1. Di VS Code buka menu View, dan pilih Command Palette.

  2. Ketik Q#: Buat Project Baru.

  3. Pilih aplikasi konsol Mandiri.

  4. Pilih direktori untuk menahan proyek Anda, seperti direktori beranda Anda. Masukkan QuantumRNG sebagai nama proyek, lalu pilih Buat Project.

  5. Dari jendela yang muncul di bagian bawah, pilih Buka proyek baru.

  6. Anda akan melihat dua file: QuantumRNG.csproj, file proyek, dan Program.qs, yang berisi kode pemula.

  7. 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>
    
  8. 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 kuantum H dan MeasureEachZ untuk mengukur hasilnya. Saat ini, Rigetti targets tidak mendukung array yang dapat diubah, dan karenanya tidak mendukung ApplyToEach operasi atau MultiM .

Siapkan Azure CLI

Selanjutnya, kami akan mempersiapkan lingkungan Anda untuk menjalankan program terhadap ruang kerja yang Anda buat.

  1. Dari menu Visual Studio Code, pilih Terminal>Terminal Baru.

  2. Masuk ke Azure menggunakan informasi masuk Anda. Anda akan mendapatkan daftar langganan yang terkait dengan akun Anda.

    az login
    
  3. 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
    
  4. 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.

  5. 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 submitpengiriman 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#.