QCGPU-Rust

Open Source, High Performance & Hardware Accelerated, Quantum Computer Simulation in Rust
Getting Started | User Guide | Documentation | Algorithms
Travis-CI Crates.io
**Features:** * Uses OpenCL kernels * Runs cross platform * Simulation of arbitrary quantum algorithms * Optional simulation of decoherence * Optimized for maximally entangled states * Accelerated with GPUs * Includes Example Implementations of Grover's algorithm, the Deutsch-Jozsa algorithm, the Bernstein-Vazirani algorithm and Shors algorithm * Implements Hadamard, Pauli and phase gates, with support for arbitrary single qubit gate creation * Support for controlled gates along with the toffoli and swap gate * Support for measuring a state many times quickly ## Prerequisites: * OpenCL (Ensure that an OpenCL library is installed for your platform and that `clinfo` or some other diagnostic command will run). * Rust (install [here](https://www.rustup.rs)). Please use a nightly build. If you wish to run the benchmarks, you must also install libquantum and qiskit. * Libquantum can be installed from [source](http://libquantum.de/downloads), or from a package manager such as brew (`brew install libquantum --devel`) or apt (`sudo apt-get install libquantum-dev`). You should get the development version 1.1.1 * Qiskit can be installed through pip `pip3 install qiskit`. ## Usage First, add the crate to `cargo.toml` ```toml [dependencies] qcgpu = { git = "https://github.com/QCGPU/QCGPU-rust" } ``` Then just use the crate! ```rust extern crate qcgpu; fn main() { let mut state = qcgpu::State::new(2, 0); state.apply_gate(0, qcgpu::gates::x()); println!("Measured: {}", state.measure()); // 1 } ``` ## Initial Benchmarks Running on an amazon EC2 p3.2xlarge instance, with a 25GB General Purpose SSD (GP2) ```rust 5 Qubits Single Gate Application/GPU time: [204.39 us 214.76 us 225.98 us] 5 Qubits Single Gate Application/CPU time: [157.85 us 160.23 us 162.47 us] 25 Qubits Single Gate Application/GPU time: [103.50 ms 105.64 ms 108.39 ms] 25 Qubits Single Gate Application/CPU time: [248.81 ms 249.93 ms 250.53 ms] 5 Qubits Controlled Gate Application/GPU time: [205.55 us 209.50 us 214.34 us] 5 Qubits Controlled Gate Application/CPU time: [158.28 us 159.56 us 161.78 us] 25 Qubits Controlled Gate Application/GPU time: [106.13 ms 108.15 ms 110.50 ms] 25 Qubits Controlled Gate Application/CPU time: [246.37 ms 247.91 ms 248.89 ms] ``` ## License This software is licensed under the MIT licence (see `LICENSE.md`) Copyright (c) 2018 Adam Kelly