quil-lang / quilc

The optimizing Quil compiler.
Apache License 2.0
454 stars 73 forks source link

Teach the compiler how to compile parallel programs. #759

Closed karlosz closed 2 years ago

karlosz commented 2 years ago

Using disconnected components.

Previously, we only supported allocating qubits in the program onto the single largest component, precluding parallel program compilation, regardless of whether the QPU topology supports it. Fix this and use a greedy allocation scheme allowing more classes of programs to get compiled onto QPUs with multiple connected components.

Conceptually, this is as if we combined mutliple QPUs into a "multi-core" system, and we are now scheduling quil programs to use them intelligently.

Fixes issue #74.

karlosz commented 2 years ago

Updated PR to calculate the component mapping globally, making the component mapping determined together with the global initial rewiring.

stylewarning commented 2 years ago

@karlosz is this ready for re-review?

karlosz commented 2 years ago

Yes.