CUDA-Q¶
Popis¶
CUDA-Q je open-source kvantová vývojová platforma, ktorá koordinuje hardvér aj softvér potrebný na spúšťanie užitočných, veľkých kvantových výpočtových aplikácií. Hybridný programovací model platformy umožňuje vykonávať výpočty na GPU, CPU a QPU zdrojoch súčasne v rámci jedného kvantového programu. CUDA-Q je „qubitovo nezávislá“ – bezproblémovo sa integruje so všetkými QPU a qubitovými modalitami a ponúka GPU-akcelerované simulácie v prípade, že nie je k dispozícii dostatočný kvantový hardvér.
Oficiálna dokumentácia¶
Viac informácií o CUDA-Q nájdete tu. Dokumentácia a návod pre používateľa sú dostupné tu.
Dostupné verzie¶
Aktuálne sú dostupné nasledujúce verzie CUDA-Q:
- Spúšťacie závislosti:
- singularity/ce-3.11.0
CUDA-Q je dostupný ako kontajner; na zostavenie alebo spustenie aplikácií použite singularity. Najprv načítajte modul singularity pomocou nasledujúceho príkazu:
module load singularity/ce-3.11.0
Kontajner sa nachádza v /storage-apps/software/containers/cuda-q/cuda-quantum_cu12-0.12.0.sif.
Používane CUDA-Q¶
Odporúčame spúšťať aplikácie CUDA-Q na GPU. Simulácie kvantových algoritmov CUDA-Q môžu na GPU dosiahnuť výrazné zrýchlenie v porovnaní s CPU.
Príklady¶
Tu sú ukážkové kódy napísané v jazykoch Python a C++.
import sys
import cudaq
print(f"Running on target {cudaq.get_target().name}")
qubit_count = int(sys.argv[1]) if 1 < len(sys.argv) else 2
@cudaq.kernel
def kernel():
qubits = cudaq.qvector(qubit_count)
h(qubits[0])
for i in range(1, qubit_count):
x.ctrl(qubits[0], qubits[i])
mz(qubits)
result = cudaq.sample(kernel)
print(result) # Example: { 11:500 00:500 }
Na spustenie príkladu vykonajte nasledujúci príkaz po pridaní singularity do vášho prostredia:
singularity exec --nv /storage-apps/software/containers/cuda-q/cuda-quantum_cu12-0.12.0.sif python3 program.py
#include <cudaq.h>
__qpu__ void kernel(int qubit_count) {
cudaq::qvector qubits(qubit_count);
h(qubits[0]);
for (auto i = 1; i < qubit_count; ++i) {
cx(qubits[0], qubits[i]);
}
mz(qubits);
}
int main(int argc, char *argv[]) {
auto qubit_count = 1 < argc ? atoi(argv[1]) : 2;
auto result = cudaq::sample(kernel, qubit_count);
result.dump(); // Example: { 11:500 00:500 }
}
Po pridaní singularity do vášho prostredia skompilujte kód:
singularity exec --nv /storage-apps/software/containers/cuda-q/cuda-quantum_cu12-0.12.0.sif nvq++ program.cpp -o program.x
Na spustenie príkladu vykonajte nasledujúci príkaz:
`bash
singularity exec --nv /storage-apps/software/containers/cuda-q/cuda-quantum_cu12-0.12.0.sif ./program.x
Viac príkladov nájdete v /storage-apps/software/cuda-q/examples/.
Nachádzajú sa tam aj Jupyter notebooky, ktoré je možné spustiť pomocou aplikácie
Jupyter Notebook - singularity cez
platformu Open OnDemand. Vo formulári
zadajte vyššie uvedenú cestu k kontajneru.