0

Trying to run this example (Submit a circuit with Qiskit to Azure Quantum) on Riggeti from Azure, with a US account, but job failed with this error on the Job management console of Azure:

Error code: QIRPreProcessingFailed
Error message: No match found for output recording set converter from outputrecordingset.v2.labeled to outputrecordingset.v1.nonlabeled

And this error in my python console when running job_monitor():

Job Status: job incurred error  

(It is working when I try IONQ or Quantinuum)

Any suggestions?

BTW - one of the main differences between running Ionq/Quantinuum to running on Rigetti is the _translate_input function. In the first two, the method is overided in the context of backend, to support non QIR circuit. In Rigetti they use the default _translate_input of AzureBackend.

Rigetti, under AzureBackend general object:

    def _translate_input(self, circuit, data_format, input_params, to_qir_kwargs={}):
    """ Translates the input values to the format expected by the AzureBackend. """
    if data_format != "qir.v1":
        target = self.name()
        raise ValueError(f"{data_format} is not a supported data format for target {target}.")
logger.info(f"Using QIR as the job's payload format.")
from qiskit_qir import to_qir_bitcode, to_qir

# Set of gates supported by QIR targets.
from qiskit_qir import SUPPORTED_INSTRUCTIONS as qir_supported_instructions

capability = input_params["targetCapability"] if "targetCapability" in input_params else "AdaptiveExecution"

if logger.isEnabledFor(logging.DEBUG):
    logger.debug(f"QIR:\n{to_qir(circuit, capability, **to_qir_kwargs)}")

# all qir payload needs to define an entryPoint and arguments:
if not "entryPoint" in input_params:
    input_params["entryPoint"] = "main"
if not "arguments" in input_params:
    input_params["arguments"] = []

# We'll transpile automatically to the supported gates in QIR unless explicitly skipped.
if not input_params.get("skipTranspile", False):
    circuit = transpile(circuit, basis_gates = qir_supported_instructions)

    # We'll only log the QIR again if we performed a transpilation.
    if logger.isEnabledFor(logging.DEBUG):
        logger.debug(f"QIR (Post-transpilation):\n{to_qir(circuit, capability, **to_qir_kwargs)}")

qir = bytes(to_qir_bitcode(circuit, capability, **to_qir_kwargs))
return (qir, data_format, input_params)

In Qunatinuum, under QuantinuumBackend:

    def _translate_input(self, circuit, data_format, input_params, to_qir_kwargs={}):
    """ Translates the input values to the format expected by the AzureBackend. """
    if input_params["targetCapability"] == "openqasm":
        return (circuit.qasm(), data_format, input_params)
    else:
        # Not using openqasm, assume qir then:
        return super()._translate_input(circuit, "qir.v1", input_params, to_qir_kwargs)

In Ionq, under IonQBackendBackend:

    def _translate_input(self, circuit, data_format, input_params, to_qir_kwargs={}):
    """ Translates the input values to the format expected by the AzureBackend. """
    if data_format == "ionq.circuit.v1":
        ionq_circ, _, _ = qiskit_circ_to_ionq_circ(circuit, gateset=self.gateset())
        input_data = {
            "gateset": self.gateset(),
            "qubits": circuit.num_qubits,
            "circuit": ionq_circ,
        }
        return (IonQ._encode_input_data(input_data), data_format, input_params)
    else:
        return super()._translate_input(circuit, data_format, input_params, to_qir_kwargs)

One more difference is content_type of run() function. Looks like in Rigetti they mistakenly took the same str as input_data_format: enter image description here

This is not the case in Quantinuum: enter image description here

Ron Cohen
  • 1,512
  • 6
  • 24

1 Answers1

2

This issue is likely because you have a pre-release versions of qiskit-qir and pyqir installed in your environment. These pre-release versions produce QIR that is not recognized by the Azure Quantum service.

The problem can be solved by uninstalling all versions of pyqir, pyqir-*, and qiskit-qir, and then installing azure-quantum[qiskit] (which will install the correct dependency versions).

cesarzc
  • 21
  • 2