예제 #1
0
    def __init__(self):
        super().__init__()

        from qiskit import Aer

        self.IBMQ_local = Aer

        print_hl("qiskit Aer loaded.")
예제 #2
0
    def __init__(self):
        super().__init__()

        from qiskit import Aer

        self.Quantum_Inspire_local = Aer

        print_hl("qiskit Aer loaded.")
예제 #3
0
    def __init__(self):
        super().__init__()

        # load accounts
        from quantuminspire.qiskit import QI
        QI.set_authentication()
        self.Quantum_Inspire_cloud_providers = [QI]

        print_hl("Quantum Inspire cloud account loaded.")
예제 #4
0
    def execute(
        self,
        circuit: qiskit.QuantumCircuit,
        num_shots=1024,
        initial_layout=None,
        optimization_level=3,
    ):
        while optimization_level >= 0:
            try:
                experiment = qiskit.compiler.transpile(
                    circuit,
                    initial_layout=initial_layout,
                    optimization_level=optimization_level,
                    backend=self.device,
                )
                break
            except qiskit.transpiler.exceptions.TranspilerError as e:
                print_stderr("transpiler error. Lowering optimization level")
                optimization_level -= 1
                if optimization_level < 0:
                    raise e

        print_hl(circuit, color="white")
        print_hl(experiment, color="white")
        qobj = qiskit.compiler.assemble(experiment,
                                        shots=num_shots,
                                        max_credits=15,
                                        backend=self.device)

        try:
            return {
                "result": self.device.run(qobj),
                "transpiled_circuit": experiment
            }
        except QiskitError as e:
            message = e.message.rstrip("\n .")
            message = e.message.rstrip(".'")
            if message.endswith("Error code: 3458"):
                print_stderr("You don't have enough credits to run this job.")
                return {
                    "result": ThinPromise(lambda: None),
                    "transpiled_circuit": None
                }

            raise
예제 #5
0
    def execute(
        self,
        circuit: qiskit.QuantumCircuit,
        num_shots=1024,
        initial_layout=None,
        optimization_level=3,
    ):
        while optimization_level >= 0:
            try:
                experiment = qiskit.compiler.transpile(
                    circuit,
                    initial_layout=initial_layout,
                    optimization_level=optimization_level,
                    backend=self.device,
                )
                break
            except qiskit.transpiler.exceptions.TranspilerError as e:
                print_stderr("transpiler error. Lowering optimization level")
                optimization_level -= 1
                if optimization_level < 0:
                    raise e

        print_hl(circuit, color="white")
        print_hl(experiment, color="white")
        qobj = qiskit.compiler.assemble(experiment,
                                        shots=num_shots,
                                        max_credits=15,
                                        backend=self.device)

        try:
            return {
                "result": self.device.run(qobj),
                "transpiled_circuit": experiment
            }
        except ApiError as e:
            if "Please wait for those jobs to finish or cancel a job." in str(
                    e):
                print_stderr(str(e))
                return {
                    "result": ThinPromise(lambda: None),
                    "transpiled_circuit": None
                }

            raise
예제 #6
0
    def __init__(self):
        super().__init__()

        # load accounts
        from qiskit import IBMQ

        IBMQ.load_account()

        # check whether we have accounts
        providers = IBMQ.providers()
        assert len(providers) > 0, "no account loaded"

        # choose account with most backends coming up last
        providers.sort(key=lambda p: len(p.backends()))

        self.IBMQ_cloud_providers = providers

        print_hl(
            f"IBMQ cloud account{'s' if len(providers)>1 else ''} loaded: " +
            " ".join(p.credentials.group for p in providers))
예제 #7
0
    def __init__(self):
        super().__init__()

        print_hl("AWS measure local backend loaded.")
예제 #8
0
    def __init__(self):
        super().__init__()

        print_hl("AWS cloud backend loaded.")
예제 #9
0
 def execute(self, circuit, num_shots: int, **kwargs):
     print_hl(circuit, color="white")
     return {
         "result": AmazonCloudPromise(circuit, braket.aws.AwsDevice(self.address), num_shots),
         "transpiled_circuit": None,
     }
예제 #10
0
    def __init__(self):
        super().__init__()

        print_hl("AWS statevector simulator backend loaded.")