

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Menggunakan CUDA-Q dengan Amazon Braket
<a name="braket-using-cuda-q"></a>

NVIDIA's CUDA-Qadalah perpustakaan perangkat lunak yang dirancang untuk pemrograman algoritma kuantum hibrida yang menggabungkan CPUs, GPUs, dan unit pemrosesan Quantum (QPUs). Ini menyediakan model pemrograman terpadu, memungkinkan pengembang untuk mengekspresikan instruksi klasik dan kuantum dalam satu program, merampingkan alur kerja. CUDA-Qmempercepat simulasi program kuantum dan runtime dengan simulator CPU dan GPU bawaannya. CUDA-Qtersedia dengan instance notebook Braket asli (NBIs) dan Pekerjaan Hibrida Amazon Braket.

**Topics**
+ [CUDA-Q di NBIs](#braket-cuda-q-nbis)
+ [CUDA-Q dalam Pekerjaan Hybrid](#braket-cuda-q-hybrid-jobs)

## CUDA-Q di NBIs
<a name="braket-cuda-q-nbis"></a>

CUDA-Qdiinstal secara default di lingkungan Braket NBI. Anda dapat membuka CUDA-Q contoh notebook dengan membuka halaman peluncur Jupyter dan memilih ubin dan BraketCUDA-Q. Ini membuka contoh notebook `0_Getting_started_with_CUDA-Q.ipynb` di jendela utama. Untuk CUDA-Q contoh lainnya, lihat panel kiri di `nvidia_cuda_q/` direktori.

Anda juga dapat memverifikasi versi CUDA-Q atau paket pihak ketiga lainnya yang diinstal di NBI Anda. Misalnya, Anda dapat menjalankan perintah berikut di sel kode notebook untuk memverifikasi versiCUDA-Q, Qiskit, PennyLane, dan paket Braket yang diinstal di lingkungan.

```
%pip freeze | grep -i -e cudaq -e qiskit -e pennylane -e braket
```

## CUDA-Q dalam Pekerjaan Hybrid
<a name="braket-cuda-q-hybrid-jobs"></a>

Menggunakan CUDA-Q di [Amazon Braket Hybrid Jobs](https://docs.aws.amazon.com/braket/latest/developerguide/braket-jobs.html) menawarkan lingkungan komputasi yang fleksibel dan sesuai permintaan. Instans komputasi hanya berjalan selama durasi beban kerja Anda, memastikan Anda hanya membayar untuk apa yang Anda gunakan. Amazon Braket Hybrid Jobs juga memberikan pengalaman yang terukur. Pengguna dapat memulai dengan instance yang lebih kecil untuk pembuatan prototipe dan pengujian, kemudian meningkatkan skala ke instance yang lebih besar yang mampu menangani beban kerja yang lebih besar untuk eksperimen penuh.

Dukungan Amazon Braket Hybrid Jobs GPUs yang penting untuk memaksimalkan potensiCUDA-Q. GPUs secara signifikan mempercepat simulasi program kuantum dibandingkan dengan simulator berbasis CPU, terutama ketika bekerja dengan sirkuit hitungan qubit tinggi. Paralelisasi menjadi mudah saat menggunakan di Amazon CUDA-Q Braket Hybrid Jobs. Hybrid Jobs menyederhanakan distribusi circuit sampling dan evaluasi yang dapat diamati di beberapa node komputasi. Paralelisasi CUDA-Q beban kerja yang mulus ini memungkinkan pengguna untuk lebih fokus pada pengembangan beban kerja mereka daripada menyiapkan infrastruktur untuk eksperimen skala besar.

Untuk memulai, lihat [contoh CUDA-Q starter pada contoh](https://github.com/amazon-braket/amazon-braket-examples/blob/main/examples/nvidia_cuda_q/0_Getting_started_with_CUDA-Q.ipynb) Amazon Braket Github untuk menggunakan wadah pekerjaan CUDA-Q hybrid yang disediakan oleh Braket.

Cuplikan kode berikut adalah `hello-world` contoh untuk menjalankan CUDA-Q program dengan Amazon Braket Hybrid Jobs.

```
image_uri = retrieve_image(Framework.CUDAQ, AwsSession().region)

@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
```

Contoh di atas mensimulasikan sirkuit Bell pada simulator CPU. Contoh ini berjalan secara lokal di laptop atau notebook Braket Jupyter Anda. Karena `local=True` pengaturan, ketika Anda menjalankan skrip ini, sebuah wadah akan mulai di lingkungan lokal Anda untuk menjalankan CUDA-Q program untuk pengujian dan debugging. Setelah Anda selesai menguji, Anda dapat menghapus `local=True` bendera dan menjalankan pekerjaan Anda AWS. Untuk mempelajari lebih lanjut, lihat [Bekerja dengan Pekerjaan Hibrida Amazon Braket](braket-jobs.md).

Jika beban kerja Anda memiliki jumlah qubit yang tinggi, sejumlah besar sirkuit atau sejumlah besar iterasi, Anda dapat menggunakan sumber daya komputasi CPU yang lebih kuat dengan menentukan pengaturan. `instance_config` Cuplikan kode berikut menunjukkan cara mengkonfigurasi `instance_config` pengaturan di dekorator. `hybrid_job` Untuk informasi selengkapnya tentang jenis instans yang didukung, lihat [Mengonfigurasi instance pekerjaan hibrid Anda](braket-jobs-configure-job-instance-for-script.md). Untuk daftar jenis instans, lihat Jenis [instans Amazon EC2](https://aws.amazon.com/ec2/instance-types/).

```
@hybrid_job(
    device="local:nvidia/qpp-cpu",
    image_uri=image_uri,
    instance_config=InstanceConfig(instanceType="ml.c5.2xlarge"),
)
def my_job_script():
    ...
```

Untuk beban kerja yang lebih menuntut, Anda dapat menjalankan beban kerja Anda di simulator CUDA-Q GPU. Untuk mengaktifkan simulator GPU, gunakan nama backend. `nvidia` `nvidia`Backend beroperasi sebagai simulator CUDA-Q GPU. Selanjutnya, pilih jenis instans Amazon EC2 yang mendukung GPU. NVIDIA Cuplikan kode berikut menunjukkan dekorator yang dikonfigurasi `hybrid_job` GPU.

```
@hybrid_job(
    device="local:nvidia/nvidia",
    image_uri=image_uri,
    instance_config=InstanceConfig(instanceType="ml.g4dn.xlarge"),
)
def my_job_script():
    ...
```

Amazon Braket Hybrid Jobs dan mendukung simulasi GPU NBIs paralel dengan. CUDA-Q Anda dapat memparalelkan evaluasi beberapa yang dapat diamati atau beberapa sirkuit untuk meningkatkan kinerja beban kerja Anda. Untuk memparalelkan beberapa observable, buat perubahan berikut pada skrip algoritme Anda.

Tetapkan `mgpu` opsi `nvidia` backend. Ini diperlukan untuk memparalelkan yang dapat diamati. Paralelisasi menggunakan MPI untuk komunikasi antara GPUs, sehingga MPI perlu diinisialisasi sebelum eksekusi dan diselesaikan setelahnya.

Selanjutnya, tentukan mode eksekusi dengan pengaturan`execution=cudaq.parallel.mpi`. Cuplikan kode berikut menunjukkan perubahan ini.

```
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()
```

Dalam `hybrid_job` dekorator tentukan jenis instance yang meng-host beberapa GPUs seperti yang ditunjukkan dalam cuplikan kode berikut.

```
@hybrid_job(
    device="local:nvidia/nvidia-mqpu",
    instance_config=InstanceConfig(instanceType="ml.g4dn.12xlarge", instanceCount=1),
    image_uri=image_uri,
)
def parallel_observables_gpu_job(sagemaker_mpi_enabled=True):
    ...
```

[Notebook simulasi paralel](https://github.com/amazon-braket/amazon-braket-examples/blob/main/examples/nvidia_cuda_q/5_Multiple_GPU_simulations.ipynb) dalam contoh Amazon Braket Github end-to-end memberikan contoh yang menunjukkan cara menjalankan simulasi program kuantum pada backend GPU dan melakukan simulasi paralel yang dapat diamati dan batch sirkuit.

### Menjalankan beban kerja Anda di komputer kuantum
<a name="braket-using-cuda-q-quantum"></a>

Setelah menyelesaikan pengujian simulator, Anda dapat beralih ke menjalankan eksperimen QPUs. Cukup alihkan target ke QPU Amazon Braket, seperti,, atau IQM perangkatIonQ. Rigetti Cuplikan kode berikut menggambarkan cara mengatur target ke perangkat. IQM Garnet Untuk daftar yang tersedia QPUs, lihat konsol [Amazon Braket](https://console.aws.amazon.com/braket/home).

```
device_arn = "arn:aws:braket:eu-north-1::device/qpu/iqm/Garnet"
cudaq.set_target("braket", machine=device_arn)
```

Untuk informasi selengkapnya tentang Pekerjaan Hybrid, lihat [Bekerja dengan Pekerjaan Hibrida Amazon Braket](braket-jobs.md) di panduan pengembang. Untuk mempelajari selengkapnya tentang CUDA-Q, lihat [NVIDIA CUDA-Q dokumentasi](https://nvidia.github.io/cuda-quantum/latest/index.html).