• <xmp id="om0om">
  • <table id="om0om"><noscript id="om0om"></noscript></table>
  • Simulation / Modeling / Design

    QODA の紹介: 量子古典ハイブリッド コンピューティングのためのプラットフォーム

    Reading Time: 2 minutes

    この 10 年間で、量子コンピューティングはアカデミックな研究室から主流に躍り出ました。より優れた量子コンピューターを構築するための取り組みが、スタートアップや大企業の両方で盛んに行われています。一般的な問題に量子の利點を利用できるようになるまでの道のりはまだ明確ではありませんが、今こそ価値ある量子アプリケーションを実現するために必要なツールを構築する時であることは明らかです。

    その手始めとして、量子アルゴリズムに対する理解を深める必要があります。昨年、NVIDIA は量子コンピューティングのシミュレーションを高速化するためのソフトウェア開発キット (SDK) である cuQuantum を発表しました。GPU 上で cuQuantum を使用して量子回路をシミュレーションすることにより、現在の量子プロセッシング ユニット (QPU) で達成できる性能と規模をはるかに超えたアルゴリズム研究が可能になります。これにより、量子コンピューターを最大限に活用する方法を理解するための突破口が開かれます。

    量子アルゴリズムの改良に加え、古典的な演算リソースの CPU や GPU と共に QPU を最大限に活用する必要があります。本日、NVIDIA は、この実用化を使命とする量子古典ハイブリッド コンピューティングのためのプラットフォーム、Quantum Optimized Device Architecture (QODA) を発表しました。

    量子コンピューティングが進化すると、量子コンピューターと高性能な古典コンピューターが共存するハイブリッド型のアプリケーションになります。純粋にグラフィックのために作られた GPU は、ハイパフォーマンス コンピューティング (HPC) のために不可欠なハードウェアに変化しました。これには、強力でわかりやすいプログラミングを可能にする新しいソフトウェアが必要でした。量子コンピューターが科學の実験から有用なアクセラレータへと変貌を遂げるには、新しいソフトウェアも必要です。

    この新しい時代の量子ソフトウェアは、高性能なハイブリッド演算を可能にし、より多くの科學者やイノベーターが量子コンピューターにアクセスする機會を増やすでしょう。

    図 1. NVIDIA QODA は、創薬、化學、気象、金融、ロジスティクスなど様々な分野への応用が期待される世界初の量子古典ハイブリッド コンピューティングのためのプラットフォームです。

    量子プログラミングの展望

    過去 5 年間、小規模でノイズの多い量子コンピューティング アーキテクチャを対象とした量子プログラミング アプローチが開発されてきました。この発展は、アルゴリズム開発者にとって素晴らしいことであり、標準的な量子アルゴリズムだけでなく、ハイブリッド変分アプローチも早期にプロトタイプ化できるようになりました。

    量子リソースの不足とハードウェア実裝の実用性から、これらのプログラミング アプローチのほとんどは、リモートやクラウドベースの実行モデルをサポートする純粋な Python レベルでした。

    量子アーキテクチャが改良され、アルゴリズム開発者が既存の古典的なヘテロジニアス コンピューティングの真の量子加速を考慮するようになると、疑問が沸いてきます。従來の HPC において、どのように量子コプロセシングをサポートすべきでしょうか?

    NVIDIA は、HPC プログラミング モデル、ヘテロジニアス コンパイラ プラットフォーム、1 つまたは多數の NVIDIA GPU を使用して従來の科學計算ワークフローを加速する高水準なアプリケーション ライブラリの開発における真のパイオニアです。

    私たちは、量子コンピューティングをヘテロジニアス HPC システム アーキテクチャのもう 1 つの要素として捉え、量子コプロセシングを既存の CUDA エコシステムにシームレスに組み込むプログラミング モデルを想定しています。Python 言語レベルから始める現在のアプローチは、この點で十分ではなく、最終的に古典的な演算リソースと量子演算リソースの性能的な統合を制限することになります。

    HPC 向け QODA

    NVIDIA は、HPC における量子古典ハイブリッド演算アーキテクチャのプログラミングのためのオープンな仕様を開発しています。私たちは、QODA プログラミング モデルの仕様とそれに対応する NVQ++ コンパイラ プラットフォームを発表し、バックエンド (物理、シミュレーション) にとらわれない、シングルソースのモダンな C++ アプローチによる量子で加速されたハイパフォーマンス コンピューティングを可能にします。

    QODA は、CUDA、OpenMP、OpenACC といった既存の古典的な並列プログラミング モデルと本質的に相互運用が可能です。また、このコンパイラ実裝は、量子古典の C++ ソース コード表現を、cuQuantum 対応シミュレーション バックエンドをネイティブに対象とするバイナリ実行ファイルに落とし込みます。

    このプログラミングとコンパイルのワークフローは、ノート PC から分散型マルチノード、マルチ GPU アーキテクチャまで拡張できる GPU 処理と回路シミュレーションの標準的な相互運用性によって、ハイブリッド アルゴリズムの研究と開発を加速させる高性能なプログラミング環境を実現します。

    auto ghz = [](const int N) __qpu__ {
      qoda::qreg q(N);
      h(q[0]);
      for (auto i : qoda::irange(N-1)) {
        cnot(q[i], q[i+1]);
      }
      mz(q);
    };
    
    // Sample a GHZ state on 30 qubits
    auto counts = qoda::sample(ghz, 30);
    counts.dump();

    コード例に示すように、QODA はモダンな C++ を中心とした CUDA ライクなカーネルベースのプログラミング手法を提供します。 量子デバイス コードは、量子デバイス向けにコンパイルされ実行されることを示す__qpu__でアノテーションされたスタンドアロン関數オブジェクト、またはラムダ式として定義することができます。

    フリー関數 (CUDA カーネル アプローチ) よりも関數オブジェクトに依存することで、任意の量子カーネルを入力とする標準的な量子ライブラリ関數を効率的に構築することができます。

    これは量子カーネルのインスタンスとカーネルを評価するための任意の具體的な引數を入力とし、観測された量子ビット測定のビット列と対応する観測回數のマッピングを返す標準的なサンプリング QODA 関數 (qoda::sample(...)) の 1 つの例です。

    QODA カーネル プログラマーは、量子コンピューティングに関連した組み込み型 (qoda::qubit, qoda::qreg, qoda::spin_op など)、量子ゲート操作、C++ から継承された全ての伝統的で古典的な制御フローにアクセスすることが可能です。

    前述した言語コンパイル アプローチの興味深い點は、CUDA カーネル、OpenMP および OpenACC プラグマ、よりハイレベルの CUDA ライブラリ API 呼び出しを含む QODA コードをコンパイルできることです。この機能により、量子古典ハイブリッド アプリケーションの開発者は、量子コンピューティングと同時にマルチ GPU 処理を真に活用することができるようになります。

    將來の量子コンピューティングの用途は、データの前処理や後処理、標準的な量子コンパイル タスク、量子エラー訂正のためのシンドローム復號など、古典的な並列処理が必要になります。

    量子古典の応用をいち早く紹介

    ノイズの多い近い將來の量子コンピューティング アーキテクチャを対象にした量子古典ハイブリッド アルゴリズムとして、変分量子固有値ソルバー (VQE) があります。VQE の目的は、量子力學の変分原理を利用して、パラメーター化された狀態準備回路に対して、ハミルトニアンのような與えられた量子力學演算子の最小固有値を計算することを目的としています。

    ゲートの回転パラメーターを指定して狀態準備回路を実行し、量子力學演算子の構造によって決まる一連の測定を行って、その具體的なパラメーターにおける期待値を計算します。そして、ユーザー指定の古典的オプティマイザーを用いて、これらのパラメーターを変化させながら、最小期待値を反復的に探索します。

    一般的な VQE ライクなアルゴリズムがどのようなものかは、QODA プログラミング モデルで見ることができます。

    // Define your state prep ansatz…
    auto ansatz = [](std::vector<double> thetas) __qpu__ {
      … Use C++ control flow and quantum intrinsic ops …
    };
    
    // Define the Hamiltonian
    qoda::spin_op H = … use x, y, z to build up Hamiltonian … ;
    
    // Create a specific function optimization strategy
    int n_params = …;
    qoda::nlopt::lbfgs optimizer;
    optimizer.initial_parameters = qoda::random_vector(-1, 1, n_params);
    
    // Run the VQE algorithm with QODA
    auto [opt_val, opt_params] =
        qoda::vqe(ansatz, H, optimizer, n_params);
    printf("Optimal <H> = %lf\n", opt_val);

    必要とされる主なコンポーネントはパラメーター化された ansatz の QODA カーネル式で、コード例では std::vector<double> を取るラムダ式として示されています。

    このラムダ式の実際の本體は、手元の問題に依存しますが、C++ の標準的な制御フロー、対象範囲の量子カーネル呼び出し、量子固有操作の論理セットで、この関數を自由に構築することができます。

    次に必要な要素は、計算に必要な期待値を持つ演算子です。QODA は、これらを組み込みの spin_op 型として表現し、Pauli の x(int)y(int)z(int) 関數呼び出しでプログラム的に構築できます。

    次に、従來の関數オプティマイザーが必要です。これは QODA 言語仕様の一般的な概念で、勾配ベースまたは勾配フリーの特定の最適化方法へのサブクラス化を意味します。

    最後に、この言語では、VQE ワークフロー全體を呼び出すための標準ライブラリ関數を公開しています。これは、狀態準備 ansatz をモデル化した QODA カーネル インスタンスでパラメーター化されており、その演算子には次の値が必要です。

    • 最小固有値
    • 古典的最適化インスタンス
    • 変分パラメーターの総數

    そして、狀態準備回路の最適な固有値とそれに対応する最適なパラメーターをエンコードした構造化束縛が返されます。

    このワークフローは非常に一般的で、量子カーネル式、対象のスピン演算子、古典的な最適化ルーチンに関して最終的に汎用性のある変分アルゴリズムを開発するのに適しています。

    しかし、これは QODA プログラミング モデルの根底にある哲學を示すものでもあります。量子コード式を記述するための核となる概念を提供するため、量子古典ハイブリッド アルゴリズムの構成可能性を可能にする汎用関數の標準ライブラリの有用性を促進します。

    QODA Early Interest プログラム

    量子コンピューターは、私たちの最も重要な問題の解決に大きく貢獻することが期待されています。私たちは、HPC や AI がすでに重要な役割を果たしている分野における科學者や専門家に、量子コンピューティングを開放するとともに、現在最高の既存のソフトウェアと量子ソフトウェアを簡単に統合していただけるようにします。

    QODA は、そのためのオープン プラットフォームを提供します。NVIDIA は、量子コミュニティ全體と協力して、有用な量子コンピューティングを現実のものとすることを楽しみにしています。QODA Early Interest プログラムに応募していただくと、NVIDIA 量子コンピューティングの開発に関する最新情報を入手できます。詳細は、NVIDIA 量子コンピューティング ソリューションの記事や動畫などをご覧ください。

    翻訳に関する免責事項

    この記事は、「Introducing QODA: The Platform for Hybrid Quantum-Classical Computing」の抄訳で、お客様の利便性のために機械翻訳によって翻訳されたものです。NVIDIA では、翻訳の正確さを期すために注意を払っておりますが、翻訳の正確性については保証いたしません。翻訳された記事の內容の正確性に関して疑問が生じた場合は、原典である英語の記事を參照してください。

    +1

    Tags

    人人超碰97caoporen国产