Skip to main content

Schrödinger and Schrödinger-Feynman simulators for quantum circuits.

Project description

qsim and qsimh

Quantum circuit simulators qsim and qsimh. These simulators were used for cross entropy benchmarking in [1].

[1], F. Arute et al, "Quantum Supremacy Using a Programmable Superconducting Processor", Nature 574, 505, (2019).

qsim

qsim is a Schrödinger full state-vector simulator. It computes all the 2n amplitudes of the state vector, where n is the number of qubits. Essentially, the simulator performs matrix-vector multiplications repeatedly. One matrix-vector multiplication corresponds to applying one gate. The total runtime is proportional to g2n, where g is the number of 2-qubit gates. To speed up the simulator, we use gate fusion [2] [3], single precision arithmetic, AVX/FMA instructions for vectorization and OpenMP for multi-threading.

[2] M. Smelyanskiy, N. P. Sawaya, A. Aspuru-Guzik, "qHiPSTER: The Quantum High Performance Software Testing Environment", arXiv:1601.07195 (2016).

[3] T. Häner, D. S. Steiger, "0.5 Petabyte Simulation of a 45-Qubit Quantum Circuit", arXiv:1704.01127 (2017).

qsimh

qsimh is a hybrid Schrödinger-Feynman simulator [4]. The lattice is split into two parts and the Schmidt decomposition is used to decompose 2-qubit gates on the cut. If the Schmidt rank of each gate is m and the number of gates on the cut is k then there are mk paths. To simulate a circuit with fidelity one, one needs to simulate all the mk paths and sum the results. The total runtime is proportional to (2n1 + 2n2)mk, where n1 and n2 are the qubit numbers in the first and second parts. Path simulations are independent of each other and can be trivially parallelized to run on supercomputers or in data centers. Note that one can run simulations with fidelity F < 1 just by summing over a fraction F of all the paths.

A two level checkpointing scheme is used to improve performance. Say, there are k gates on the cut. We split those into three parts: p+r+s=k, where p is the number of "prefix" gates, r is the number of "root" gates and s is the number of "suffix" gates. The first checkpoint is executed after applying all the gates up to and including the prefix gates and the second checkpoint is executed after applying all the gates up to and including the root gates. The full summation over all the paths for the root and suffix gates is performed.

If p>0 then one such simulation gives F ≈ m-p (for all the prefix gates having the same Schmidt rank m). One needs to run mp simulations with different prefix paths and sum the results to get F = 1.

[4] I. L. Markov, A. Fatima, S. V. Isakov, S. Boixo, "Quantum Supremacy Is Both Closer and Farther than It Appears", arXiv:1807.10749 (2018).

C++ Usage

The code is basically designed as a library. The user can modify sample aplications in apps to meet their own needs. The usage of sample applications is described in the docs.

Input format

The circuit input format is described in the docs.

NOTE: This format is deprecated, and no longer actively maintained.

Sample Circuits

A number of sample circuits are provided in circuits.

Unit tests

Unit tests for C++ libraries use the Google test framework, and are located in tests. Python tests use pytest, and are located in qsimcirq_tests.

To build and run all tests, navigate to the test directory and run:

make run-all

This will compile all test binaries to files with .x extensions, and run each test in series. Testing will stop early if a test fails.

To clean up generated test files, run make clean from the test directory.

Cirq Usage

Cirq is a framework for modeling and invoking Noisy Intermediate Scale Quantum (NISQ) circuits.

To get started simulating Google Cirq circuits with qsim, see the tutorial.

More detailed information about the qsim-Cirq API can be found in the docs.

Disclaimer

This is not an officially supported Google product.

How to cite qsim

Qsim is uploaded to Zenodo automatically. Click on this badge DOI to see all the citation formats for all versions.

An equivalent BibTex format reference is below for all the versions:

