#VS2017 – Releasing #Qubits using Reset() and ResetAll() in Q# on Microsoft Quantum Development Kit

HI!

Yesterday I wrote on the MResetZ() which allows us to get the status of a Qubit and release it. Well, at the end of each Q# operation, all the used Qubits need to be released for the simulator to work properly.

The following sample code will show a bad sample where a Qubit is used and not released correctly:

So, in runtime we will find this amazing and cool error:

I1

Microsoft.Quantum.Simulation.Simulators.Exceptions.ReleasedQubitsAreNotInZeroState

  HResult=0x80131500

  Message=Released qubits are not in zero state.

  Source=Microsoft.Quantum.Simulation.Simulators

Microsoft Quantum Development Kit offers us a series of operations that help us to release Qubits: Reset() and ResetAll(). As its name indicates Reset() is intended to release a single Qubit and ResetAll() to release an array of Qubits.

Given a single Qubit, Reset() evaluates the Qubit state and ensures that the Qubit is in the state |0⟩ so it can be safely released.

The following 2 operations show examples of how to use these operations

 

Happy QCoding!

Greetings @ Toronto

El Bruno

References

My Posts

 

Advertisements

#VS2017 – Liberando #Qubits utilizando Reset() y ResetAll() con Microsoft Quantum Development Kit

 

Buenas!

Ayer comente como la operación MResetZ() nos permite obtener el estado de un Qubit y liberar al mismo. Pues bien, al final de cada operación los Qubits tienen que ser liberados para que el simulador funcione correctamente.

Nota: La palabra en inglés es Release, la traducción de “liberado” no me termina de gustar.

En un código como el siguiente, donde se utiliza un Qubit y no se libera correctamente, nos encontraremos con el siguiente error:

I1

Microsoft.Quantum.Simulation.Simulators.Exceptions.ReleasedQubitsAreNotInZeroState

  HResult=0x80131500

  Message=Released qubits are not in zero state.

  Source=Microsoft.Quantum.Simulation.Simulators

Microsoft Quantum Development Kit nos ofrece una serie de operaciones que nos ayudan a liberar Qubits: Reset() y ResetAll(). Como su nombre lo indica Reset() esta pensado para liberar un único Qubit y ResetAll() para liberar un array de Qubits.

Dado un solo qubit, Reset() evalua su etado y se asegura que está en el estado |0⟩ tal que pueda ser liberado con seguridad

La siguientes 2 operaciones muestran ejemplos sobre como utilizar estas operaciones.

Happy QCoding!

Saludos @ Toronto

El Bruno

References

My Posts

 

#VS2017 – Using MResetZ() to reset #Qubits in Q# and Microsoft Quantum Development Kit

Hi!

After an intense week of events, this week it’s my turn to go back to the Quantum Computing studio. In this particular case, to a detail that we have to keep in mind when we work with Q #

When a qubit is in an eigenstate of the measurement operator, i.e., either in |0> or in |1>, we need to reset the Qubit before the end of an operation. Qubits need to be in |0> when they are released, so we have to manually reset the qubit before releasing it using the Z() operation if needed.

Well, let’s take as a basis one in which we initialize a Qubit and apply an operation Hadamard operation as shown in the following code

In line 10 I store the state of the Qubit in the return variable and then on lines 11 to 14 verify that the state of the same is Zero. If not, I need to reset the Qubit to Zero before the end of the operation on line 13.

Well, this code works, and that’s amazing! However when we use the Microsoft Quantum DevKit we also have an operation that allows us to obtain the status of a Qubit and release it in a single operation. This operation is MResetZ(). The same previous code using this operation it is much more nice to read

As we can see, the main change is in line 10 where I assign the state of the Qubit to the return variable and also reset the Qubit to Zero.

Finally, from a Console App I invoke both operations and the result is equal.

I1

GitHub Source Code link

Happy QCoding!

Greetings @ Toronto

El Bruno

References

My Posts

 

#VS2017 – Utilizando MResetZ() para liberar #Qubits en Q# con Microsoft Quantum Development Kit

Hola!

