Remarque
L’accès à cette page requiert une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page requiert une autorisation. Vous pouvez essayer de modifier des répertoires.
Le MicrosoftQuantum Development Kit package (QDK) Python inclut des simulateurs quantiques locaux que vous pouvez utiliser pour tester et développer des programmes quantiques. Cet article explique comment installer les simulateurs et exécuter les programmes Q#, OpenQASM, Qiskit et QIR dans Python ou Jupyter Notebook.
Le QDKPython package comprend quatre simulateurs principaux :
- Simulateur de parcimonie
- Simulateur de stabilisateur
- GPU simulateur
- CPU simulateur
Pour plus d’informations sur les QDK simulateurs quantiques, consultez Vue d’ensemble des simulateurs quantiques dans le QDK.
Pour exécuter directement les programmes QDK ou QDK dans l’extension pour Visual Studio Code (VS Code), consultez OpenQASM.
Prerequisites
Pour suivre les exemples Jupyter Notebook de cet article, installez ces outils :
- Un environnement Python avec Python Python 3.10 ou version ultérieure et pip
- La dernière version de Visual Studio Code (VS Code)
- Les versions les plus récentes de l’Python extension et de l’extension Jupyter dans VS Code
Installer les simulateurs
Pour utiliser les simulateurs quantiques dans Python et Jupyter Notebook, installez la dernière version du package qdkPython avec l’extra jupyter :
pip install --upgrade "qdk[jupyter]"
Les simulateurs ne nécessitent pas l’extra jupyter, mais l’extra ajoute le module qdk.widgets pour visualiser les résultats de simulation dans Jupyter Notebook.
Sélectionnez un simulateur en fonction du framework de programmation quantique et de l’API Python que vous utilisez.
Appeler le simulateur de parcimonie
Le simulateur sparse prend en charge les programmes Q#, OpenQASM et Qiskit. Ce tableau montre comment exécuter 10 exécutions avec le package qdk dans chaque framework.
| Framework de programmation | Python Interface de Programmation d'Applications (API) | Exemple d’appel |
|---|---|---|
| Q# | qsharp.run |
qsharp.run("MyQsharpProgram()", shots=10) |
| OpenQASM | openqasm.run |
openqasm.run(my_qasm_program, shots=10) |
| Qiskit | qiskit.QSharpBackend |
QSharpBackend().run(my_qiskit_program, shots=10) |
Note
Le simulateur sparse prend en charge les modèles de bruit via le paramètre noise pour les programmes Q# et OpenQASM, mais pas pour les programmes Qiskit.
Par exemple, procédez comme suit pour exécuter le programme de paire Q# Bell dans un bloc-notes Jupyter dans VS Code :
Dans VS Code, sélectionnez Afficher>Palette de commandes.
Entrez Créer : Nouveau bloc-notes Jupyter. Un fichier de notebook vide s’ouvre dans un nouvel onglet.
Dans la première cellule, importez le module
qsharpdu packageqdk.from qdk import qsharpDans une nouvelle cellule, utilisez la
%%qsharpcommande magique pour écrire le Q# code.%%qsharp operation Main() : (Result, Result) { use (q1, q2) = (Qubit(), Qubit()); PrepareBellPair(q1, q2); (MResetZ(q1), MResetZ(q2)) } operation PrepareBellPair(q1 : Qubit, q2 : Qubit) : Unit { H(q1); CNOT(q1, q2); }Créez une cellule. Pour exécuter le programme Q# sur le simulateur parcimonieux, appelez la fonction
rundu moduleqsharpet spécifiez le nombre d’exécutions.qsharp.run("Main()", shots=10)
Appeler le simulateur de stabilisateur
Le simulateur stabilisateur exécute efficacement les circuits de grande largeur dominés par Clifford. Le branchement stabilisateur prend également en charge un nombre limité d’opérations non-Clifford, telles que les portes $T$ et $T^\dagger$ et les rotations d’angle arbitraire Pauli. Étant donné que le nombre de branches peut croître de manière exponentielle avec le nombre d’opérations non-Clifford, utilisez un simulateur à état complet pour les circuits avec une évolution non-Clifford importante.
Le simulateur de stabilisateur prend en charge les programmes Q#, OpenQASM, Qiskit et QIR. Ce tableau montre comment effectuer 10 exécutions dans chaque framework.
| Framework de programmation | Python Interface de Programmation d'Applications (API) | Exemple d’appel |
|---|---|---|
| Q# | qsharp.run |
qsharp.run("MyQsharpProgram()", type="stabilizer", shots=10) |
| OpenQASM | openqasm.run |
openqasm.run(my_qasm_program, type="stabilizer", shots=10) |
| Qiskit | qiskit.NeutralAtomBackend |
NeutralAtomBackend().run(my_qiskit_program, simulator_type="stabilizer", shots=10) |
| QIR | simulation.NeutralAtomDevice |
simulation.NeutralAtomDevice().simulate(my_qir, type="stabilizer", shots=10) |
| QIR | simulation.run_qir |
simulation.run_qir(my_qir, type="stabilizer", shots=10) |
Les API
NeutralAtomDeviceetNeutralAtomBackendsont spécifiquement destinées aux simulations sur des ordinateurs quantiques à atomes neutres. Pour plus d’informations, consultez vue d’ensemble du simulateur d’appareil atom neutre.
Par exemple, ce Python code exécute un OpenQASM programme avec une porte non-Clifford $T$ sur le simulateur de stabilisateur :
from qdk.openqasm import run
qasm_code = """
include "stdgates.inc";
qubit[1] q;
bit[1] result;
h q[0];
t q[0];
h q[0];
result = measure q;
"""
run(qasm_code, type="stabilizer", shots=1000)
Note
Les valeurs "stabilizer" et "clifford" sélectionnent toutes deux le simulateur de stabilisateurs. L’API détermine si le paramètre est type ou simulator_type.
La porte $T$ crée des branches de stabilisateur. La mesure finale échantillonne l’interférence entre ces branches.
Appeler les simulateurs CPU et GPU
Les simulateurs GPU et CPU prennent en charge les programmes Qiskit et QIR Ce tableau montre comment exécuter 10 essais sur le simulateur GPU avec le package qdk dans chaque framework. Pour utiliser le CPU simulateur, remplacez gpu par cpu dans le paramètre de type du simulateur.
| Framework de programmation | Python Interface de Programmation d'Applications (API) | Exemple d’appel |
|---|---|---|
| Qiskit | qiskit.NeutralAtomBackend |
NeutralAtomBackend().run(my_qiskit_program, simulator_type="gpu", shots=10) |
| QIR | simulation.NeutralAtomDevice |
simulation.NeutralAtomDevice().simulate(my_qir, type="gpu", shots=10) |
| QIR | simulation.run_qir |
simulation.run_qir(my_qir, type="gpu", shots=10) |
Par exemple, ce Python code convertit un programme simple OpenQASM en QIR et exécute le QIR sur le simulateur GPU :
from qdk.openqasm import compile
from qdk.simulation import run_qir
qasm_code = """
include "stdgates.inc";
qubit[2] q;
reset q;
h q[0];
cx q[0], q[1];
bit c = measure q[1];
"""
qir = compile(qasm_code)
run_qir(qir, type="gpu", shots=10)