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