Comment visualiser des diagrammes de circuits quantiques avec le QDK

Les diagrammes de circuit quantique sont une représentation visuelle des algorithmes quantiques. Les diagrammes de circuit montrent le flux de qubits à travers un programme quantique, y compris les portes et les mesures que le programme applique aux qubits.

Dans cet article, vous allez apprendre à créer des diagrammes de circuit pour les programmes Q# et OpenQASM avec l’utilisation Microsoft Quantum Development KitQDK (Visual Studio CodeVS Code) et Jupyter Notebook.

Pour plus d’informations sur les diagrammes de circuits quantiques, consultez les conventions de diagramme de circuit quantique.

Prérequis

Pour créer des diagrammes de circuit à partir de fichiers VS CodeQ# et OpenQASM, installez les éléments suivants :

Pour créer des diagrammes de circuit à partir de programmes Python, Jupyter Notebookinstallez les éléments suivants :

  • Extension Python et Jupyter extension dans VS Code.

  • La dernière version de la qdk bibliothèque Python avec l'option jupyter en supplément.

    python -m pip install --upgrade "qdk[jupyter]"
    

Visualiser les circuits quantiques dans VS Code

Avec l’extension QDK dans VS Code, vous pouvez créer des diagrammes de circuit pour les fichiers Q# (.qs) et OpenQASM (.qasm).

Pour afficher un diagramme de circuit dans VS Code, procédez comme suit :

  1. Ouvrez un fichier Q# ou OpenQASM dans VS Code, ou chargez l'un des échantillons quantiques à partir du QDK.
  2. Choisissez la commande Circuit dans le code Lens qui précède votre programme.

La QDK fenêtre Circuit s’ouvre et affiche le diagramme de circuit pour votre programme. Par exemple, le diagramme de circuit suivant correspond à un programme qui produit un bit aléatoire. Le circuit place le qubit dans un état de superposition, puis mesure le qubit.

Capture d’écran de la QDK fenêtre Circuit montrant le diagramme de circuit pour un programme de bits aléatoire.

Conseil / Astuce

Sélectionnez un élément dans le diagramme de circuit pour mettre en surbrillance le code qui crée l’élément de circuit.

Afficher les diagrammes de circuit pour les opérations Q# individuelles

Pour visualiser le circuit quantique d’une opération individuelle dans un fichier Q#, choisissez la commande Circuit à partir de l’objectif de code qui précède l’opération.

Capture d’écran montrant Visual Studio Code comment visualiser le circuit d’une opération Q# unique dans un programme Q#.

Afficher les diagrammes de circuit lorsque vous déboguez

Lorsque vous utilisez le VS Code débogueur dans un programme Q#, vous pouvez visualiser le circuit quantique en fonction de l’état du programme au point d’arrêt actuel du débogueur.

  1. Choisissez la commande Debug de CodeLens qui précède le fonctionnement de votre point d'entrée.
  2. Dans le volet Exécuter et déboguer, développez la liste déroulante Circuit quantique dans le menu VARIABLES. Le QDK panneau Circuit s’ouvre, ce qui montre le circuit pendant que vous parcourez le programme.
  3. Définissez des points d’arrêt et parcourez votre code pour voir comment le circuit est mis à jour au fur et à mesure que votre programme s’exécute.

Visualiser les circuits quantiques dans Jupyter Notebook

Dans Jupyter Notebook, vous pouvez visualiser des circuits quantiques pour les programmes Q# et OpenQASM avec les modules qdk.qsharp et qdk.widgets Python. Le widgets module fournit un widget qui affiche un diagramme de circuit quantique en tant qu’image SVG.

Pour plus d’exemples de génération de diagrammes de circuits dans Jupyter Notebook, consultez l'exemple de notebook Circuits sur le dépôt QDK GitHub.

Afficher les diagrammes de circuit pour les programmes Q#