Despues de una semana intensa de eventos, esta semana me toca volver al estudio de Quantum Computing. En este caso en particular, a un detalle que tenemos que tener en cuenta cuando trabajamos con Q#

Cuando modificamos los estados de un Qubit, en mismo puede quedar en |0> o en |1>, Los Qubits necesidad de estar en estado 0> para ser liberados al final de cada operación. Es por ello que hay que restablecer este estado en cada Qubit antes de liberarlo.

Pues bien, tomemos como base una en la que inicializamos un Qubit y aplicamos una operación Hadamard operación como muestra el siguiente código

En la línea 10 almaceno el estado del Qubit en la variable de retorno y luego en las líneas 11 a 14 verifico que el estado del mismo sea Zero. En caso contrario, reseteo el estado Qubit a Zero antes del final de la operación en la línea 13.

Pues bien, este código funciona. Sin embargo, dentro del DevKit tenemos también una operación que nos permite obtener el estado de un Qubit y liberar el mismo en una única operación. Esta operación es MResetZ(). El mismo código anterior utilizando esta operación, se simplifica bastante

Como podemos ver, el principal cambio está en la línea 10 donde asigno el estado del Qubit a la variable de retorno y además reseteo el Qubit a Zero.

Finalmente, desde una ConsoleApp invoco a ambas operaciones y el resultado es igual.

I1

GitHub Source Code link

Happy QCoding!

Saludos @ Toronto

El Bruno

References

My Posts

 

#QuantumDevKit – #Qubit operations in Q#

Clipboard02

Hi!

I’m still at the Microsoft Tech Summit Toronto, so it’s time to share another interesting learned lesson from the Microsoft Quantum Development Kit.

In today’s post, I will talk about the possible operations that we can perform on a Qubit. Well, the post is short:

We can only perform test for identity on Qubits (equality).

That’s the only operation we can do with a Qubit in Q#. Not really, we can use and pass Qubits as parameters between operations (reference model), and if we want to modify the state of them we have to use Q# Qubits .

In example, if we want to measure the status of a Qubit, we can use the M() operation

let measure = M(qubit[0]);

If, we want to change the value of Zero to One, or vice versa in a Qubit, we can use the X() operation

X(qubit[0]);

If, we want to apply a Hadamard transformation to a Qubit, we need to use the H() operation, the syntax would be

H(qubit[0]);

Almost all operations can be found under the namespace [Microsoft Quantum. Primitive]. I strongly advise to spend some time reading and understanding how quantum mechanics works before you start working with this type of gates (Pauli Gates). Hey, but this is material for other post!

Happy QCoding!

Greetings @ Microsoft Tech Summit

El Bruno

References

Images

#QuantumDevKit – Tipos de operaciones posibles a realizar con #Qubit en Q#

Clipboard02

Buenas!

Sigo en el Microsoft Tech Summit, asi que es momento de soltar otra píldora sobre algo interesantes aprendido de Microsoft Quantum Development Kit. En el post de hoy, hablare sobre las posibles operaciones que podemos realizar sobre un Qubit.

Pues bien, el post es corto:

La única operación permitida que podemos realizar con Qubits es la comparación (equality).

Esa es la única operación que podemos realizar sobre un Qubit con Q#. En realidad, esto no es tan así, podemos pasar Qubits como parámetros entre operaciones (siempre punteros fijos al mismo objeto), y si queremos modificar el estado de los mismos tenemos que utilizar operaciones propias de Q#.

Por ejemplo si queremos medir el estado de un Qubit, podemos utilizar la operación M()

let measure = M(qubit[0]);

Si, queremos cambiar el valor de zero a uno o viceversa en un Qubit, podemos utilizar la operación X()

X(qubit[0]);

Si, en cambio, queremos aplicar una transformación Hadamard a un Qubit, la operación es H() y la sintaxis seria

H(qubit[0]);

Casi todas las operaciones se pueden encontrar en [Microsoft.Quantum.Primitive]. Personalmente aconsejo leer y comprender un poco sobre cómo funcionan los conceptos de mecánica cuántica antes de comenzar a trabajar con este tipo de compuertas (Pauli Gates)

Happy QCoding!

Saludos @ Microsoft Tech Summit

El Bruno

References

Images