(no title)
bschmitt | 6 years ago
There other compilers/transpilers out there, e.g., ScaffCC[1] and Qubiter[2]. Also inside IBM's framework you have one: Qiskit Terra[3]. You can find more in [4].
> What is very useful about the compiler is that it is retargetable.
Most, if not all, of them have this characteristic. Using Qiskit Terra you can definitely target Rigetti’s machines. You just need to provide the architecture specification, i.e., number of qubits and their coupling graph.
As a side note, one really annoying characteristic in Rigetti's quilc is the impossibility of turning off optimizations.
[1] https://github.com/epiqc/ScaffCC
[2] https://github.com/artiste-qb-net/qubiter
reikonomusha|6 years ago
Optimizations may be completely turned off with the directive PRAGMA PRESERVE_BLOCK [0]. Other optimizations can be selectively enabled and disabled with command line options or pragmas. But, as with GCC, the user does not have full control over every aspect of optimization and transformation, but rather just a set of coarse-grained controls. Otherwise, it wouldn’t be a compiler so much as a library/framework for program manipulation.
But one thing is true, quilc is intended to be fully automatic, not requiring (or even allowing) the user to list compilation “passes” or “transpilers”, which is typically what a software engineer expects when their primary concern is writing and running code. Many of the links you’ve listed are either “compilation frameworks” (like scaffcc, akin to LLVM), unitary factorizers (like qubiter, though I’m less familiar), and so on.
[0] http://docs.rigetti.com/en/stable/compiler.html
bschmitt|6 years ago
This turn off compilation itself. If you read the documentation you referred me to, you will notice that code inside the directive won't be guaranteed to be legal QPU code after compilation.
> Many of the links you’ve listed are either “compilation frameworks” (like scaffcc, akin to LLVM), unitary factorizers (like qubiter, though I’m less familiar), and so on.
I don't know what you mean by "compilation framework" nor where you are drawing the line of what is a compiler, but ScaffCC is a compiler. It is built using llvm (so it is akin to Clang, not llvm) and compiles Scaffold to QASM.