DQCsim
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!
Install
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.
Getting started
Users
New users are encouraged to check out the
documentation.
Plugin developers
Plugin developers can check out the examples, existing plugins
and refer to the API documentation:
Plugins
Frontend
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 |
Operator
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 |
Backend
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.
Build and test from source
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
Python support:
C/C++ tests:
Documentation:
Python
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.
C/C++
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
.
Rust
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.
Documentation
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
.
Test
Rust
To test all targets and features:
cargo test --all-targets --all-features
C/C++
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.
Python
To test the Python package:
python3 setup.py build test