@software{quantum_ai_team_and_collaborators_2020_4023103,
  author       = {Quantum AI team and collaborators},
  title        = {qsim},
  month        = Sep,
  year         = 2020,
  publisher    = {Zenodo},
  doi          = {10.5281/zenodo.4023103},
  url          = {https://doi.org/10.5281/zenodo.4023103}
}

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

qsimcirq-0.12.2.dev20220422-cp39-cp39-win_amd64.whl (1.0 MB view details)

Uploaded CPython 3.9 Windows x86-64

qsimcirq-0.12.2.dev20220422-cp39-cp39-macosx_10_9_universal2.whl (1.2 MB view details)

Uploaded CPython 3.9 macOS 10.9+ universal2 (ARM64, x86-64)

qsimcirq-0.12.2.dev20220422-cp38-cp38-win_amd64.whl (1.0 MB view details)

Uploaded CPython 3.8 Windows x86-64

qsimcirq-0.12.2.dev20220422-cp38-cp38-macosx_10_9_x86_64.whl (1.2 MB view details)

Uploaded CPython 3.8 macOS 10.9+ x86-64

qsimcirq-0.12.2.dev20220422-cp37-cp37m-win_amd64.whl (1.0 MB view details)

Uploaded CPython 3.7m Windows x86-64

qsimcirq-0.12.2.dev20220422-cp37-cp37m-macosx_10_9_x86_64.whl (1.2 MB view details)

Uploaded CPython 3.7m macOS 10.9+ x86-64

qsimcirq-0.12.2.dev20220422-cp36-cp36m-win_amd64.whl (1.0 MB view details)

Uploaded CPython 3.6m Windows x86-64

qsimcirq-0.12.2.dev20220422-cp36-cp36m-macosx_10_9_x86_64.whl (1.2 MB view details)

Uploaded CPython 3.6m macOS 10.9+ x86-64

File details

Details for the file qsimcirq-0.12.2.dev20220422-cp39-cp39-win_amd64.whl.

File metadata

File hashes

Hashes for qsimcirq-0.12.2.dev20220422-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 f4472b71408f42c43857f38236e845e94a6d92d7798948f199d9b156fe5ddea8
MD5 86de1408a42f11b7d7888167e7a091e5
BLAKE2b-256 1f250a254bd859cfad6fe8e0dd4038c80a6bb3cfbdf1be7f98cedcf387a605a2

See more details on using hashes here.

File details

Details for the file qsimcirq-0.12.2.dev20220422-cp39-cp39-manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for qsimcirq-0.12.2.dev20220422-cp39-cp39-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 7ca6dab1040ced270417c3fc6fe4b14f82ef5a98c74f068e984d40546937e268
MD5 51f4f5a90af7b7efee7f6e8b7191dd9f
BLAKE2b-256 9e181a0701dcf5a0a9dfb9417caa091d41a55c6565cc0d1f4eb09d83c83466a3

See more details on using hashes here.

File details

Details for the file qsimcirq-0.12.2.dev20220422-cp39-cp39-macosx_10_9_universal2.whl.

File metadata

File hashes

Hashes for qsimcirq-0.12.2.dev20220422-cp39-cp39-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 63663abab1dc68a528430553b93a17de11b100806c97dd07992e6c3cc7a1a029
MD5 bad74c9f5fbac6507d049f79a46cdcbc
BLAKE2b-256 72d7c8078db05f84a2e3ac5290182d2be3a7cd02a98fbe576f2fdb1fd3d632bd

See more details on using hashes here.

File details

Details for the file qsimcirq-0.12.2.dev20220422-cp38-cp38-win_amd64.whl.

File metadata

File hashes

Hashes for qsimcirq-0.12.2.dev20220422-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 d8f1be49cf63cd3f867b40a0f705c040c31548ed2b34a5e5a685bd5f5b8e0996
MD5 055410628e0da7120353efeb1354c692
BLAKE2b-256 1a0e87b509ecd0e242d3c6f3608f0db0349031ad57bb325b870248956a58a189

See more details on using hashes here.

File details

Details for the file qsimcirq-0.12.2.dev20220422-cp38-cp38-manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for qsimcirq-0.12.2.dev20220422-cp38-cp38-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 de8e5f11c96218373be183e8b57adfb98cdb25e683d820cd7cece9fa0bc63b11
MD5 4fcb9aecfb48d12ce82917dfbf4b6d42
BLAKE2b-256 72af9c8cf2afb498eea6b874d9d156588a2c66e40fbdb7c04fb9511c0e2a8409

See more details on using hashes here.

File details

Details for the file qsimcirq-0.12.2.dev20220422-cp38-cp38-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for qsimcirq-0.12.2.dev20220422-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 77ab4420ae0530c0e31754f9e9d1da4ef55e9d3ca0ef0fbb58bf82976585c43a
MD5 988d0b1847d4c38cc89211302b3a8dcd
BLAKE2b-256 1001148d150209c6d3f3cb0982412bbfbbf1a6849eb900079d3c09b15937d375

See more details on using hashes here.

File details

Details for the file qsimcirq-0.12.2.dev20220422-cp37-cp37m-win_amd64.whl.

File metadata

File hashes

Hashes for qsimcirq-0.12.2.dev20220422-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 87f6a67d9642bfe5e11a52d783d7a290660dae53af4d5b385397a0117c08a7a5
MD5 283a9d6204733e0d4e566e6092c99ae9
BLAKE2b-256 76e1cd9393ade2834fc3529691f0af2f0a2d63f4130b6b229fc648f1ec5607a9

See more details on using hashes here.

File details

Details for the file qsimcirq-0.12.2.dev20220422-cp37-cp37m-manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for qsimcirq-0.12.2.dev20220422-cp37-cp37m-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 15708c6e8be639cb0cd26fb9c0a70795e257894c8df59ae440e058091df7260d
MD5 89b3dee72e67208a5417244a6e4cf724
BLAKE2b-256 729e9489fa72f3ac18194dc89c107e4f02dfbc5ce4fb8d152a79e514a579b833

See more details on using hashes here.

File details

Details for the file qsimcirq-0.12.2.dev20220422-cp37-cp37m-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for qsimcirq-0.12.2.dev20220422-cp37-cp37m-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 e965eee54841cd5883b50e42c7ff9f626489169be19d94fe788eea7f7aeceb9a
MD5 a6dfad7be3e36d4de18e2423197d1488
BLAKE2b-256 c971542014c4105da8186fd3d4ee1d5b31d927de29b7cb83517d11895e7bab79

See more details on using hashes here.

File details

Details for the file qsimcirq-0.12.2.dev20220422-cp36-cp36m-win_amd64.whl.

File metadata

File hashes

Hashes for qsimcirq-0.12.2.dev20220422-cp36-cp36m-win_amd64.whl
Algorithm Hash digest
SHA256 7861a3941bafbcb62816ee3ee42600e8f2a69379b86def95781142e806a787d0
MD5 c73cceb0c8e7d446929ee405babc2927
BLAKE2b-256 0d0251663c4e6e851896e5c365e6222ade6ce2a15b031fb61989d4da1e9e869a

See more details on using hashes here.

File details

Details for the file qsimcirq-0.12.2.dev20220422-cp36-cp36m-manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for qsimcirq-0.12.2.dev20220422-cp36-cp36m-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 19406ddf8a9206e5b45498843477a6b657f2a699a2759492d5c88ee0ad35e7c0
MD5 c6d36a29455656c1bb7fc7d89b62b47a
BLAKE2b-256 1cc38ad07e5c611914ec18bf14309e24e291ea8c40a33e4d6b7a60263af8d3db

See more details on using hashes here.

File details

Details for the file qsimcirq-0.12.2.dev20220422-cp36-cp36m-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for qsimcirq-0.12.2.dev20220422-cp36-cp36m-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 00fed848870c87c4c923a2cf776fdfebd41760ef8654970a7931ebd195c2211d
MD5 0f8be6f7502766e1f916be2ae16d2b28
BLAKE2b-256 6f15e05678ca4c1ed110e555e2c630ff8d93e84e200b595d04e52fdce6c31ac0

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page