QuantumBFS / Yao.jl

Extensible, Efficient Quantum Algorithm Design for Humans.

Home Page:https://yaoquantum.org

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

More efficient implementation of `two_qubit_depolarizing_channel()`

jlbosse opened this issue · comments

The implementation of two_qubit_depolarizing_channel() from #455 is not the very efficient. QuEST seems to have a more efficient implementation of that channel here.

@Roger-luo, @jlbosse: I'm taking a look at this. I think I know what the QuEST code is doing.

Great! Do you want to explain it here or, if you understand the Yao codebase well enough, open a pull request with a Yao implementation?

commented

QuEST in general has a number of noise functions. Where are we with these types of implementations in Yao?

There are a couple of standard error channels already implemented, see e.g. here. And if the channel you are interested in has unitary Kraus operators, you can use the unitary_channel() to create your own error channel.

@jlbosse @fieldofnodes: I didn't work out the QuEST implementation. It introduces extra parameters that weren't obvious. I emailed the author a few weeks ago. They haven't yet written back.

commented

@atomgardner I have thought about bringing QuEST in to Julia, then I found

  1. https://github.com/Hopery/QuEST.jl is forked from this one
  2. https://github.com/UTartu-QC/QuEST_jl

No Idea if they work still, only found them yesterday.

I am working directly with QuEST here: https://github.com/ediparquantum/MBQC

I am sure you have seen this but I thought I would paste there documentation page on Decoherence here:
https://quest-kit.github.io/QuEST/group__decoherence.html#ga65b4c0944090fae78a37ba3b94811ace

There are several custom structures used in QuEST, I think since they aim to make the library hardware agnostic it has to do a lot of behind the scenes stuff.

Most of the noise seems to be some sort of Kraus operator and some direct density matrix algebra, but I have not dived to deep into that layer of code.

If you are wrapping QuEST binary in Julia, I recommend continuing the some of the previous work bringing QuEST binary into BB first. I had an early attempt, and there is a later one as well