CUDA extension for Yao.jl
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
benchmarks
src
test
.gitignore
.gitlab-ci.yml
LICENSE.md
Project.toml
README.md

README.md

CuYao.jl

codecov

GPU support to Yao.jl.

We are in an early-release beta. Expect some adventures and rough edges.

Installation

In v1.0+, please type ] in the REPL to use the package mode, then type:

pkg> add Yao
pkg> add CuYao

Documentation

CuYao.jl provides only two new APIs, reg |> cu to upload a register to GPU, and cureg |> cpu to download a register to CPU.

To start, see the following example

using Yao, CuYao

cureg = rand_state(9, 1000) |> cu 
cureg |> put(9, 2=>Z)
measure!(cureg |> addbit(1) |> focus!(4,1,3)) |> relax!

Features

A List of Supported Gates

  • general U(N) gate
  • general U(1) gate
  • better X, Y, Z gate
  • better T, S gate
  • SWAP gate
  • better control gates
  • BP diff blocks

Supported Register Operations

  • measure!, measure_reset!, measure_remove!, select
  • addbit!
  • insert_qubit!
  • focus!, relax!
  • join
  • density_matrix

Other Operations

  • statistic functional diff blocks
  • expect for statistic functional

If you find an unsupported useful feature, welcome to file an issue or submit a PR.

Contribution

To contribute to this project, please open an issue first to discuss with us in case we may not accept your PR.

Author

This project is an effort of QuantumBFS, an open source organization for quantum science. All the contributors are listed in the contributors.

License

CuYao is released under the Apache 2 license.