Especificación de Qubits en dispositivos IBMQ

8

Como se muestra aquí , las puertas CNOT entre diferentes qubits tienen diferentes tasas de error. Tengo las siguientes preguntas:

1) Al definir un circuito en QISkit, ¿ q[0]siempre corresponde al mismo qubit en un dispositivo (por ejemplo, el qubit etiquetado q0en el manual del dispositivo)? Si es así, ¿cómo puedo usar solo, por ejemplo, qubit 12y 13of ibmq_16_melbourne(solo como ejemplo)?

2) Si un trabajo se está ejecutando en un dispositivo, por ejemplo, usando 3 qubits, ¿hay algún otro trabajo ejecutándose en ese dispositivo al mismo tiempo?

3) ¿Cuántas puertas CNOT puede tener un circuito para que su error permanezca razonable? Básicamente, ¿qué tan profundo puede ser un circuito en cualquiera de los dispositivos para obtener un resultado razonable?

Gracias.

Mathophile-Mathochist
fuente

Respuestas:

7
1) While defining a circuit on QISkit, does q[0] always correspond to the same qubit on a device 
(e.g. the qubit labeled q0 on the device manual)? If so, how can I only use for example qubit 12 and 
13 of ibmq_16_melbourne (just as an example)?

Respuesta rápida: no siempre.

La forma en que Qiskit funciona con circuito cuántico y backends es:

  1. Genere el circuito cuántico con la API. El circuito cuántico se almacena en un QuantumCircuitobjeto.
  2. Transforme este QuantumCircuitobjeto en un DAGCircuitobjeto que represente el mismo circuito cuántico pero use un DAG en lugar de una lista de puertas.
  3. Dele este DAGCircuitobjeto al compilador. El compilador se encarga de varias cosas:
    1. Respetando la topología del backend para el que está compilando. Este es el paso que le molestará ya que el compilador probablemente "barajará" (no de forma aleatoria, por supuesto) sus qubits. Una excepción que veo es cuando el circuito ya respeta la topología de fondo. En este caso, el compilador no puede cambiar los qubits.
    2. Respetando las compuertas base utilizadas por el backend.
    3. Optimizando su circuito. Este paso también puede ser problemático. No sé si dicha optimización está presente en el compilador Qiskit, pero si el compilador intenta optimizar también con respecto a las tasas de error, entonces podría terminar con qubits "barajados".

Deberá verificar lo que estoy diciendo experimentalmente.

2) If one job is being executed on a device, say for instance using 3 qubits, is any other job being 
ran on that device at the same time?

Me parece poco probable, pero esperemos la respuesta de uno de los desarrolladores de Qiskit.

3) How many CNOT gates one circuit can have so that its error stays reasonable? Basically, how 
deep can a circuit be on any of the devices to get a reasonable result?

Muy pocos.

Si te limitas Q12y Q13luego la CXpuerta entre los dos tiene una probabilidad de falla de 0.041. Esto significa que aplicando solo CX compuertas, tiene una probabilidad de éxito de siendo el número de compuertas aplicadas. Para puertas, la probabilidad es . Para puertas, la probabilidad de éxito se reduce a .(10.041)nn10 0.66 20 0.43CX10 CX0.66200.43

Nelimee
fuente
5

Al mapear un circuito a un dispositivo cuántico usando Qiskit, la elección de qué qubits virtuales (los de su circuito) se mapean en qué qubits físicos (dispositivo) depende de si deja que qiskit decida o implemente el suyo initial_layout. Por defecto, qiskit seleccionará el subconjunto más conectado del gráfico del dispositivo que se ajuste a su circuito. Estos qubits generalmente no son los qubits de ruido más bajo. Si desea seleccionar qubits específicos, puede pasar un diseño usando el initial_layoutargumento de la palabra clave a executeo compile. Tenga en cuenta que puede haber alguna permutación adicional de las etiquetas de qubit durante la fase de asignación de intercambio, a fin de reducir el número de puertas de intercambio necesarias, si las hay.

Paul Nation
fuente