quil-lang / qvm

The high-performance and featureful Quil simulator.
Other
415 stars 57 forks source link

Clarification on QVM capabilities #315

Open mikeevmm opened 1 year ago

mikeevmm commented 1 year ago

Hello,

I'm a PhD student writing a short survey on quantum circuit simulators. I want to include the quil qvm in my list, and so I've read up on its documentation and gone through the source code, but am still not clear on a couple of points:

  1. Is multithreading used to speed up the algebra? I see that lparallel is required in qvm.asd, but I see no mention of parallelizing methods in linear-algebra.lisp. Since I'm unfamiliar with lisp, I'm guessing that lparallel may act behind the scenes, but I'm looking for confirmation. Edit: I'd missed the use of lparallel in some of the algebra; see also issues #29 , #30. So the question is, in fact: is parallelization used for anything other than accelerating algebra for matrix-vector products above a certain size?
  2. Am I correct in understanding that the state vector or the density matrix are kept as dense arrays in memory? The abstraction over qams makes it hard to be sure of this. In other words: there's no Feynman-style path summation, correct?
  3. Is there any source of further information on what the JIT compiler does, at a technical level?

Thank you in advance, and I'd be happy to chat via another channel if this is not the right place.