はじめに

戦略技術センター(STC)で量子回路開発環境に関する研究をしている柏渕です。今回QniGPU(キューニ ジーピーユー)に新機能を追加したので、その機能を紹介します。

QniGPUとは、GPUをバックエンドとし、32量子ビット※1までの大規模回路に対応した量子コンピュータシミュレーターです。現在、産業技術総合研究所※2の国内最大規模のスーパーコンピュータABCI上でもサービスとして提供されています(QniGPU のプレスリリース)。

現在公開されているQni(キューニ)についてはこちらの記事をご覧ください。

    ※1 n量子ビットの量子コンピュータは、2のn乗個の状態を同時に表現・並列に計算できる。32量子ビットでは約43億個。

    ※2 産業技術総合研究所(AIST)は、経済および社会の発展に資する科学技術の研究開発を行う日本最大級の公的研究機関。

    OpenQASMエクスポート機能

    QniGPUの新機能は、ブラウザ上でQniによって作成した量子回路を量子コンピュータ実機で実行可能なコードに変換するというものです。そのコードはOpenQASM(量子アセンブリ言語)と呼ばれます。

    量子コンピュータに意味のある計算をさせるためには、量子ゲート(図1)を操作しなければいけません。量子ゲートを組み合わせて量子回路を構築し、そのアルゴリズムを量子コンピュータに実行させる量子プログラミングを行う必要があります。その際、従来のコンピュータのアセンブリ言語に対応するものが必要です。量子コンピュータ用のアセンブリ言語であるOpenQASMは量子回路の記述や制御を可能にします。

    図1.量子ゲートの例.量子ビットに特定の操作を行い、量子状態を変化させる.

    今回のQniGPUの新機能であるOpenQASMエクスポート機能では、量子回路をOpenQASM3(OpenQASM3 の論文)に変換します。

    小難しい話が続きましたが、百聞は一見に如かずなので、実際にOpenQASMエクスポート機能を使う様子を説明していきます。

    1.QniGPUで量子回路を構築

    とりあえず単一量子ビットを置いてみます(図2)。

    せっかくなので量子コンピュータ特有の操作であるH(アダマール)ゲートを置きます。量子重ね合わせ状態を作る量子ゲートです。

    ちなみに重ね合わせ状態や量子ゲートなど、もっと詳しく知りたい方はQniのチュートリアルをご覧ください。

    図2.QniGPUでの操作の様子.

    2.Export to QASM

    量子回路を作成したら、行いたい計算を量子コンピュータに命令する準備をします。「Export to QASM」ボタンを押すとバックエンドの方でOpenQASM3に変換します(図3)。ブラウザにファイルがダウンロードされ、1で配置したアダマールゲートに対応するOpenQASM形式の文字列が出力されます。

    ※本記事執筆時点ではまだ量子コンピュータ実機に直接つながっていませんので、テキストファイルに出力しています。

    図3.QniGPUでのOpenQASMコード出力の様子.

    この出力されたファイルの中にあるのが、量子アセンブリ言語のOpenQASM3です。

    OPENQASM 3.0;
    include "stdgates.inc";
    qubit[2] q;
    h q[0];
    id q[0];
    id q[1];
    id q[0];
    id q[1];
    id q[0];
    id q[1];

    おわりに

    今後は産業技術総合研究所の方でABCI-Qという、量子コンピュータの実機とつながったものとQniGPUが連携する予定です。ABCI-Qが連携する量子コンピュータには、Fujitsu製の64量子ビットの超伝導方式のものと、QuEra製の256量子ビットの中性原子方式のものがあります。今後は他の方式の量子コンピュータとも連携予定です(こちらを参照)。

    また、後々QniGPUは現在公開されているQniに組み合わせる予定です。

    量子プログラミングの敷居を下げるべく、今後もQniGPUをアップデートしていきたいと思います。