QuantumBFS / Yao.jl

Extensible, Efficient Quantum Algorithm Design for Humans.
https://yaoquantum.org
Other
918 stars 119 forks source link

fix the error of applying diagonal gate to a GPU register. #451

Closed GiggleLiu closed 1 year ago

GiggleLiu commented 1 year ago

Fix the following MWE

using CuYao
num_qubits = 20
psi = product_state(num_qubits, 0) |> cu
circuit = chain(num_qubits)
append!(circuit, chain(num_qubits, time_evolve(chain(put(num_qubits, 1=>Z)), 1.0, tol=1e-5, check_hermicity=false)))
psi = psi |> circuit

Before the fix

julia> psi = psi |> circuit
ERROR: GPU compilation of kernel #broadcast_kernel#17(CUDA.CuKernelContext, CUDA.CuDeviceMatrix{ComplexF64, 1}, Base.Broadcast.Broadcasted{CUDA.CuArrayStyle{2}, Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}}, typeof(*), Tuple{Base.Broadcast.Extruded{CUDA.CuDeviceMatrix{ComplexF64, 1}, Tuple{Bool, Bool}, Tuple{Int64, Int64}}, Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1}, Nothing, typeof(exp), Tuple{Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1}, Nothing, typeof(*), Tuple{ComplexF64, Base.Broadcast.Extruded{Vector{ComplexF64}, Tuple{Bool}, Tuple{Int64}}}}}}}}, Int64) failed
KernelError: passing and using non-bitstype argument

After the fix

julia> psi = psi |> circuit
ArrayReg{2, ComplexF64, CuArray...}
    active qubits: 20/20
    nlevel: 2
codecov[bot] commented 1 year ago

Codecov Report

Base: 88.31% // Head: 88.26% // Decreases project coverage by -0.04% :warning:

Coverage data is based on head (c71a3e2) compared to base (a88f5e0). Patch coverage: 100.00% of modified lines in pull request are covered.

Additional details and impacted files ```diff @@ Coverage Diff @@ ## master #451 +/- ## ========================================== - Coverage 88.31% 88.26% -0.05% ========================================== Files 76 76 Lines 4765 4765 ========================================== - Hits 4208 4206 -2 - Misses 557 559 +2 ``` | [Impacted Files](https://codecov.io/gh/QuantumBFS/Yao.jl/pull/451?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=QuantumBFS) | Coverage Δ | | |---|---|---| | [lib/YaoBlocks/src/primitive/time\_evolution.jl](https://codecov.io/gh/QuantumBFS/Yao.jl/pull/451?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=QuantumBFS#diff-bGliL1lhb0Jsb2Nrcy9zcmMvcHJpbWl0aXZlL3RpbWVfZXZvbHV0aW9uLmps) | `94.44% <100.00%> (ø)` | | | [lib/YaoBlocks/src/treeutils/load.jl](https://codecov.io/gh/QuantumBFS/Yao.jl/pull/451?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=QuantumBFS#diff-bGliL1lhb0Jsb2Nrcy9zcmMvdHJlZXV0aWxzL2xvYWQuamw=) | `80.32% <0.00%> (-1.64%)` | :arrow_down: | Help us with your feedback. Take ten seconds to tell us [how you rate us](https://about.codecov.io/nps?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=QuantumBFS). Have a feature suggestion? [Share it here.](https://app.codecov.io/gh/feedback/?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=QuantumBFS)

:umbrella: View full report at Codecov.
:loudspeaker: Do you have feedback about the report comment? Let us know in this issue.