Go to file
giangiac 0c79114899 Change name of python library if IqsMPI=ON
When IqsMPI=OFF, the name is: intelqs_py
When IqsMPI=ON , the name is: intelqs_py_mpi
2021-03-09 10:25:36 -08:00
.github Enabled readthedocs for Intel QS (#40) 2020-11-18 08:16:44 -08:00
benchmarks Change namespace from qhipster to iqs 2021-02-12 19:23:51 -08:00
cmake Update tinymatrix.hpp 2021-02-12 10:32:39 -08:00
docs Remove TODO messages at compile time 2021-02-16 12:38:02 -08:00
examples Add option MPI on/off to launcher of examples 2021-02-16 09:53:44 -08:00
include Remove TODO messages at compile time 2021-02-16 12:38:02 -08:00
interface Include class Timer and QubitRegister methods for specialization into namespace iqs 2021-02-15 19:32:30 -08:00
notebooks Remove the issues highlighted by Bandit in Python scripts 2021-02-23 18:45:54 -08:00
pybind11 Change name of python library if IqsMPI=ON 2021-03-09 10:25:36 -08:00
src Remove TODO messages at compile time 2021-02-16 12:38:02 -08:00
tutorials Remove the issues highlighted by Bandit in Python scripts 2021-02-23 18:45:54 -08:00
unit_test Remove TODO messages at compile time 2021-02-16 12:38:02 -08:00
util Change namespace from qhipster to iqs 2021-02-12 19:23:51 -08:00
.gitignore Enabled readthedocs for Intel QS (#40) 2020-11-18 08:16:44 -08:00
CHANGELOG.md Add launcher to run all examples sequentially 2021-02-15 18:38:04 -08:00
CMakeLists.txt Edit CMake build to allow for clang compiler 2021-02-16 09:28:32 -08:00
CODE_OF_CONDUCT.md Add the code of conduct instructions to the repo. 2020-03-23 16:34:26 +01:00
CONTRIBUTING.md Contribute mbu (#35) 2021-01-26 15:32:12 -08:00
Dockerfile Contribute mbu (#35) 2021-01-26 15:32:12 -08:00
Jenkinsfile Major feature updates to Intel-QS. 2019-12-12 18:15:09 -08:00
LICENSE.md Add copyright owner to license 2020-03-24 11:36:37 -07:00
README.md Minor edits to README 2021-02-16 11:22:03 -08:00
docker_build Major feature updates to Intel-QS. 2019-12-12 18:15:09 -08:00

README.md

C++ build with CMake Python build (no MPI) Published Dockerfile Quantum Science and Technology arXiv

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.

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

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

The first step is cloning the repository:

  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.

  mkdir build
  cd build
  CXX=g++ cmake -DIqsMPI=ON -DIqsUtest=ON -DIqsPython=ON -DBuildExample=ON ..
  make

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, 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.

  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 Justin Hogaboam, Gian Giacomo Guerreschi, 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