JuliaQuantum / QuCmp.jl

A JuliaQuantum package for simulations of quantum computers.
Other
12 stars 6 forks source link

Implement QuIDD method in the circuit state type #9

Open Roger-luo opened 8 years ago

Roger-luo commented 8 years ago

Since this could be a necessary feature in the basic algebra system, which was not in the original plan. I read about Viamontes' thesis: Efficient Quantum Circuit Simulation, and I think we may add a super type for quantum state, so multiple states encoding method could be applied in the future.

As I used multiple-dispatch a lot in the implementation, it will be easy to implement such method in future's work, we could keep this issue here in case someone (maybe myself) implement such a system for storing states in circuits or has interests in its implementation.

And I'll try to keep implementing things in the original plan first :-)

PS. will it be appropriate to implement the QuIDD and make it open source?(their QuIDD Pro is not open source)

@i2000s @amitjamadagni

And maybe different state encoding should be a part of QuBase.jl (QuArray) in the future? @acroy

i2000s commented 8 years ago

@Roger-luo I have emailed you before hand. I want to say that I have contacted the leading professors of the QuIDD project (and their book) last year, and they are no longer interested in continuing this project neither to offer a hand to us to implement it in Julia. My philosophy on implementing this type of specialized big package is we'd better establish a tight collaboration with the original authors before doing anything by ourselves; if the authors have no interest to continue and extend their own works, we don't want to waste our time to implement a not-lasting job in Julia either. But ideas can be borrowed if people like them.

More discussions on basic types are coming soon.

Roger-luo commented 8 years ago

The QuIDD method is a quite good way to reduce the memory cost in quantum circuit simulations. If we want to simulate a large amount of qubits, memory cost could be pretty large. And could be one of the main reason that limit the performance. Sparse matrices and vectors have worse performance than QuIDD, however, they are easier in implementation since a lot of BLAS libraries have pretty good accelerations for those data types. (including Julia's Base)

But, well, memories are cheap at present, so maybe this is not really an important issue at present.