0
$\begingroup$

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

$\endgroup$

1 Answer 1

2
$\begingroup$

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

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.