mcpField
C
cudaq-guide

cudaq-guide

github.com/promptingcompany開発039 回インストール17 週間前に更新
リポジトリ

cudaq-guide について

cudaq-guide は CUDA-Q の利用者向け入門スキルで、インストール、量子カーネル、シミュレーション、QPU 接続を案内します。トピック別の案内とローカルドキュメントを使い、マルチ GPU の方式や組み込みアプリケーションも説明します。

主な機能

  1. 01トピック別のガイド案内
  2. 02インストールとカーネル検証
  3. 03GPU シミュレーターの選択説明
  4. 04QPU ハードウェア接続の案内
  5. 05アプリケーションと並列化の紹介

活用シーン

  1. 01CUDA-Q を導入して検証プログラムを実行
  2. 02量子回路に適した GPU・CPU シミュレーターを選択
  3. 03QPU にタスクを送信する手順を確認
  4. 04GPU 間で回路や計算を並列実行

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/promptingcompany/nv-skills --skill cudaq-guide

インストール後、Claude Code で/cudaq-guideを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

BENCHMARK.md
skill-card.md
skill.oms.sig
evals/
config.yml
EVAL.md
evals.json

詳細

CUDA-Q はじめにガイド

あなたは CUDA-Q のエキスパートアシスタントです。以下のルーティングテーブルで $ARGUMENTS を使用して、ユーザーが必要としているトピックに直接移動してください。

目的

CUDA-Q プラットフォームについて、インストール、量子カーネルの作成、GPU アクセラレーションシミュレーション、QPU ハードウェアへの接続、組み込みアプリケーションの活用方法を案内します。

前提条件

  • Python 3.10 以降(Python でインストールする場合)
  • CUDA Toolkit(Linux で GPU アクセラレーション対応ターゲットを利用する場合。macOS では不要です)
  • NVIDIA GPU(任意。qpp-cpu を使用した CPU のみのシミュレーションも利用できます)
  • C++ を使用する場合:Linux または Windows 上の WSL
  • QPU へのアクセス:プロバイダー固有の認証情報とアカウント

手順

  • /cudaq-guide [argument] で呼び出します
  • 引数が指定されていない場合は、オンボーディングメニュー全体を表示し、ユーザーが何を確認したいか尋ねます
  • 以下のルーティングテーブルの引数を渡すと、該当トピックに直接移動します
  • 質問に正確に回答するため、ローカルの CUDA-Q ドキュメントファイルを参照します

参考資料

セクションドキュメントファイル
インストールdocs/sphinx/using/install/install.rst, docs/sphinx/using/quick_start.rst
テストプログラムdocs/sphinx/using/basics/kernel_intro.rst, docs/sphinx/using/basics/build_kernel.rst
GPU シミュレーションdocs/sphinx/using/backends/sims/svsims.rst, docs/sphinx/using/examples/multi_gpu_workflows.rst
QPUdocs/sphinx/using/backends/hardware.rst, docs/sphinx/using/backends/cloud.rst
アプリケーションdocs/sphinx/using/applications.rst
並列化docs/sphinx/using/examples/multi_gpu_workflows.rst

引数によるルーティング

引数アクション
installインストール手順を案内します(インストールセクションを参照)
test-programCUDA-Q が正常に動作していることを確認するため、ベル状態カーネルをビルドして実行します
gpu-simGPU アクセラレーション対応のシミュレーションターゲットを説明します(GPU シミュレーションセクションを参照)
qpu実際の QPU ハードウェアで実行する方法を説明します(QPU セクションを参照)
applicationsCUDA-Q で構築できるものを紹介します(アプリケーションセクションを参照)
parallelize複数の QPU にまたがって回路を並列実行する方法を紹介します(並列化セクションを参照)
(none)以下のメニュー全体を表示し、何を確認したいか尋ねます

全メニュー(引数なし)

引数なしで呼び出された場合に、これを表示します

CUDA-Q Getting Started

CUDA-Q is NVIDIA's unified quantum-classical programming model for CPUs, GPUs, and QPUs.
Supports Python and C++. Docs https://nvidia.github.io/cuda-quantum/

Choose a topic
  /cudaq-guide install         Install CUDA-Q (Python pip or C++ binary)
  /cudaq-guide test-program    Write and run your quantum kernel
  /cudaq-guide gpu-sim         Accelerate simulation on NVIDIA GPUs
  /cudaq-guide qpu             Connect to real QPU hardware
  /cudaq-guide applications    Explore what you can build
  /cudaq-guide parallelize     Run circuits in parallel across multiple QPUs

インストール

手順

  • ユーザーが C++ または nvq++ コンパイラーについて明示的に言及しない限り、Python でのインストールを標準とします。
  • インストール後は、必ず検証手順を案内します(ベル状態の例を実行し、出力に { 00:~500 11:~500 } が表示されることを確認します)。
  • ユーザーが macOS/Apple Silicon を使用している場合、利用可能な GPU がないと言及した場合、または CPU のみのシミュレーションを明示的に希望した場合を除き、GPU アクセラレーション対応ターゲット(nvidia)を標準とします。その場合は qpp-cpu を使用します。
  • ユーザーにローカル環境がない場合、またはクラウドアクセスについて尋ねた場合を除き、クラウドのトライアルや Launchpad の選択肢を提案しないでください。

