1

Among the several universal gate sets, the Clifford$+T$ set seems the most important one (since it should provide fault-tolerant computing).

However, that set is logical and it differs from physical implementations, e.g. IBM processors use the gate set $\{CNOT, I, R_z, \sqrt{X}, X\}$.

Hence, my question is: how does the Qiskit framework handle the switch from a gate set, such as the Clifford$+T$, to the real one?

At this link there's an interesting possible answer. But I'd like to get a deeper understanding of the criteria Qiskit applies.

EDIT:

I'd like to input to the Qiskit transpile method a simple circuit performing a control S gate:

qc = QuantumCircuit(2)
cs = SGate().control()
qc.append(cs, [0,1])

with basis gate set $\{H, S, T, CNOT\}$, i.e.:

new_qc = transpile(qc, basis_gates=['h','s','t',cx'])

However, the method cannot complete the task.

Daniele Cuomo
  • 2,068
  • 10
  • 25

1 Answers1

2

Qiskit has a component called transpiler. One of the task of the transpiler is to convert the circuit gates into the backend basis gates. For example:

new_circuit = transpiler(circuit, backend=provider.get_backend('simulator_extended_stabilizer')

You can set your own basis with the parameter basis_gates. For example:

new_circuit = transpiler(circuit, basis_gates=['h', 'x', ...]
luciano
  • 6,084
  • 1
  • 13
  • 34