Science Score: 67.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
✓CITATION.cff file
Found CITATION.cff file -
✓codemeta.json file
Found codemeta.json file -
✓.zenodo.json file
Found .zenodo.json file -
✓DOI references
Found 4 DOI reference(s) in README -
✓Academic publication links
Links to: arxiv.org, iop.org -
○Academic email domains
-
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (15.7%) to scientific vocabulary
Keywords
Repository
High-performance simulator of quantum circuits
Basic Info
- Host: GitHub
- Owner: intel
- License: apache-2.0
- Language: C++
- Default Branch: master
- Homepage: https://github.com/intel/intel-qs
- Size: 17.3 MB
Statistics
- Stars: 247
- Watchers: 19
- Forks: 74
- Open Issues: 17
- Releases: 0
Topics
Metadata Files
README.md
Intel Quantum Simulator
Intel Quantum Simulator (Intel-QS), also known as qHiPSTER (The Quantum High Performance Software Testing Environment), is a simulator of quantum circuits optimized to take maximum advantage of multi-core and multi-nodes architectures. It is based on a complete representation of the qubit state, but avoids the explicit representation of gates and other quantum operations in terms of matrices. Intel-QS uses the MPI (message-passing-interface) protocol to handle communication between the distributed resources used to store and manipulate quantum states.
Temporary notice: backward compatibility
Intel-QS team is aware of the importance of backward compatibility. We do our best to assure it.
In April 2021 we adopted good-coding practices and moved a few classes and methods under
the namespace iqs. This may cause disruption in older programs. The fix is simple, add iqs::
in front of declaration of objects like QubitRegister. Other namespaces like qhipster have
been susbtituted with namespace iqs too.
In October 2022 we transferred the repository from iqusoft to intel to better assist the IQS users.
All links to the previous repository location are automatically redirected to this new location.
However, we recommend updating the URL in local clones via:
git remote set-url origin https://github.com/intel/intel-qs.
Build instructions
Intel-QS builds as a shared library which, once linked to the application program, allows to take advantage of the high-performance implementation of circuit simulations. The library can be built on a variety of different systems, from laptop to HPC server systems.
The directory structure of the repository can be found in docs/directory_structure.md.
The complete guide to the installation can be found in docs/install_guide.md.
At the end of the installation, the library object will be: /builb/lib/libiqs.so
Build Options
The following are build options in cmake:
- IqsMPI : Enables MPI
- IqsMKL : Enables MKL
- IqsPython : Enables Python wrapper
- IqsUtest : Builds unit tests
- IqsNative : Enables the latest vector instructions to be built in the build
- IqsBuildAsStatic : Builds IQS as a static library instead of a shared library
- BuildExamples : Builds the examples
- BuildInterface : Builds the QASM Interface
Requirements
The following packages are required by the installation:
- CMake tools version 3.12+
- MPICH3 library for enabling the distributed communication
- optional: MKL for distributed random number generation
- optional: PyBind11 (installed via conda, not pip) required by the Python binding of Intel-QS
- optional: GoogleTest (automatically installed if needed during the build) required by the unit tests
- optional: Eigen (library to solve eigensystems) required for simulations with realistic noise
The first step is cloning the repository:
bash
git clone https://github.com/iqusoft/intel-qs.git
cd intel-qs
Use standard GNU tools to build Intel-QS
Here we describe the basic build using the open-source GNU compiler.
For high-performance computing applications, we suggest adopting the
recommended build detailed in the installation guide.
The installation follows the out-of-source building and requires the creation of the directory build.
This directory is used to collect all the files generated during the installation process.
bash
mkdir build
cd build
CXX=g++ cmake -DIqsMPI=ON -DIqsUtest=ON -DIqsPython=ON -DIqsNoise=OFF -DBuildExamples=ON ..
make -j10
The install is customizable and, above, we have chosen to use MPI, compile the
unit tests (based on GoogleTest framework),
create a Python library via PyBind11,
not include the possibility of simulating noisiy gates as quantum channels
(feature that would need library Eigen),
and compile a set of C++ examples.
To re-build Intel-QS with different settings or options, we recommend to delete all content of the
build directory and then restart from the CMake command.
Docker: build image and run/execute container
Dockerfile includes the instructions to build the docker image of an Ubuntu machine
with Intel-QS already installed. The image can be 'run' to create a container.
The container can be 'executed' to login into the machine.
bash
docker build -t qhipster .
docker run -d -t qhipster
docker ps
docker exec -itd <container_id> /bin/bash
If Docker is used on a Windows host machine, the last line should be substituted by:
winpty docker exec -it <container_id> //bin/bash.
More detailed instructions can be found in intel-qs/docs/docker_guide.md, together with instructions to launch a Jupyter notebook from within the container.
Getting started with Intel-QS
The simplest way of familiarize with the Intel Quantum Simulator is by exploring
the tutorials provided in the directory tutorials/.
In particular, the code tutorials/get_started_with_IQS.cpp provides step-by-step
description of the main commands to:
define a qubit register object, perform quantum gates, measure one or multiple qubits.
If the Python bindings were enabled, the same learning can be performed using the iPython
notebook tutorials/get_started_with_IQS.ipynb.
How to contribute or contact us
Thanks for your interest in the project! We welcome pull requests from developers of all skill levels. If you would like to contribute to Intel-QS, please take a look to our contributing policy and also to the code of conduct. For any bug, we use GitHub issues GitHub issues. Please submit your request there.
If you have a question or want to discuss something, feel free to send an email to Gian Giacomo Guerreschi, Ryan Wu, or to Fabio Baruffa.
How to cite
When using Intel Quantum Simulator for research projects, please cite:
Gian Giacomo Guerreschi, Justin Hogaboam, Fabio Baruffa, Nicolas P. D. Sawaya Intel Quantum Simulator: A cloud-ready high-performance simulator of quantum circuits Quantum Sci. Technol. 5, 034007 (2020)
The original implementation is described here:
Mikhail Smelyanskiy, Nicolas P. D. Sawaya, Alán Aspuru-Guzik qHiPSTER: The Quantum High Performance Software Testing Environment arXiv:1601.07195
Owner
- Name: Intel Corporation
- Login: intel
- Kind: organization
- Email: webadmin@linux.intel.com
- Repositories: 1,189
- Profile: https://github.com/intel
Citation (CITATION.cff)
# YAML 1.2
---
cff-version: "1.2.0"
message: "When using Intel Quantum Simulator for research projects, please cite it as below."
title: "Intel Quantum Simulator"
abstract: "Intel Quantum Simulator (Intel-QS), also known as qHiPSTER (The Quantum High Performance Software Testing Environment), is a simulator of quantum circuits optimized to take maximum advantage of multi-core and multi-nodes architectures. It is based on a complete representation of the qubit state, but avoids the explicit representation of gates and other quantum operations in terms of matrices. Intel-QS uses the MPI (message-passing-interface) protocol to handle communication between the distributed resources used to store and manipulate quantum states."
authors:
- family-names: Guerreschi
given-names: "Gian Giacomo"
orcid: "https://orcid.org/0000-0002-5579-451X"
- family-names: Hogaboam
given-names: Justin
- family-names: Baruffa
given-names: Fabio
- family-names: Sawaya
given-names: "Nicolas P. D."
orcid: "https://orcid.org/0000-0001-8510-8480"
date-released: 2017-11-06
keywords:
- "quantum computing"
- "high performance computing"
- "cloud computing"
- "quantum circuits"
- "intel quantum simulator"
license: "Apache-2.0"
repository-code: "https://github.com/iqusoft/intel-qs"
version: "2.1.0"
preferred-citation:
type: article
authors:
- family-names: Guerreschi
given-names: "Gian Giacomo"
orcid: "https://orcid.org/0000-0002-5579-451X"
- family-names: Hogaboam
given-names: Justin
- family-names: Baruffa
given-names: Fabio
- family-names: Sawaya
given-names: "Nicolas P. D."
orcid: "https://orcid.org/0000-0001-8510-8480"
doi: "10.1088/2058-9565/ab8505"
url: "https://doi.org/10.1088/2058-9565/ab8505"
journal: "Quantum Science and Technology"
month: 7
title: "Intel Quantum Simulator: a cloud-ready high-performance simulator of quantum circuits"
issue: 3
volume: 5
year: 2020
references:
- type: article
scope: "The original implementation is described here."
authors:
- family-names: Smelyanskiy
given-names: Mikhail
orcid: "https://orcid.org/0000-0002-2433-6110"
- family-names: Sawaya
given-names: "Nicolas P. D."
orcid: "https://orcid.org/0000-0001-8510-8480"
- family-names: Aspuru-Guzik
given-names: "Alán"
orcid: "https://orcid.org/0000-0002-8277-4434"
title: "qHiPSTER: The Quantum High Performance Software Testing Environment"
abstract: "We present qHiPSTER, the Quantum High Performance Software Testing Environment. qHiPSTER is a distributed high-performance implementation of a quantum simulator on a classical computer, that can simulate general single-qubit gates and two-qubit controlled gates. We perform a number of single- and multi-node optimizations, including vectorization, multi-threading, cache blocking, as well as overlapping computation with communication. Using the TACC Stampede supercomputer, we simulate quantum circuits (“quantum software”) of up to 40 qubits. We carry out a detailed performance analysis to show that our simulator achieves both high performance and high hardware efficiency, limited only by the sustainable memory and network bandwidth of the machine."
year: 2016
month: 5
url: "https://arxiv.org/abs/1601.07195"
...
GitHub Events
Total
- Watch event: 28
- Delete event: 4
- Push event: 3
- Pull request review event: 3
- Pull request event: 9
- Fork event: 3
- Create event: 5
Last Year
- Watch event: 28
- Delete event: 4
- Push event: 3
- Pull request review event: 3
- Pull request event: 9
- Fork event: 3
- Create event: 5
Issues and Pull Requests
Last synced: 4 months ago
All Time
- Total issues: 0
- Total pull requests: 6
- Average time to close issues: N/A
- Average time to close pull requests: about 1 month
- Total issue authors: 0
- Total pull request authors: 1
- Average comments per issue: 0
- Average comments per pull request: 0.0
- Merged pull requests: 3
- Bot issues: 0
- Bot pull requests: 6
Past Year
- Issues: 0
- Pull requests: 6
- Average time to close issues: N/A
- Average time to close pull requests: about 1 month
- Issue authors: 0
- Pull request authors: 1
- Average comments per issue: 0
- Average comments per pull request: 0.0
- Merged pull requests: 3
- Bot issues: 0
- Bot pull requests: 6
Top Authors
Issue Authors
- ganeshrnair (1)
Pull Request Authors
- dependabot[bot] (14)
- ryanxw (1)
- ware (1)
- rdower (1)
- acyang (1)
- gnbaker (1)
Top Labels
Issue Labels
Pull Request Labels
Packages
- Total packages: 1
- Total downloads: unknown
- Total dependent packages: 0
- Total dependent repositories: 0
- Total versions: 1
proxy.golang.org: github.com/intel/intel-qs
- Documentation: https://pkg.go.dev/github.com/intel/intel-qs#section-documentation
- License: apache-2.0
-
Latest release: v2.0.0-beta+incompatible
published about 6 years ago
Rankings
Dependencies
- Babel ==2.9.1
- Jinja2 ==2.11.3
- MarkupSafe ==1.1.1
- Pygments ==2.7.4
- Sphinx ==3.2.1
- alabaster ==0.7.12
- async-generator ==1.10
- attrs ==20.2.0
- beautifulsoup4 ==4.9.3
- bleach ==3.3.0
- breathe ==4.23.0
- bs4 ==0.0.1
- certifi ==2020.6.20
- chardet ==3.0.4
- commonmark ==0.9.1
- decorator ==4.4.2
- defusedxml ==0.6.0
- docutils ==0.16
- entrypoints ==0.3
- exhale ==0.2.3
- idna ==2.10
- imagesize ==1.2.0
- importlib-metadata ==2.0.0
- ipython-genutils ==0.2.0
- jsonschema ==3.2.0
- jupyter-client ==6.1.7
- jupyter-core ==4.6.3
- jupyterlab-pygments ==0.1.2
- lxml ==4.6.3
- mistune ==0.8.4
- nbclient ==0.5.1
- nbconvert ==6.0.7
- nbformat ==5.0.8
- nbsphinx ==0.8.0
- nest-asyncio ==1.4.2
- packaging ==20.4
- pandocfilters ==1.4.3
- pyparsing ==2.4.7
- pyrsistent ==0.17.3
- python-dateutil ==2.8.1
- pytz ==2020.1
- pyzmq ==19.0.2
- recommonmark ==0.6.0
- requests ==2.24.0
- six ==1.15.0
- snowballstemmer ==2.0.0
- soupsieve ==2.0.1
- sphinxcontrib-applehelp ==1.0.2
- sphinxcontrib-devhelp ==1.0.2
- sphinxcontrib-htmlhelp ==1.0.3
- sphinxcontrib-jsmath ==1.0.1
- sphinxcontrib-qthelp ==1.0.3
- sphinxcontrib-serializinghtml ==1.1.4
- testpath ==0.4.4
- tornado ==6.0.4
- traitlets ==4.3.3
- urllib3 ==1.25.11
- webencodings ==0.5.1
- zipp ==3.4.0
- actions/checkout v2 composite
- actions/checkout v2 composite
- actions/checkout v2 composite
- conda-incubator/setup-miniconda v2 composite
- actions/checkout v2 composite
- conda-incubator/setup-miniconda v2 composite
- ubuntu latest build