Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

More efficient implementation of two_qubit_depolarizing_channel() #456

Open
jlbosse opened this issue Feb 23, 2023 · 7 comments
Open

More efficient implementation of two_qubit_depolarizing_channel() #456

jlbosse opened this issue Feb 23, 2023 · 7 comments

Comments

@jlbosse
Copy link
Contributor

jlbosse commented Feb 23, 2023

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.

@atomgardner
Copy link

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

@jlbosse
Copy link
Contributor Author

jlbosse commented May 31, 2023

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?

@fieldofnodes
Copy link

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

@jlbosse
Copy link
Contributor Author

jlbosse commented Jun 30, 2023

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.

@atomgardner
Copy link

@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.

@fieldofnodes
Copy link

@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.

@Roger-luo
Copy link
Member

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

4 participants