Running your first app¶
Before writing our own application we will see how we can execute a pre-defined one on the simulator SquidASM. Make sure you first followed the previous parts and have the relevant packages installed.
Creating an application folder¶
We’ll first create an applicaton folder using a template. Do this by running:
netqasm new my-app
You can replace my-app
with another name.
What’s important is that this directiory cannot exist in your current working directory, since it will be created.
Go into the directory and see what files were created.
cd my-app
ls
You will see two files app_sender.py
and app_receiver.py
.
These are the files defining the application itself.
There are two parties in this application: sender
and receiver
, but you can have an arbitary number of parties.
Each party is associated with a specific node in the network by the roles.yaml file.
Furthermore, the network is specified in the file network.yaml.
Lastly, the sender.yaml
and receiver.yaml
defines input to the application.
For more details about these files and how to configure them, see Application file structure.
Running the app¶
Before describing what the application does and how you can change it, let’s just run it and see what happens. To do this, type
netqasm simulate
which, if everything went well, will print some information about a sender
and a receiver
.
What this application in fact does is to teleport a qubit from the sender
to the receiver
.
We will go through how this works more in detail in Using the SDK.
Amazing, you have just teleported a qubit over a simulated quantum network!
What’s perhaps even more exciting is that you will soon be able to execute this application without
changing the files on real quantum hardware through the Quantum Network Explorer.
To see what options the CLI tool takes, do:
netqasm simulate --help
You can for example increase the amount of logging shown by --log-level=INFO
(or DEBUG
) or use a different qubit representation in the simulation by
--formalism=dm
to use the density matrix formalism in
NetSquid.
As described below you can also use a different simulator.
Inspecting the results¶
You may have seen that after running the application a new directory has appeared: log
.
This is were all the results of the simulation get stored.
Each execution of the application creates a new directory in log
using a timestamp.
For convenience, a copy of this folder is also created with the name LAST
.
The files in the log-folder contain information what happened during the simulation: what quantum operations were applied, what classical messages were sent, what entangled pairs were created and what the outcome of the application was.
This is further detailed in Application file structure.
Other pre-defined apps¶
You have just simulated an application which teleports a qubit.
In Using the SDK you will learn how to write your own application.
However, before that, there are also other pre-defined applications you can easily instantiate and execute using the --template
flag to netqasm new
.
Type netqasm new --help
for a complete list.
To for example try out an application which performs anonymous transmission of a qubit, do:
netqasm new my-anonymous-app --template=anonymous_transmission
What actually happens under the hood here is that the source for the example applications here is copied into your newly created app. You can also just clone the netqasm repository and execute these examples, e.g. with
netqasm simulate --app-dir netqasm/examples/apps/bb84
Using other simulators¶
Above we have simulated an application which teleports a qubit over a quantum network using the simulator SquidASM. You can easily run the same application using another supported simulator. For example to use SimulaQron instead, simply do:
netqasm simulate --simulator=simulaqron
Note
For this to work you need simulaqron installed, otherwise the CLI will tell you that ModuleNotFoundError: to use simulaqron as simulator, `simulaqron` needs to be installed
.
SimulaQron can be installed using pip by
pip install simulaqron