As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Controle de pulso no Amazon Braket
Pulsos são os sinais analógicos que controlam os qubits em um computador quântico. Com determinados dispositivos no Amazon Braket, você pode acessar o recurso de controle de pulso para enviar circuitos usando pulsos. Você pode acessar o controle de pulso por meio do SDK do Braket, usando o OpenQASM 3.0 ou diretamente pelo Braket. APIs Primeiro, vamos apresentar alguns conceitos-chave para controle de pulso no Braket.
Nesta seção:
Quadros
Um quadro é uma abstração de software que atua tanto como um relógio dentro do programa quântico quanto como uma fase. A hora do relógio é incrementada em cada uso e em um sinal portador com estado definido por uma frequência. Ao transmitir sinais para o qubit, um quadro determina a frequência portadora do qubit, o deslocamento de fase e a hora em que o envelope da forma de onda é emitido. No Braket Pulse, a construção de quadros depende do dispositivo, da frequência e da fase. Dependendo do dispositivo, você pode escolher um quadro predefinido ou instanciar novos quadros fornecendo uma porta.
from braket.aws import AwsDevice from braket.pulse import Frame, Port # predefined frame from a device device = AwsDevice("arn:aws:braket:us-west-1::device/qpu/rigetti/Ankaa-3") drive_frame = device.frames["Transmon_5_charge_tx"] # create a custom frame readout_frame = Frame(frame_id="r0_measure", port=Port("channel_0", dt=1e-9), frequency=5e9, phase=0)
Portas
Uma porta é uma abstração de software que representa qualquer componente de hardware de entrada/saída que controla qubits. Ele ajuda os fornecedores de hardware a fornecer uma interface com a qual os usuários podem interagir para manipular e observar qubits. As portas são caracterizadas por uma única string que representa o nome do conector. Essa string também expõe um incremento mínimo de tempo que especifica com que precisão podemos definir as formas de onda.
from braket.pulse import Port Port0 = Port("channel_0", dt=1e-9)
Formas de onda
Uma forma de onda é um envelope dependente do tempo que podemos usar para emitir sinais em uma porta de saída ou capturar sinais por meio de uma porta de entrada. Você pode especificar suas formas de onda diretamente por meio de uma lista de números complexos ou usando um modelo de forma de onda para gerar uma lista do fornecedor do hardware.
from braket.pulse import ArbitraryWaveform, ConstantWaveform cst_wfm = ConstantWaveform(length=1e-7, iq=0.1) arb_wf = ArbitraryWaveform(amplitudes=np.linspace(0, 100))
O Braket Pulse fornece uma biblioteca padrão de formas de onda, incluindo uma forma de onda constante, uma forma de onda gaussiana e uma forma de onda de remoção derivada por porta adiabática (DRAG). Você pode recuperar os dados da forma de onda por meio da sample
função para desenhar a forma da onda, conforme mostrado no exemplo a seguir.
gaussian_waveform = GaussianWaveform(1e-7, 25e-9, 0.1) x = np.arange(0, gaussian_waveform.length, drive_frame.port.dt) plt.plot(x, gaussian_waveform.sample(drive_frame.port.dt))

A imagem anterior mostra as formas de onda gaussianas criadas a partir de. GaussianWaveform
Escolhemos um comprimento de pulso de 100 ns, uma largura de 25 ns e uma amplitude de 0,1 (unidades arbitrárias). As formas de onda estão centralizadas na janela de pulso. GaussianWaveform
aceita um argumento booleano zero_at_edges
(ZaE na legenda). Quando definido comoTrue
, esse argumento desloca a forma de onda gaussiana de forma que os pontos em t=0 e t= length
estejam em zero e redimensiona sua amplitude de forma que o valor máximo corresponda ao argumento. amplitude
Agora que abordamos os conceitos básicos para acesso em nível de pulso, a seguir veremos como construir um circuito usando portas e pulsos.