事業項目 Work Packages
JHPC-quantum
01.
量子・HPC連携のための
システムソフトウェアの研究開発
スーパーコンピュータと量子コンピュータを効果的に連携させるシステムソフトウェアとプログラミング環境を開発します。
概要overview
量子コンピュータとスーパーコンピュータを連携させるためのシステムソフトウェアおよびプログラミング環境を開発します。スーパーコンピュータで実行中のプログラムからランタイムで量子コンピュータへ仕事を依頼するための遠隔呼び出しや、量子コンピュータとスーパーコンピュータを安全かつ効率的に利用するための認証機構付き量子計算リクエストスケジューラ、これらの間の通信ライブラリとインターフェースを開発します。また、量子コンピュータとスーパーコンピュータの上でアプリケーションを実行するためのプログラミングモデルや言語についての開発・研究を行い、それぞれのコンピュータのジョブスケジューラと連携するワークフローエンジンを開発します。さらに、量子コンピュータのためのソフトウェア開発キットのスーパーコンピュータへの移植を行い、大規模量子回路最適化などをスーパーコンピュータ上で利用可能にします。
事業内容detail
量子コンピュータはこれまでのコンピュータとは異なる原理で動作するコンピュータで、最新のスーパーコンピュータでも解くことが難しい問題を高速で解決できるようになる可能性を秘めています。量子コンピュータとスーパーコンピュータの両方を効果的に組み合わせることでより多くの種類の計算が可能になり、計算可能領域の拡大が期待されます。本項目では、この連携を実現するためのシステムソフトウェアおよびプログラミング環境の研究開発を行います。
量子コンピュータもスーパーコンピュータも、多くの利用者がさまざまなアプリケーションを実行する貴重な共用資源です。量子コンピュータとスーパーコンピュータを同時に利用するためには、どちらかのコンピュータがもう一方の仕事が終わるのを待っているような無駄な時間をなるべく少なくする必要があります。そこで我々は、効率的に両方のコンピュータを利用できるように、以下の2つを組み合わせて利用する二階層プログラミングモデルを提案しました。
(1)それぞれのコンピュータに適切な順番で仕事を実行させるためのワークフロープログラミング
(2)スーパーコンピュータから量子コンピュータに仕事を依頼するための遠隔手続き呼び出し
スーパーコンピュータと量子コンピュータの両方が複数のタスクを行い、それぞれの仕事が複雑に相互依存していて両者のタスクの切り離しが難しい場合には、(2)を利用してスーパーコンピュータと量子コンピュータを同時に利用することに近い環境を提供します。一方、スーパーコンピュータと量子コンピュータの両方を利用する場合にそれぞれのタスクが比較的独立している場合、例えば量子コンピュータで計算をし、その結果を使ってスーパーコンピュータを長時間利用するといった場合には(1)が適用されます。
(1)ワークフロープログラミングとワークフローエンジンの開発
スーパーコンピュータや量子コンピュータでは、「ジョブ」と呼ばれる形でユーザのプログラムを実行します。スーパーコンピュータや量子コンピュータには、それぞれジョブスケジューラと呼ばれるソフトウェアがあり、多数のユーザからのさまざまなジョブに対して、ユーザ間の公平性を保ちつつコンピュータ全体の利用率を上げるように制御しています。量子コンピュータとスーパーコンピュータの両方を比較的独立して利用する場合、それぞれのコンピュータにジョブを投入し、ジョブスケジューラがこれらのジョブを実行するのを待つということが、両方のコンピュータ全体の利用率を上げることに役立ちます。このように量子コンピュータのジョブの結果を利用して、スーパーコンピュータの計算を行うといった場合には、それぞれのジョブスケジューラを監視しつつ、ジョブの実行順序を制御するようなワークフローエンジンが必要になります。そこで本項目では、量子コンピュータとスーパーコンピュータを横断的に利用できるワークフローエンジンを開発します。
「量子コンピュータとスーパーコンピュータを連携させる」というと、これらのコンピュータを1つのアプリケーションから同時に利用できるようにすればいいのではないかと思うかもしれません。そのようにしてうまくいくときもありますが、下図に示したように、量子コンピュータの計算にスーパーコンピュータの結果を利用するといった場合にはスーパーコンピュータの仕事が終わるのを待つ時間が生じてしまい、量子コンピュータが何もしない無駄な時間をつくることになってしまいます。
(2)遠隔手続き呼び出しと量子計算リクエストスケジューラの開発
量子コンピュータとスーパーコンピュータを連携させるためのシステムソフトウェアに求められる機能のうち、もっとも重要なもののひとつは遠隔手続き呼び出しです。遠隔手続き呼び出しとは、通信ネットワークを介して、あるコンピュータから別のコンピュータに向けてアプリケーションの一部を分担するように依頼する機能です。このようにコンピュータから別のコンピュータへ仕事の一部を依頼することを「オフロードする」といいます。本項目では、スーパーコンピュータから量子コンピュータ、あるいは量子コンピュータのシミュレーションを行うコンピュータの両方に対して、共通APIでの遠隔手続き呼び出しを行うソフトウェアを開発します。
そこで(2)の遠隔手続き呼び出しの仕組みを作り、スーパーコンピュータから量子コンピュータへ依頼される仕事と、ユーザや(1)のワークフローの枠組みから量子コンピュータへ依頼する仕事の優先度を制御するための量子計算リクエストスケジューラを制作します。
量子計算リクエストスケジューラは、量子コンピュータをサポートするための量子コンピュータ・バックエンドと呼ばれる汎用サーバの前に位置していますが、我々の量子HPC連携プラットフォームにおいて、量子コンピュータに対するすべての仕事の依頼は、いったん量子計算リクエストスケジューラを経由します。すると量子計算リクエストスケジューラは、スーパーコンピュータから量子コンピュータに依頼された仕事を、スーパーコンピュータ以外から依頼された仕事よりも先に実行するように制御します。これは、量子コンピュータへの仕事の依頼がたくさんある場合に、スーパーコンピュータが依頼した仕事が「順番待ち」の状態になり、スーパーコンピュータ自体がアイドル状態、すなわち何もせずに時間を消費する状態になってしまうことを防ぐためです。そこでスーパーコンピュータから量子コンピュータへの依頼を最優先で実行することで、スーパーコンピュータと量子コンピュータを同時に利用することに近い環境を提供します。このような高い優先度は、スーパーコンピュータと量子コンピュータの両方で、強い関連性を持つタスクを複数実行するようなアプリケーションにのみ許されます。
量子計算リクエストスケジューラは他にもスーパーコンピュータからの仕事の依頼が正当な依頼者、つまりスーパーコンピュータと量子コンピュータの両方の利用権利を持つユーザからのものであるかどうかを確認する認証機能も持ちます。
またスーパーコンピュータから量子コンピュータへ仕事を依頼するためには、量子計算リクエストスケジューラとなんらかの方法で通信をする必要がありますが、このための通信ライブラリやインターフェースも開発します。
量子ソフトウェア開発キット(量子SDK)のスーパーコンピュータへの移植
量子コンピュータの利用には量子ソフトウェア開発キット(量子SDK)が利用されています。Qiskit、Qibo、cuQuantum 等に代表される量子SDKは、量子コンピュータ上での量子回路の実行をサポートするのみならず、量子回路のトランスパイル、量子回路の最適化、量子回路の実行結果に対するエラー訂正やエラー緩和、などのさまざまな機能を持っています。これらの機能をスーパーコンピュータに移植することで、これまでの量子コンピュータのユーザが、量子HPC連携プラットフォームを容易に利用可能になります。このために、遠隔手続き呼び出しのソフトウェアと量子SDKの連携を可能とするような拡張を行います。
さらに、これらの量子SDKの機能は量子コンピュータのqubit数が大きくなるにつれ、より多くの計算資源を必要とすることが予想されます。スーパーコンピュータを利用することで、大規模な量子回路最適化、量子回路のトランスパイル、エラー訂正やエラー緩和を可能にします。
プロジェクトメンバーproject members
理化学研究所計算科学研究センター
プロジェクトリーダー
- 辻 美和子
- 量子HPC連携プラットフォーム部門 量子HPCソフトウェア環境開発ユニット
- Mao Yikai
- 量子HPC連携プラットフォーム部門 量子HPCソフトウェア環境開発ユニット
- Vandromme Maxence
- 量子HPC連携プラットフォーム部門 量子HPCソフトウェア環境開発ユニット
- 佐藤 三久
- 量子HPC連携プラットフォーム部門
- Pornmaneerattanatri Soratouch
- 量子HPC連携プラットフォーム部門 量子HPCソフトウェア環境開発ユニット
- 中田 秀基
- 量子HPC連携プラットフォーム部門 量子HPCソフトウェア環境開発ユニット
- 平石 拓
- 量子HPC連携プラットフォーム部門 量子HPCソフトウェア環境開発ユニット
- 小野寺 民也
- 量子HPC連携プラットフォーム部門