qcgpu

Open Source, High Performance & Hardware Accelerated, Quantum Computer Simulation in Rust

1 unstable release

Uses old Rust 2015

0.1.0 Apr 4, 2018

MIT license

37KB
730 lines

QCGPU-Rust

Open Source, High Performance & Hardware Accelerated, Quantum Computer Simulation in Rust

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

[dependencies]
qcgpu = { git = "https://github.com/QCGPU/QCGPU-rust" }

Then just use the crate!

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)

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

Dependencies

~3MB
~50K SLoC