An easy-to-use but flexible distributed quantum computing simulator.
Project description
dqc_simulator
An easy-to-use distributed quantum computing simulator
With many simulators, specifying a quantum algorithm is as easy as specifying a quantum circuit. Why can't things be as simple for distributed quantum computers (DQCs)? With dqc_simulator they can! A python package built on top of the more general quantum network simulation library NetSquid, dqc_simulator allows users to simply simulate quantum circuits on near-arbitrary, user-specifiable DQC hardware. The package aims to retain the flexibility and power of NetSquid while automatically handling some of the messier details of applying NetSquid to the DQC setting.
Key features:
- Easy-to-use interface for specifying distributed quantum circuits.
- Automatic partitioning of monolithic (single-processor)
quantum circuits
between quantum processing units (QPUs).
- Arbitrary algorithms for doing this can also be specified by the user if desired, using the DQC circuit interface.
- Circuits can be specified as a list of tuples or as a .qasm file.
- Automatic management of remote gates and communication qubits.
- Automatic compilation using pre-made compilers.
- The user can also easily specify their own.
Requirements
Installation instructions for users
Firstly, if you do not already have one, create a NetSquid account using the instructions here. Much of the package's functionality
relies on NetSquid and so this is important to make full use of the package. However, you do not need to actually install NetSquid at this stage because it will be done automatically in the next step. At the end of the NetSquid account creation process you should have a username and
password. In what follows replace <USERNAME> and <PASSWORD> with the username and password for your
Netsquid account.
With a NetSquid account created, dqc_simulator and all of its dependencies can be installed with the command:
pip install --extra-index-url https://<USERNAME>:<PASSWORD>@pypi.netsquid.org dqc_simulator
where <USERNAME> and <PASSWORD> are the username and password for your NetSquid account.
Alternatively, if using uv, use the command
uv add --index https://<USERNAME>:<PASSWORD>@pypi.netsquid.org dqc_simulator
If all of the dependencies have already been installed, then you can instead install dqc_simulator using the simpler command
pip install dqc_simulator
because the --extra-index-url was only required by the dependencies. dqc_simulator in of itself does not require an account.
For uv, the corresponding simpler command is
uv add dqc_simulator
Installation instructions for developers
To install the package from source use the command
git clone https://github.com/km-campbell/dqc_simulator.git
Then install the uv package manager onto your system.
Finally, run
uv sync --index https://<USERNAME>:<PASSWORD>@hw.ac.uk
where <USERNAME> and <PASSWORD> are the username and password for your NetSquid account from the root of the cloned repository. This will allow the build to proceed deterministically and allow you to run all code within the virtual environment included in the dqc_simulator repo. For more on this, see the uv documentation.
Note that syncing is actually done, automatically whenever you run code using uv run and so it is possible to skip this step, but uv sync is a nice check that everything is working properly.
To test that all is working as it should be, you can run:
uv run python -m unittest
Documentation
The documentation is available via readthedocs here.
Alternatively, the project documentation can be built locally by cloning the repository, as detailed above, and then using the commands
cd docs
make html
A version of the documentation will then be available in the docs/build directory. Within that directory open index.html to access the documentation.
Acknowledgements
I acknowledge the use of modified code from nuqasm2 in the qasm2ast module subject to the Apache 2.0 license included above under the name LICENSE4qasm2ast_base_code. It is explicitly stated in any modules where modified nuqasm2 code is used.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file dqc_simulator-0.2.5.tar.gz.
File metadata
- Download URL: dqc_simulator-0.2.5.tar.gz
- Upload date:
- Size: 87.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.10.3 {"installer":{"name":"uv","version":"0.10.3","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"20.04","id":"focal","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b5441f2a3e3c50cc84ed5e28afa53527024c713cdf46ab3cb2f3c3d6b1489b64
|
|
| MD5 |
98c00fcde9dc3fb3c27962ff3d52e845
|
|
| BLAKE2b-256 |
104f1ebbfc280e777445127e96504be19424f4cfc808eb92845e913c93a7eb3f
|
File details
Details for the file dqc_simulator-0.2.5-py3-none-any.whl.
File metadata
- Download URL: dqc_simulator-0.2.5-py3-none-any.whl
- Upload date:
- Size: 98.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.10.3 {"installer":{"name":"uv","version":"0.10.3","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"20.04","id":"focal","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a1c3d3ca2784018d249e4e17fd05750e4797d04026f2ce587c47c8cc2b8320f0
|
|
| MD5 |
32da9ead44659c118764806b71ccf95f
|
|
| BLAKE2b-256 |
7a726039d6a91f88d0f42cff27f6803aac71a4ea6b8751661b274581e0f01632
|