Pour afficher un diagramme de circuit pour un programme Q#, suivez ces étapes :Jupyter Notebook

  1. Dans VS Code, ouvrez le menu Affichage et choisissez Palette de commandes.

  2. Entrez Créer : Nouveau Jupyter Notebook. Un fichier vide Jupyter Notebook s’ouvre dans un nouvel onglet.

  3. Dans la première cellule du notebook, exécutez le code suivant pour importer le qsharp module.

    from qdk import qsharp
    
  4. Créez une cellule et entrez votre code Q#. Par exemple, le code suivant prépare un état Bell :

    %%qsharp
    
    // Prepare a Bell State.
    operation BellState() : Unit {
        use register = Qubit[2];
        H(register[0]);
        CNOT(register[0], register[1]);
    }
    
  5. Pour afficher un diagramme de circuit quantique, passez l’opération Q# à la qsharp.circuit fonction. Exécutez le code suivant dans une nouvelle cellule :

    qsharp.circuit("BellState()")
    

    Le résultat se présente ainsi :

    q_0    ── H ──── ● ──
    q_1    ───────── X ──
    
  6. Pour afficher une image SVG du circuit quantique, utilisez le widgets module. Créez une cellule, puis exécutez le code suivant pour visualiser le même circuit que celui que vous avez créé dans la cellule précédente.

    from qdk.widgets import Circuit
    
    Circuit(qsharp.circuit("BellState()"))
    

    Le diagramme de circuit ressemble à ceci :

    Capture d’écran montrant comment visualiser un circuit pour un programme Q#.

Afficher les diagrammes de circuit pour les opérations qui prennent des qubits comme entrée

Dans l’exemple d’état Bell précédent, l’opération BellState ne prend pas de qubits comme entrée. Si l’opération prend des qubits ou des tableaux de qubits comme entrée, omettez les parenthèses lorsque vous dessinez des diagrammes de circuit.

Par exemple, procédez comme suit pour dessiner des diagrammes de circuit pour une opération qui prend des qubits :

  1. Dans une nouvelle cellule, exécutez le code Q# suivant. Ce code prépare un état chat.

    %%qsharp
    
    operation PrepareCatState(register : Qubit[]) : Unit {
        H(register[0]);
        ApplyToEach(CNOT(register[0], _), register[1...]);
    }
    
  2. Pour dessiner le circuit en tant que diagramme de texte, exécutez le code suivant :

    Circuit(qsharp.circuit(operation="PrepareCatState"))
    
  3. Pour afficher le diagramme de circuit en tant qu’image SVG, exécutez le code suivant :

    Circuit(qsharp.circuit(operation="PrepareCatState"))
    

Lorsque l’opération prend un tableau de qubits (Qubit[]), le circuit affiche le tableau comme un registre de deux qubits.

Afficher les diagrammes de circuit pour les programmes OpenQASM

Pour afficher un diagramme de circuit pour un programme OpenQASM, Jupyter Notebookprocédez comme suit :

  1. Dans VS Code, ouvrez le menu Affichage et choisissez Palette de commandes.

  2. Entrez Créer : Nouveau Jupyter Notebook. Un fichier vide Jupyter Notebook s’ouvre dans un nouvel onglet.

  3. Dans la première cellule du notebook, exécutez le code suivant pour importer les objets nécessaires pour créer et appeler des fonctions OpenQASM avec la QDK bibliothèque Python :

    from qsharp.openqasm import import_openqasm, ProgramType
    
  4. Dans une nouvelle cellule, écrivez votre programme OpenQASM dans une chaîne Python et transmettez la chaîne à la import_openqasm fonction. Pour appeler le programme dans votre code Python, donnez un nom à la fonction, puis définissez program_type à ProgramType.File.

    source = """
        include "stdgates.inc";
        bit[2] c;
        qubit[2] q;
        h q[0];
        cx q[0], q[1];
        c = measure q;
    """
    
    import_openqasm(source, name="bell", program_type=ProgramType.File)
    
  5. Dans une nouvelle cellule, importez le programme OpenQASM en tant que fonction Python et appelez le programme pour obtenir les résultats de mesure.

    from qsharp.code.qasm_import import bell
    
    bell()
    
  6. Pour dessiner le circuit en tant que diagramme de texte, exécutez le code suivant dans une nouvelle cellule :

    from qdk.qsharp import circuit
    
    circuit(bell)
    

    Le résultat se présente ainsi :

    q_0    ── H ──── ● ──── M ──
                 │      ╘═══
    q_1    ───────── X ──── M ──
                        ╘═══
    
  7. Pour afficher le diagramme de circuit en tant qu’image SVG, exécutez le code suivant dans une nouvelle cellule :

    from qsharp_widgets import Circuit
    
    Circuit(qsharp.circuit(bell))
    

    Le diagramme de circuit ressemble à ceci :

    Capture d’écran d’un Jupyter Notebook montrant comment visualiser le circuit pour un programme OpenQASM.

Note

Pour les programmes OpenQASM, vous ne pouvez pas afficher les diagrammes de circuit pour des fonctions individuelles. Vous pouvez afficher des diagrammes de circuits uniquement pour l’ensemble du programme.