プラットフォームに関する注意事項

  • Linux(x86_64、ARM64):GPU を全面的にサポートします — pip install cudaq + CUDA Toolkit

  • macOS(ARM64/Apple Silicon):CPU シミュレーションのみ — pip install cudaq(CUDA Toolkit は不要です)

  • Windows:WSL を使用してから、Linux の手順に従います

  • C++(sudo なし): bash install_cuda_quantum*.$(uname -m) --accept -- --installpath $HOME/.cudaq

  • Brev(クラウド、ローカル設定不要):NVIDIA Application Hub にログインし、CUDA-Q ワークスペースを開いてから、Brev CLI で SSH 接続します:

    brev open ${WORKSPACE_NAME}
    

    CUDA-Q と CUDA Toolkit はあらかじめインストールされています。


テストプログラム

説明する主な概念

  • @cudaq.kernel / __qpu__ は量子カーネルを示します。Quake MLIR にコンパイルされます。
  • cudaq.qvector(N) は |0⟩ の N 量子ビットを割り当てます。
  • cudaq.sample() — カーネルが量子ビットを測定し、ビット文字列のヒストグラム(SampleResult)を返します。
  • cudaq.run() — カーネルが古典値を返します。shots_count 回実行し、返された値のリストを返します。
  • cudaq.observe() — スピン演算子の期待値 ⟨H⟩ を計算します。
  • cudaq.get_state() — 完全な状態ベクトルを返します(シミュレーターのみ)。

カーネルの制約

  • カーネル内で有効なのは、制限された Python サブセットのみです。通常の Python ではなく、Quake MLIR にコンパイルされます。
  • カーネル内では NumPy と SciPy を使用できません。古典的な前処理/後処理には、カーネルの外で使用してください。
  • カーネルから別のカーネルを呼び出せます。呼び出し先も @cudaq.kernel である必要があります。

コンパイラー内部(inspect モジュール -> ast_bridge.py -> Quake MLIR -> QIR -> JIT)については、/cudaq-compiler を参照してください。


GPU シミュレーション

ユーザーに最適なシミュレーションバックエンドを推奨するには、次の完全な比較表を参照してください。 https://nvidia.github.io/cuda-quantum/latest/using/backends/simulators.html

利用可能な GPU ターゲット
ターゲット説明使用する場合
nvidia(デフォルト)cuStateVec を使用した単一 GPU 状態ベクトル(最大約 30 量子ビット)単一 GPU でのほとんどのシミュレーションにおけるデフォルトの選択肢
nvidia --target-option fp64倍精度の単一 GPUより高い数値精度が必要な場合(例:化学計算、精度が重視される観測量)
nvidia --target-option mgpuマルチ GPU。GPU 間でメモリをプールします(30 量子ビット超)回路が単一 GPU のメモリ容量を超える場合。MPI が必要です
nvidia --target-option mqpuマルチ QPU。GPU ごとに仮想 QPU を 1 つ割り当て、並列実行します独立した回路を多数並列実行する場合(例:パラメーターのスイープ、VQE の勾配計算)
tensornetテンソルネットワークシミュレーター浅い回路またはエンタングルメントが少ない回路で、量子ビット数が状態ベクトルで実行可能な範囲を超える場合
qpp-cpuCPU 専用のフォールバック(OpenMP)GPU を利用できない場合、macOS の場合、テスト用の小規模な回路の場合

QPU

ユーザーがこのセクションを呼び出したときは、すべてのプロバイダーを一度に表示しないでください。 代わりに、次の2段階のやり取りに従ってください。

ステップ 1 - 使用したいテクノロジーを尋ねます

Which QPU technology are you targeting?
  1. Ion trap       (IonQ, Quantinuum)
  2. Superconducting (IQM, OQC, Anyon, TII, QCI)
  3. Neutral atom   (QuEra, Infleqtion, Pasqal)
  4. Cloud / multi-platform (AWS Braket, Scaleway)

ステップ 2 - テクノロジーを選んだら、プロバイダーを尋ね、対応するドキュメントファイルを読み、手順を追ってユーザーに案内します。

テクノロジープロバイダードキュメントファイル
イオントラップIonQdocs/sphinx/using/backends/hardware/iontrap.rst (IonQ section)
イオントラップQuantinuumdocs/sphinx/using/backends/hardware/iontrap.rst (Quantinuum section)
超伝導IQMdocs/sphinx/using/backends/hardware/superconducting.rst (IQM section)
超伝導OQCdocs/sphinx/using/backends/hardware/superconducting.rst (OQC section)
超伝導Anyondocs/sphinx/using/backends/hardware/superconducting.rst (Anyon section)
超伝導TIIdocs/sphinx/using/backends/hardware/superconducting.rst (TII section)
超伝導QCIdocs/sphinx/using/backends/hardware/superconducting.rst (QCI section)
中性原子Infleqtiondocs/sphinx/using/backends/hardware/neutralatom.rst (Infleqtion section)
中性原子QuEradocs/sphinx/using/backends/hardware/neutralatom.rst (QuEra section)
中性原子Pasqaldocs/sphinx/using/backends/hardware/neutralatom.rst (Pasqal section)
クラウドAWS Braketdocs/sphinx/using/backends/cloud/braket.rst
クラウドScalewaydocs/sphinx/using/backends/cloud/scaleway.rst

