DQCsim, short for Delft Quantum & Classical simulator, is a framework that can be used to tie components of quantum computer simulators together in a standardized yet flexible, developer-friendly, and reproducible way. Click here for more information!
The recommended method to install DQCsim is through Python's package manager:
sudo pip3 install dqcsimThis installs DQCsim's core files and plugins. More information is available in the Installation section of the documentation.
New users are encouraged to check out the documentation.
Plugin developers can check out the examples, existing plugins and refer to the API documentation:
| Plugin | Description | Download | License | Platforms | Language |
|---|---|---|---|---|---|
| openqasm | OpenQASM 2.0 frontend | Apache-2.0 | Linux, macOS | Rust | |
| cqasm | cQASM 1.0 frontend | Apache-2.0 | Linux, macOS | C++ | |
| null | No-op frontend | Apache-2.0 | Linux, macOS | Rust |
| Plugin | Description | Download | License | Platforms | Language |
|---|---|---|---|---|---|
| openql-mapper | OpenQL mapper operator | Apache-2.0 | Linux | C++ | |
| null | No-op operator | Apache-2.0 | Linux, macOS | Rust |
| Plugin | Description | Download | License | Platforms | Language |
|---|---|---|---|---|---|
| quantumsim | Quantumsim backend | GPL-3.0 | Linux, macOS | Python | |
| qx | QX backend | Apache-2.0 | Linux, macOS | C++ | |
| null | No-op backend | Apache-2.0 | Linux, macOS | Rust | |
| iqs | Intel QS backend | Apache-2.0 | Linux, macOS | C++ |
Please open a PR to have your plugin added to this list.
Setup
The core of DQCsim is written in Rust. The crate defines a set of C-bindings to support plugin development in other languages. DQCsim is distributed as a batteries included Python package that includes the shared library and headers for C and C++ plugin development.
Requirements
- Rust (stable)
Python support:
C/C++ tests:
- CMake (3.14+)
Documentation:
To build the dqcsim Python package:
python3 setup.py bdist_wheelThis builds a release wheel to target/python/dist/. For debug builds set the
DQCSIM_DEBUG environment variable.
To build the C and C++ headers build the dqcsim Rust crate with the
bindings feature enabled:
cargo build --manifest-path=rust/Cargo.toml --features=bindingsThe generated headers are stored in target/include.
The dqcsim crate can be built with the following (non-default) features:
cli: the command-line interface binarynull-plugins: the null (no-op) plugin binariesbindings: genertion of headers required for C, C++ and Python plugin development
To build all targets and features:
cargo build --all-targets --all-featuresAdd --release for release builds.
To build the documentation use the Makefile in the doc directory directly from the root of the repository:
make -C docDocumentation output is stored in target/book.
To test all targets and features:
cargo test --all-targets --all-featuresTo test the C-bindings and C++ wrapper:
mkdir build
cd build
cmake .. -DBUILD_TESTS=ON
make
CTEST_OUTPUT_ON_FAILURE=1 make testAdd -DCMAKE_BUILD_TYPE=DEBUG to CMake for debug builds.
To test the Python package:
python3 setup.py build test