#Quantum – The key for Mac and Linux is on Visual Studio Code #VSCode

Hi!

Yesterday I wrote that one of the most important news of the last Update of the Microsoft Quantum Development Kit was the support for Mac and Linux. Well, this is achieved because the basis of Q# is the interaction of a host in .Net Core 2.0 and the connection to the Quantum Simulator.
This allows us to work with Microsoft Quantum DevKit using any language that supports .Net. Where C # and F # may be the most popular. And it is on this basis that we can also use Microsoft Quantum DevKit in other platforms, using Visual Studio Code as a development tool

.

I1

From Visual Studio Marketplace we can download an extension for VSCode that allows us to create projects in Microsoft Quantum DevKit. As expected we can also debug, write our Q # code and more with VSCode.

The installation is very simple. We start installing the extension for VSCode

I2

A couple of PowerShell commands

I3

And that’s it! now it’s time to program some Qubits 😀

Happy QCoding!

Saludos @ Toronto

El Bruno

References

My Posts

 

Advertisements

#Quantum – La clave está en Visual Studio Code #VSCode

Buenas!

Ayer comente que una de las novedades más importantes del ultimo Update de Microsoft Quantum Development Kit era el soporte para Mac y Linux. Pues bien, esto se logra ya que la base de Q# es la interacción de un host en .Net Core 2.0 y la conexión con el Quantum Simulator. Esto nos permite trabajar con Microsoft Quantum DevKit utilizando cualquier lenguaje que soporte .Net. Donde C# y F# tal vez sean los más populares.

Y es sobre esta base que también podremos utilizar Microsoft Quantum DevKit en otras plataformas, utilizando Visual Studio Code como herramienta de desarrollo.

I1

Desde Visual Studio Marketplace podemos descargar una extensión para VSCode que nos permite crear proyectos en Microsoft Quantum DevKit. Como es de esperar también podemos depurar, escribir nuestro código Q# y más con VSCode.

La instalación es muy simple. Comenzamos instalando la extensión para VSCode

I2

Y luego un par de comandos en PowerShell

I3

Listo, ya es momento de comenzar a programar nuestros qubits!

Happy QCoding!

Saludos @ Toronto

El Bruno

References

My Posts

 

#Quantum – Improvements in the new version of Microsoft Quantum Development Kit (Linux, Mac, Python and more!)

 

I1.jpg

Hi!

February has been a month of events and sessions; March will be a month more dedicated to study and to build a couple of interesting projects. One of the issues that I have to take up again is Quantum Computing . I’ve already written some posts about it,
and today I find a new version of the Microsoft Quantum Development Kit.

The official article explains the improvements in detail. I will only highlight those that seem most interesting to me

  • Development in Mac, Linux and Windows environments. As it comes naturally in the Microsoft tools, they are not only contained and run in Windows, Linux and Mac are also supported. (And this is an excellent opportunity to put me once and for all with the Mac)

I2.jpg

  • Python support. Yes, it seems that Python will be in new JavaScript, it is everywhere and how could it be otherwise, Microsoft Quantum Development Kit, also supports Python.

teleportation-demo-1024x640.png

To complete the points I should mention the performance improvements of the simulator and that the DevKit is OpenSource. I guess I’ll have time to write about this in the near future.

Happy QCoding!

Saludos @ Toronto

El Bruno

References

My Posts

 

#Quantum – Mejoras en la nueva version de Microsoft Quantum Development Kit (Linux, Mac, Python y mas!)

 

I1.jpg

Buenas!

Febrero ha sido un mes de eventos y sesiones; Marzo será un mes mas dedicado al estudio y a build un par de proyectos interesantes. Uno de los temas que tengo que retomar es Computación Cuántica (A partir de ahora Quantum Computing). Ya he escrito algunos posts al respecto, y hoy me encuentro con una nueva version del Microsoft Quantum Development Kit.

El articulo oficial explica las mejoras en detalle. Yo solo remarcare las que me parecen más interesantes

  • Desarrollo en entornos Mac, Linux y Windows. Como viene siendo natural en las herramientas de Microsoft, las mismas ya no solo se contienen y ejecutan en Windows, Linux y Mac también son soportados. (Y esto es una excelente oportunidad para ponerme de una vez por todas con el Mac)

I2.jpg

  • Soporte para Python. Pues sí, parece que Python será en nuevo JavaScript, esta por todos lados y como no podía ser de otra manera, Microsoft Quantum Development Kit, también soporta Python.

teleportation-demo-1024x640.png

Para completar los puntos debería mencionar las mejoras en performance del simulador y que el DevKit es OpenSource. Supongo que ya tendré tiempo de escribir sobre esto en un futuro cercano.

 

Happy QCoding!

Saludos @ Toronto

El Bruno

References

My Posts

 

#VS2017 – Main Namespaces to be used in Q#

Hi!

When we create a new Q# (extension. qs) file, this new file has a main namespace (usualy our project name) and then it includes a series of namespaces that will be used in our operations. Something similar to this image

Clipboard02.jpg

The Q# file operation template includes 2 main namespaces to be used

    open Microsoft.Quantum.Primitive;

This namespace provides access to basic operations such as the Hadamard gates, X, M, CNOT gates, and more. The implementation of these operations depends on the target machine. This is important because we will have to take into account the process in a simulator or X Quantum Computer.

    open Microsoft.Quantum.Canon;

This namespace contains many useful functions for creating larger circuits, combinatorial and generic utilities. The implementation of the operations in the Canon is independent of the target machine, since they are built at the top of the primitive operations.

Happy QCoding!

Gretings @ Toronto

El Bruno

References

My Posts

 

#VS2017 – Namespaces principales para usar en Q#

 

Buenas!

Cuando creamos un fichero de Q# (extension .qs) el mismo suele estar definido por un Namespace y luego definir una serie de Namespaces que serán utilizados en nuestras operaciones

Usualmente se ve asi

Clipboard02.jpg

Los 2 namespaces que por defecto se agregan desde el template son

    open Microsoft.Quantum.Primitive;

Este namespace da acceso a operaciones básicas como las Hadamard Gates, CNOT Gates, etc. que son útiles para definir circuitos en operaciones cuánticas. La implementación de estas operaciones depende de la máquina de destino. Esto es importante ya que tendremos que tener en cuenta el proceso en un simulador o en X Quantum Computer.

    open Microsoft.Quantum.Canon;

El espacio de nombres Canon contiene muchas funciones útiles para crear circuitos más grandes, combinatorios y utilidades genéricas. La implementación de las operaciones en el Canon es independiente de la máquina de destino, ya que se construyen en la parte superior de las operaciones primitivas.

Happy QCoding!

Saludos @ Toronto

El Bruno

References

My Posts

 

#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

 

#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