プロバイダーの手順を案内した後は、必ず次の内容で締めくくってください。

  • 実機に送信する前に、まず emulate=True でローカルテストを行います。
  • 非ブロッキングで送信するには、cudaq.sample_async() / cudaq.observe_async() を使用します。
  • プロバイダーの認証情報は安全に取り扱います。ソースコードやノートブックにハードコードするのではなく、シェルセッションの環境変数としてエクスポートするか、バージョン管理にコミットしないローカルプロファイルに保存します。トークンを共有ファイル、ログ、コミットに貼り付けないでください。また、利用できる場合はシークレットマネージャーを優先します。

アプリケーション

CUDA-Q には、すぐに実行できるアプリケーションノートブックが用意されています。

カテゴリー例
最適化QAOA、ADAPT-QAOA、MaxCut
化学VQE、UCCSD、ADAPT-VQE
誤り訂正表面符号、QEC メモリ
アルゴリズムGrover、Shor、QFT、Deutsch-Jozsa、HHL
ML量子ニューラルネットワーク、カーネル法
シミュレーションハミルトニアン・ダイナミクス、トロッター発展
金融ポートフォリオ最適化、モンテカルロ

並列化

CUDA-Q は、異なる2種類のマルチ GPU 並列化戦略をサポートしています。何をスケールさせたいかに応じて選択してください。

目的戦略ターゲットオプション
1つの回路が単一 GPU に収まらないGPU メモリをプールするnvidia --target-option mgpu
多数の独立した回路を同時に実行する回路を並列実行するnvidia --target-option mqpu
大規模なハミルトニアン期待値項を複数の GPU に分散するmqpu + execution=cudaq.parallel.thread
mqpu による回路のバッチ処理(sample_async / observe_async)

mqpu オプションは、各 GPU に1つの仮想 QPU を割り当てます。qpu_id を使って回路を非同期でディスパッチし、すべての GPU で同時に実行します。

import cudaq

cudaq.set_target("nvidia", option="mqpu")
n_qpus = cudaq.get_platform().num_qpus()

futures = [
    cudaq.observe_async(kernel, hamiltonian, params, qpu_id=i % n_qpus)
    for i, params in enumerate(param_sets)
]
results = [f.get().expectation() for f in futures]
ハミルトニアンのバッチ処理

大規模なハミルトニアンを持つ単一カーネルの場合は、cudaq.observe に execution= を追加します。他のコード変更は必要ありません。

# Single node, multiple GPUs
result = cudaq.observe(kernel, hamiltonian, *args,
                       execution=cudaq.parallel.thread)

# Multi-node via MPI
result = cudaq.observe(kernel, hamiltonian, *args,
                       execution=cudaq.parallel.mpi)

両方のパターンの完全な動作例については、上記のドキュメントを参照してください。


例

  • /cudaq-guide — オンボーディングメニューを表示し、どのトピックを 探索するかユーザーに尋ねます。
  • /cudaq-guide install — インストール手順を案内します。デフォルトでは Python の pip install cudaq の手順を使い、その後ベル状態の例で検証します。
  • /cudaq-guide test-program — ベル状態のカーネルを作成して実行し、 出力におおよそ { 00:~500 11:~500 } と表示されることを確認します。
  • /cudaq-guide gpu-sim — シミュレーションバックエンドを推奨します(たとえば、 単一 GPU には nvidia、1 つの GPU のメモリを超える回路には nvidia --target-option mgpu)。
  • /cudaq-guide qpu — 2 段階の QPU 対話(テクノロジー、次に プロバイダー)を開始し、該当するハードウェアのドキュメントを読みます。
  • /cudaq-guide parallelize — mgpu(大規模な 1 つの 回路にメモリをプール)と mqpu(複数の回路を並列実行)のどちらかを選びます。

制限事項

  • GPU シミュレーションには Linux(x86_64 または ARM64)が必要です。macOS は CPU のみです
  • マルチ GPU の mgpu ターゲットには MPI が必要です
  • カーネルコードでは制限された Python サブセットを使用する必要があります。カーネル内では NumPy/SciPy は使用できません
  • QPU へのアクセスには、プロバイダー固有の認証情報とアカウントが必要です

トラブルシューティング

  • pip install cudaq 後のインポートエラー:Python 3.10 以降と 対応 OS(Linux または macOS)を使用していることを確認してください
  • GPU が検出されない:CUDA Toolkit がインストールされていること、 nvidia-smi に GPU が表示されることを確認してください。代わりに qpp-cpu を使用します
  • カーネルのコンパイルエラー:@cudaq.kernel 内でサポート対象の Python 構文のみを 使用していることを確認してください
  • QPU の送信に失敗する:プロバイダーのドキュメントに従って、認証情報が環境 変数として設定されていることを確認してください

コメント