Especificação Qubits em dispositivos IBMQ

8

Como é mostrado aqui , os portões CNOT entre qubits diferentes têm taxas de erro diferentes. Tenho as seguintes perguntas:

1) Ao definir um circuito no QISkit, q[0]sempre corresponde ao mesmo qubit em um dispositivo (por exemplo, o qubit rotulado q0no manual do dispositivo)? Se sim, como posso usar apenas por exemplo qubit 12e 13of ibmq_16_melbourne(apenas como exemplo)?

2) Se um trabalho estiver sendo executado em um dispositivo, por exemplo, usando 3 qubits, há outro trabalho sendo executado nesse dispositivo ao mesmo tempo?

3) Quantos portões CNOT um circuito pode ter para que seu erro permaneça razoável? Basicamente, qual a profundidade de um circuito em qualquer um dos dispositivos para obter um resultado razoável?

Obrigado.

Mathophile-Mathochist
fonte

Respostas:

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)?

Resposta rápida: nem sempre.

A maneira como o Qiskit trabalha com circuitos quânticos e back-ends é:

  1. Gere o circuito quântico com a API. O circuito quântico é armazenado em um QuantumCircuitobjeto.
  2. Transforme este QuantumCircuitobjeto em um DAGCircuitobjeto que represente o mesmo circuito quântico, mas use um DAG em vez de uma lista de portas.
  3. Dê esse DAGCircuitobjeto ao compilador. O compilador cuida de várias coisas:
    1. Respeitando a topologia do backend para o qual você está compilando. Este é o passo que o incomodará, pois o compilador provavelmente "embaralhará" (não de maneira aleatória, é claro) seus qubits. Uma exceção que vejo é quando o circuito já respeita a topologia de back-end. Nesse caso, o compilador não pode alterar os qubits.
    2. Respeitando os portões básicos usados ​​pelo back-end.
    3. Otimizando seu circuito. Esta etapa também pode ser problemática. Não sei se essa otimização está presente no compilador Qiskit, mas se o compilador tentar otimizar também com relação às taxas de erros, você poderá acabar com qubits "embaralhados".

Você precisará verificar o que estou dizendo 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?

Parece improvável para mim, mas vamos aguardar a resposta de um dos desenvolvedores do 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?

Muito pouco.

Q12Q13CX CX(10.041)nnCX10 CX0.66200.43

Nelimee
fonte
5

Ao mapear um circuito para um dispositivo quântico usando o Qiskit, a escolha de quais qubits virtuais (aqueles em seu circuito) são mapeados para quais qubits físicos (dispositivo) dependem de você deixar o qiskit decidir ou implementar o seu próprio initial_layout. Por padrão, o qiskit seleciona o subconjunto mais conectado do gráfico do dispositivo que se adapta ao seu circuito. Esses qubits geralmente não são os qubits de menor ruído. Se você deseja selecionar qubits específicos, pode passar um layout usando o initial_layoutargumento de palavra - chave para executeou compile. Observe que pode haver alguma permutação adicional dos rótulos de qubit durante a fase de mapeamento de troca, a fim de diminuir o número de portas de troca necessárias, se houver.

Paul Nation
fonte