From 538b60f625075902a632d20d53b713cfe231940b Mon Sep 17 00:00:00 2001 From: Nikolay Murzin Date: Sat, 3 Feb 2024 04:24:37 +0300 Subject: [PATCH] disable fireopal validation by default --- .../Kernel/QuantumCircuitOperator/Qiskit.m | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/QuantumFramework/Kernel/QuantumCircuitOperator/Qiskit.m b/QuantumFramework/Kernel/QuantumCircuitOperator/Qiskit.m index 56bf86e6..67ef6797 100644 --- a/QuantumFramework/Kernel/QuantumCircuitOperator/Qiskit.m +++ b/QuantumFramework/Kernel/QuantumCircuitOperator/Qiskit.m @@ -317,6 +317,7 @@ elif hasattr(gate, 'num_ctrl_qubits'): {provider, params} = Replace[OptionValue["Provider"], { {name_, params : OptionsPattern[]} | name_ :> {name, Flatten[{params}]} }]; + If[provider === None && $fireOpal, provider = "IBMProvider"]; If[ MatchQ[provider, "IBMQ" | "IBMProvider"], $token = Lookup[ @@ -394,17 +395,18 @@ elif hasattr(gate, 'num_ctrl_qubits'): if isinstance(provider, IBMProvider): fireopal_credentials = make_credentials_for_ibmq(provider._account.token, 'open', 'ibm-q', 'main') else: - raise ValueError('Unsupported FireOpal provider') + raise ValueError(f'Unsupported FireOpal provider: {provider}') " ] ] -Options[qiskitApply] = Join[{"Shots" -> 1024}, Options[qiskitInitBackend]] +Options[qiskitApply] = Join[{"Shots" -> 1024, "Validate" -> False}, Options[qiskitInitBackend]] qiskitApply[qc_QiskitCircuit, qs_QuantumState, opts : OptionsPattern[]] := Enclose @ Block[{ $state = If[qs["Dimension"] == 1, Null, NumericArray @ N @ qs["Reverse"]["StateVector"]], $shots = OptionValue["Shots"], $fireOpal = TrueQ[OptionValue["FireOpal"]], + $validate = TrueQ[OptionValue["Validate"]], result }, ConfirmAssert[qs["InputDimensions"] == {}]; @@ -435,14 +437,15 @@ raise ValueError('Unsupported FireOpal provider') if <* $fireOpal *>: import fireopal qasm = circuit.qasm() - validate_results = fireopal.validate( - circuits=[qasm], credentials=fireopal_credentials, backend_name=backend.name - ) - assert validate_results['results'] == [], validate_results['results'][0]['error_message'] + if <* $validate *>: + validate_results = fireopal.validate( + circuits=[qasm], credentials=fireopal_credentials, backend_name=backend.name + ) + assert validate_results['results'] == [], validate_results['results'][0]['error_message'] result = fireopal.execute( circuits=[qasm], shot_count=<* $shots *>, - credentials=credentials, + credentials=fireopal_credentials, backend_name=backend.name, )['results'][0] result = {k[::-1]: v for k, v in result.items()}