Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
NVIDIA’s CUDA-Q es una biblioteca de software diseñada para programar algoritmos cuánticos híbridos que combinan CPUs GPUs, y unidades de procesamiento cuántico (QPUs). Proporciona un modelo de programación unificado que permite a los desarrolladores expresar instrucciones clásicas y cuánticas en un solo programa, lo que agiliza los flujos de trabajo. CUDA-Q acelera la simulación cuántica y el tiempo de ejecución de los programas con sus simuladores de CPU y GPU integrados.
Utilización CUDA-Q en Amazon Braket Hybrid Jobs ofrece un entorno informático flexible y bajo demanda. Las instancias computacionales se ejecutan solo mientras dure su carga de trabajo, lo que garantiza que solo pague por lo que utilice. Amazon Braket Hybrid Jobs también ofrece una experiencia escalable. Los usuarios pueden empezar con instancias más pequeñas para la creación de prototipos y las pruebas, y luego ampliarlas a instancias más grandes capaces de gestionar mayores cargas de trabajo para realizar experimentos completos.
El apoyo de Amazon Braket Hybrid Jobs GPUs es esencial para maximizar CUDA-Qes el potencial. GPUs aceleran significativamente las simulaciones de programas cuánticos en comparación con los simuladores basados en CPU, especialmente cuando se trabaja con circuitos con un alto número de cúbits. La paralelización se vuelve sencilla cuando se utiliza CUDA-Q en Amazon Braket Hybrid Jobs. Hybrid Jobs simplifica la distribución del muestreo de circuitos y las evaluaciones observables en varios nodos computacionales. Esta perfecta paralelización de CUDA-Q las cargas de trabajo permiten a los usuarios centrarse más en desarrollar sus cargas de trabajo que en configurar la infraestructura para experimentos a gran escala.
Para empezar, consulte la CUDA-Q ejemplo inicial
El siguiente fragmento de código es un ejemplo de cómo ejecutar un hello-world
CUDA-Q programa con Amazon Braket Hybrid Jobs.
image_uri = "<ecr-image-uri>"
@hybrid_job(device='local:nvidia/qpp-cpu', image_uri=image_uri)
def hello_quantum():
import cudaq
# define the backend
device=get_job_device_arn()
cudaq.set_target(device.split('/')[-1])
# define the Bell circuit
kernel = cudaq.make_kernel()
qubits = kernel.qalloc(2)
kernel.h(qubits[0])
kernel.cx(qubits[0], qubits[1])
# sample the Bell circuit
result = cudaq.sample(kernel, shots_count=1000)
measurement_probabilities = dict(result.items())
return measurement_probabilities
El ejemplo anterior simula un circuito Bell en un simulador de CPU. Este ejemplo se ejecuta localmente en su portátil o portátil Braket Jupyter. Debido a esta local=True
configuración, al ejecutar este script, se iniciará un contenedor en su entorno local para ejecutar el programa CUDA-Q de pruebas y depuración. Una vez finalizadas las pruebas, puede quitar la local=True
marca y ejecutar su trabajo. AWS Para obtener más información, consulte Primeros pasos con Amazon Braket Hybrid Jobs.
Si sus cargas de trabajo tienen un alto número de cúbits, una gran cantidad de circuitos o una gran cantidad de iteraciones, puede utilizar recursos informáticos de la CPU más potentes especificando la configuración. instance_config
El siguiente fragmento de código muestra cómo configurar el ajuste en el instance_config
decorador. hybrid_job
Para obtener más información sobre los tipos de instancias compatibles, consulte Configurar la instancia de trabajo híbrida para ejecutar el script. Para ver una lista de tipos de instancias, consulta Tipos de EC2 instancias de Amazon
@hybrid_job(
device="local:nvidia/qpp-cpu",
image_uri=image_uri,
instance_config=InstanceConfig(instanceType="ml.c5.2xlarge"),
)
def my_job_script():
...
Para cargas de trabajo más exigentes, puede ejecutar sus cargas de trabajo en un CUDA-Q Simulador de GPU. Para habilitar un simulador de GPU, usa el nombre nvidia
del backend. El nvidia
backend funciona como CUDA-Q Simulador de GPU. A continuación, selecciona un tipo de EC2 instancia de Amazon que admita un NVIDIA GPU. El siguiente fragmento de código muestra el decorador configurado en la GPUhybrid_job
.
@hybrid_job(
device="local:nvidia/nvidia",
image_uri=image_uri,
instance_config=InstanceConfig(instanceType="ml.p3.2xlarge"),
)
def my_job_script():
...
Amazon Braket Hybrid Jobs admite simulaciones de GPU en paralelo con CUDA-Q. Puede paralelizar la evaluación de varios observables o varios circuitos para aumentar el rendimiento de su carga de trabajo. Para paralelizar varios observables, realice los siguientes cambios en el script del algoritmo.
Configura la mgpu
opción del backend. nvidia
Esto es necesario para paralelizar los observables. La paralelización utiliza el MPI para la comunicación entre ellos GPUs, por lo que el MPI debe inicializarse antes de la ejecución y finalizarse después de la ejecución.
A continuación, especifique el modo de ejecución mediante la configuración. execution=cudaq.parallel.mpi
El siguiente fragmento de código muestra estos cambios.
cudaq.set_target("nvidia", option="mqpu")
cudaq.mpi.initialize()
result = cudaq.observe(
kernel, hamiltonian, shots_count=n_shots, execution=cudaq.parallel.mpi
)
cudaq.mpi.finalize()
En el hybrid_job
decorador, especifique un tipo de instancia que aloje varias, GPUs como se muestra en el siguiente fragmento de código.
@hybrid_job(
device="local:nvidia/nvidia-mqpu",
instance_config=InstanceConfig(instanceType="ml.p3.8xlarge", instanceCount=1),
image_uri=image_uri,
)
def parallel_observables_gpu_job(sagemaker_mpi_enabled=True):
...
El cuaderno de simulaciones paralelas
Ejecuta tus cargas de trabajo en ordenadores cuánticos
Tras completar las pruebas del simulador, puede pasar a la ejecución de experimentos en QPUs él. Simplemente cambia el objetivo a una QPU de Amazon Braket, como la IQM, IonQ, or Rigetti dispositivos. El siguiente fragmento de código ilustra cómo establecer el objetivo en IQM Garnet dispositivo. Para ver una lista de las disponibles QPUs, consulta Amazon Braket
device_arn = "arn:aws:braket:eu-north-1::device/qpu/iqm/Garnet"
cudaq.set_target("braket", machine=device_arn)
Para obtener más información sobre Amazon Braket Hybrid Jobs, consulte Trabajar con Amazon Braket Hybrid Jobs en la guía para desarrolladores. Para obtener más información CUDA-Q, consulte la CUDA-Q documentación