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 dqcsim
This 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_wheel
This 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=bindings
The 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-features
Add --release
for release builds.
To build the documentation use the Makefile in the doc directory directly from the root of the repository:
make -C doc
Documentation output is stored in target/book
.
To test all targets and features:
cargo test --all-targets --all-features
To test the C-bindings and C++ wrapper:
mkdir build
cd build
cmake .. -DBUILD_TESTS=ON
make
CTEST_OUTPUT_ON_FAILURE=1 make test
Add -DCMAKE_BUILD_TYPE=DEBUG
to CMake for debug builds.
To test the Python package:
python3 setup.py build test