예제 #1
0
def _(
    circuit: Circuit,
    aws_session: AwsSession,
    create_task_kwargs: Dict[str, Any],
    device_parameters: Union[dict, BraketSchemaBase],
    device_arn: str,
    *args,
    **kwargs,
) -> AwsQuantumTask:
    validate_circuit_and_shots(circuit, create_task_kwargs["shots"])

    # TODO: Update this to use `deviceCapabilities` from Amazon Braket's GetDevice operation
    # in order to decide what parameters to build.
    paradigm_parameters = GateModelParameters(qubitCount=circuit.qubit_count)
    if "ionq" in device_arn:
        device_parameters = IonqDeviceParameters(
            paradigmParameters=paradigm_parameters)
    elif "rigetti" in device_arn:
        device_parameters = RigettiDeviceParameters(
            paradigmParameters=paradigm_parameters)
    else:  # default to use simulator
        device_parameters = GateModelSimulatorDeviceParameters(
            paradigmParameters=paradigm_parameters)

    create_task_kwargs.update({
        "action": circuit.to_ir().json(),
        "deviceParameters": device_parameters.json()
    })
    task_arn = aws_session.create_quantum_task(**create_task_kwargs)
    return AwsQuantumTask(task_arn, aws_session, *args, **kwargs)
def _(
    blackbird_program: BlackbirdProgram,
    aws_session: AwsSession,
    create_task_kwargs: Dict[str, any],
    device_arn: str,
    _device_parameters: Union[dict, BraketSchemaBase],
    _disable_qubit_rewiring: bool,
    *args,
    **kwargs,
) -> AwsQuantumTask:
    create_task_kwargs.update({"action": blackbird_program.json()})
    task_arn = aws_session.create_quantum_task(**create_task_kwargs)
    return AwsQuantumTask(task_arn, aws_session, *args, **kwargs)
def _(
    circuit: Circuit,
    aws_session: AwsSession,
    create_task_kwargs: Dict[str, Any],
    device_arn: str,
    device_parameters: Union[
        dict, BraketSchemaBase],  # Not currently used for circuits
    disable_qubit_rewiring: bool,
    *args,
    **kwargs,
) -> AwsQuantumTask:
    validate_circuit_and_shots(circuit, create_task_kwargs["shots"])
    # TODO: Update this to use `deviceCapabilities` from Amazon Braket's GetDevice operation
    # in order to decide what parameters to build.
    paradigm_parameters = GateModelParameters(
        qubitCount=circuit.qubit_count,
        disableQubitRewiring=disable_qubit_rewiring)
    if "ionq" in device_arn:
        device_parameters = IonqDeviceParameters(
            paradigmParameters=paradigm_parameters)
    elif "rigetti" in device_arn:
        device_parameters = RigettiDeviceParameters(
            paradigmParameters=paradigm_parameters)
    elif "oqc" in device_arn:
        device_parameters = OqcDeviceParameters(
            paradigmParameters=paradigm_parameters)
    else:  # default to use simulator
        device_parameters = GateModelSimulatorDeviceParameters(
            paradigmParameters=paradigm_parameters)

    qubit_reference_type = QubitReferenceType.VIRTUAL

    if disable_qubit_rewiring or Instruction(
            StartVerbatimBox()) in circuit.instructions:
        qubit_reference_type = QubitReferenceType.PHYSICAL

    serialization_properties = OpenQASMSerializationProperties(
        qubit_reference_type=qubit_reference_type)

    create_task_kwargs.update({
        "action":
        circuit.to_ir(
            ir_type=IRType.OPENQASM,
            serialization_properties=serialization_properties,
        ).json(),
        "deviceParameters":
        device_parameters.json(),
    })
    task_arn = aws_session.create_quantum_task(**create_task_kwargs)
    return AwsQuantumTask(task_arn, aws_session, *args, **kwargs)
예제 #4
0
def _(
    problem: Problem,
    aws_session: AwsSession,
    create_task_kwargs: Dict[str, Any],
    device_parameters: Union[dict, DwaveDeviceParameters],
    device_arn: str,
    *args,
    **kwargs,
) -> AwsQuantumTask:
    create_task_kwargs.update({
        "action":
        problem.to_ir().json(),
        "deviceParameters":
        DwaveDeviceParameters.parse_obj(device_parameters).json(),
    })

    task_arn = aws_session.create_quantum_task(**create_task_kwargs)
    return AwsQuantumTask(task_arn, aws_session, *args, **kwargs)
def _(
    open_qasm_program: OpenQasmProgram,
    aws_session: AwsSession,
    create_task_kwargs: Dict[str, Any],
    device_arn: str,
    _device_parameters: Union[
        dict, BraketSchemaBase],  # Not currently used for OpenQasmProgram
    _disable_qubit_rewiring: bool,
    *args,
    **kwargs,
) -> AwsQuantumTask:
    if open_qasm_program.inputs is not None:
        raise ValueError(
            "OpenQASM Program inputs are only currently supported in the LocalSimulator."
        )
    create_task_kwargs.update({"action": open_qasm_program.json()})
    task_arn = aws_session.create_quantum_task(**create_task_kwargs)
    return AwsQuantumTask(task_arn, aws_session, *args, **kwargs)
예제 #6
0
def _(
    circuit: Circuit,
    aws_session: AwsSession,
    create_task_kwargs: Dict[str, Any],
    device_arn: str,
    device_parameters: Union[
        dict, BraketSchemaBase],  # Not currently used for circuits
    disable_qubit_rewiring,
    *args,
    **kwargs,
) -> AwsQuantumTask:
    validate_circuit_and_shots(circuit, create_task_kwargs["shots"])
    if circuit.qubits_frozen and not disable_qubit_rewiring:
        raise ValueError(
            "disable_qubit_rewiring must be True to run circuit with compiler directives"
        )

    # TODO: Update this to use `deviceCapabilities` from Amazon Braket's GetDevice operation
    # in order to decide what parameters to build.
    paradigm_parameters = GateModelParameters(
        qubitCount=circuit.qubit_count,
        disableQubitRewiring=disable_qubit_rewiring)
    if "ionq" in device_arn:
        device_parameters = IonqDeviceParameters(
            paradigmParameters=paradigm_parameters)
    elif "rigetti" in device_arn:
        device_parameters = RigettiDeviceParameters(
            paradigmParameters=paradigm_parameters)
    else:  # default to use simulator
        device_parameters = GateModelSimulatorDeviceParameters(
            paradigmParameters=paradigm_parameters)

    create_task_kwargs.update({
        "action": circuit.to_ir().json(),
        "deviceParameters": device_parameters.json()
    })
    task_arn = aws_session.create_quantum_task(**create_task_kwargs)
    return AwsQuantumTask(task_arn, aws_session, *args, **kwargs)
def _(
    problem: Problem,
    aws_session: AwsSession,
    create_task_kwargs: Dict[str, Any],
    device_arn: str,
    device_parameters: Union[dict, DwaveDeviceParameters,
                             DwaveAdvantageDeviceParameters,
                             Dwave2000QDeviceParameters, ],
    _,
    *args,
    **kwargs,
) -> AwsQuantumTask:
    device_params = _create_annealing_device_params(device_parameters,
                                                    device_arn)
    create_task_kwargs.update({
        "action":
        problem.to_ir().json(),
        "deviceParameters":
        device_params.json(exclude_none=True),
    })

    task_arn = aws_session.create_quantum_task(**create_task_kwargs)
    return AwsQuantumTask(task_arn, aws_session, *args, **kwargs)