sequenceDiagram
box q8s Job
participant p as Program
participant fe as Q8sBackend
end
box k8s Service
participant api as HTTP API
participant be as IQMBackend
end
participant qpu as QPU
activate p
p -->> fe: new Q8sBackend
activate fe
p -->> fe: run(circuit)
fe ->> api: POST circuit
activate api
api -->> be: new IQMBackend
activate be
api -->> be: transpile(circuit, qpu)
api -->> be: run(transpiled_circuit)
be ->> qpu: transpiled_circuit
activate qpu
qpu -->> be: result
deactivate qpu
be -->> api: result
deactivate be
api -->> fe: 200 OK result
deactivate api
fe -->> p: result
deactivate fe
deactivate p
This is an experiment to explore the possibility of decoupling the compilation steps. The initial plan is to have a generic Qiskit backend that offloads the execution to a QPU proxy that handles the circuit adaptation to IQM hw:
sequenceDiagram box q8s Job participant p as Program participant fe as Q8sBackend end box k8s Service participant api as HTTP API participant be as IQMBackend end participant qpu as QPU activate p p -->> fe: new Q8sBackend activate fe p -->> fe: run(circuit) fe ->> api: POST circuit activate api api -->> be: new IQMBackend activate be api -->> be: transpile(circuit, qpu) api -->> be: run(transpiled_circuit) be ->> qpu: transpiled_circuit activate qpu qpu -->> be: result deactivate qpu be -->> api: result deactivate be api -->> fe: 200 OK result deactivate api fe -->> p: result deactivate fe deactivate p