ブログ

Classiqプラットフォームにおけるハードウェア認識合成

27
12月
,
2023
イスラエル・ライヘンタール

はじめに

古典的なコンピューティングでは、メモリ管理の物理的側面がソフトウェアのパフォーマンスにとって重要である。しかし、ほとんどのアルゴリズム開発者は、そのようなことを気にせず、単純なプログラミングに集中している。このような単純さが許されるのは、業界標準の最適化されたライブラリや自動化ツールが、ほとんどのユースケースで十分な負担を担ってくれるからである。したがって、量子アルゴリズム開発にも同様の恩恵が望まれる。量子コンピューターはまだ初期段階にあるが、類似の考え方を適用し始めることができる。どのように?中間計算を一時的に保存する量子補助(アンシラ)量子ビットと、メモリの物理的特性である量子ビット間の接続性を考慮することである。このブログポストでは、これらがどのように関係しているかを説明し、最適化を自動化するClassiqのプラットフォームを使ってこの関係を探っていきます。

概要 

ドミトリ・マスロフが相対位相トフォリゲートを用いてマルチ制御量子ゲートの新しい実装を提案した際、他の実装と論理レベルのメトリクスを比較することで、その方法の利点を示した。しかし、この論文では、これらのメトリクスは「量子ビットの接続パターン」を考慮していないと述べている。実際、物理空間は3次元しかなく、すべての量子ビットを有限次元空間内でスケーラブルに他の量子ビットと接続することはできない」。量子アルゴリズム設計の専門家であるマスロフは、ハードウェアが課す要件を確かに認識している。ここでは、Classiqのプラットフォームを使ってマスロフの発言を探求し、マルチ制御ゲートにおける量子ビットの接続性の影響の例を紹介する。

マルチ制御演算について簡単に説明し、Classiqライブラリの実装について説明する。次に、量子回路をゲートレベルで設計する際のハードウェアの接続性とその制約について掘り下げます。最後に、Classiqの合成エンジンがハードウェアの接続性に応じて異なる実装を選択する機能をデモする。この調整は量子回路協調設計の一例であり、ハードウェアからの低レベルの情報が論理レベルの回路設計を決定する。

マルチ制御の量子演算

多制御量子演算は、グローバー演算や算術演算などの量子アルゴリズムの構成要素となる。ここでは簡単のため、マルチ制御NOT演算(MCX)に焦点を当てる。多制御の任意の量子演算は、MCXゲートと単一制御の量子演算を使って書くことができます(簡単な練習として試してみてください)。

Maslovの実装とは別に、長年にわたって様々なMCXゲートが提案されており、文献やQiskitやTKetのようなオープンソースライブラリで見つけることができます。これらに共通するパターンは、補助量子ビットの数と回路の深さのトレードオフであり、制御された(CX)ゲート数ではありません(まれに指数関数的に精密なゲートを必要とする例もありますが(こちらを参照)、ここでは簡単のため避けます)。 

補助量子ビットとは?補助量子ビットは、量子計算における一時的なメモリストレージとして機能します。量子計算の開始時に割り当てられ、終了時に初期状態(未計算状態)に戻ります。補助量子ビットは、他の計算資源を削減するために必要な場合があります。例えば、回路の深さやCXゲート数は、特にノイズの多い量子デバイスでは、忠実度が失われるため、プログラムの品質に影響を与える。

Classiqのライブラリーは、異なる実装を組み合わせて(これは別のブログ記事に値する)、このトレードオフを利用したシリーズを構築する。合成エンジンはユーザーから与えられた制約に従って実装を選択する。 

ハードウェアの接続性

古典的なプログラムを設計するとき、私たちは通常、ソフトウェアが動作する物理的なデバイスを考慮して設計することはない。この部分は、自動化された中間最適化と低レベル最適化によって舞台裏で処理され、さらに専門家によってのみ調整される。重要な点は、プロセッサ(CPU)と異なるメモリ・デバイス間の物理的な通信によるオーバーヘッドである。オンチップ・メモリ(キャッシュ)は小さいがCPUに近く、メイン・メモリであるランダム・アクセス・メモリ(RAM)は遠い。そのため、キャッシュの利用率はプログラムの性能を決定する上で非常に重要であり、時には計算操作の回数を最小化するよりも重要な意味を持つ。この問題に取り組む例としては、行列演算のアルゴリズム実装、ループブロックやアンロールのようなコンパイルパス、スタック上とヒープ上のメモリ割り当ての検討などがある。

量子アナログは見つかるか?量子コンピューターは複雑なメモリー・アーキテクチャーのために時期尚早であるが、補助量子ビットをメモリーと見なすことができる。このアナロジーをさらに説明するには、コンパイルプロセスの一部としてのルーティングの概念について説明する必要がある。

多くの量子コンピューティング・アーキテクチャ(超伝導量子ビットなど)では、量子ビットは直接接続されていません。例えば、Classiqのプラットフォームから抽出したIBM Eagleプロセッサの接続図を以下に示す。この図は14-15個の量子ビットを垂直に積み重ね、交互に並んだ4量子ビットの層で接続しています。

ここで、論理回路ゲート(例えばCX)が、青でマークした2つのような、隣接していない2つの量子ビットの間にあるとする。ゲート操作を行うために、これらの量子ビットを結ぶ選択されたパスに沿ってSWAPゲートを導入し、情報をターゲット量子ビットにルーティングする。 

SWAPゲートの動作は高価であり、1つのSWAPゲートが3つのCXゲートを占める!従って、与えられた論理回路に対して配線ステージを最適化することは、パフォーマンスにとって非常に重要である。残念ながら、配線最適化はNP困難問題であるため、コンパイルされた回路のCXゲート数を事前に計算することはできない。いくつかの発見的な配線アルゴリズムが開発され、文献やオープンソースライブラリで入手可能である。

Classiqによるハードウェア認識合成

さて、次のような問いを立てることができます。ルーティングのために、補助量子ビットを使って収穫が減少することはあるのでしょうか?より正確には、CXゲート数を可能な限り減らすことを目的とした補助的なMCXゲートの実装があった場合、この実装は、完全に接続されていないハードウェアに対して最も最適であると考えられるでしょうか、あるいは、ルーティングのオーバーヘッドによって補助的な使用は冗長になるでしょうか?

この問いに答えるため、Classiqの合成エンジンに30制御量子ビットMCXゲートを作ってもらおう。基底ゲートをCXとUに調整し、CXゲート数を最適化します。自分で試してみてください:

  • まず、All-to-All接続を合成します。
    予想通り、エンジンは最大数の補助量子ビットでマスロフ的な実装を選択しました。その結果、回路は45個の量子ビットを必要とします:31個の機能量子ビット(30個の制御量子ビットと1個のターゲット量子ビットに分割)と14個の補助量子ビットです。 
  • 次に、50量子ビットの1次元最近傍接続パターンを持つ回路に対して同じMCXゲートを生成します。
    。結果として、論理レベル回路は42量子ビットしか使用しなくなります。実際、多くの補助回路を使用すると、量子計算を一時的に保存することで得られる利得よりもルーティングのオーバーヘッドが大きくなります。

注1:2番目のケースでは、42量子ビットは論理レベル回路を表す。ルーティングアルゴリズム適用後、量子ビット数は増加する可能性があります。ここでの重要な違いは、論理レベルの実装が変更され、Classiqを使用した場合、より良い回路が得られるということです。
注2:これは最後の言葉ではなく、今後より良い実装が見つかるかもしれません。さらに、プロセス中に適用されるゲートレベルの最適化など、他の考慮事項も最終的な回路に影響を与える可能性があります。とはいえ、この例は、補助回路を追加しすぎることによる収穫逓増の挙動を浮き彫りにしており、これはClassiqの自動合成エンジンを使って対処されますが、素朴に追跡するのは困難です。 

チャレンジとして、1次元最近傍ではなく、実際のハードウェアの接続性を使ってこの動作を再現してみてください。現在利用可能なアーキテクチャでこのような例を見つけるのは容易ではありません。それでも、特にマルチコアアーキテクチャを考慮した場合、より複雑なアーキテクチャになればなるほど、その関連性は高まるでしょう。量子ビット数とCX数のトレードオフを示す他の量子ビルディング・ブロックに心当たりはありますか?

結論

量子アルゴリズムを設計する際、ハードウェアの特性を含めて性能を考慮することは重要です。Classiqの合成エンジンを使えば、開発者は複雑なゲートレベルの最適化に取り組むのではなく、モデルのアルゴリズム構造に力を注ぐことができる。Classiqのような自動化ツールの必要性は、量子回路が商用レベルの複雑さに進化し、ハードウェアに依存したトレードオフを示す多くのビルディング・ブロックを含むようになればなるほど高まるだろう。Classiqの合成エンジンの概要については、パートIと IIを参照されたい。

最後に言っておくと、量子ビットの接続性は、性能向上のためにコード設計を利用するきっかけとなる多くの可能な制約の一つに過ぎません。例えば、より良いエラー緩和を行うために回路のCX層を調整することができます(こちらを参照)。他の使用例では、量子ビットに対する古典的制御の限界を考慮することができます。

はじめに

古典的なコンピューティングでは、メモリ管理の物理的側面がソフトウェアのパフォーマンスにとって重要である。しかし、ほとんどのアルゴリズム開発者は、そのようなことを気にせず、単純なプログラミングに集中している。このような単純さが許されるのは、業界標準の最適化されたライブラリや自動化ツールが、ほとんどのユースケースで十分な負担を担ってくれるからである。したがって、量子アルゴリズム開発にも同様の恩恵が望まれる。量子コンピューターはまだ初期段階にあるが、類似の考え方を適用し始めることができる。どのように?中間計算を一時的に保存する量子補助(アンシラ)量子ビットと、メモリの物理的特性である量子ビット間の接続性を考慮することである。このブログポストでは、これらがどのように関係しているかを説明し、最適化を自動化するClassiqのプラットフォームを使ってこの関係を探っていきます。

概要 

ドミトリ・マスロフが相対位相トフォリゲートを用いてマルチ制御量子ゲートの新しい実装を提案した際、他の実装と論理レベルのメトリクスを比較することで、その方法の利点を示した。しかし、この論文では、これらのメトリクスは「量子ビットの接続パターン」を考慮していないと述べている。実際、物理空間は3次元しかなく、すべての量子ビットを有限次元空間内でスケーラブルに他の量子ビットと接続することはできない」。量子アルゴリズム設計の専門家であるマスロフは、ハードウェアが課す要件を確かに認識している。ここでは、Classiqのプラットフォームを使ってマスロフの発言を探求し、マルチ制御ゲートにおける量子ビットの接続性の影響の例を紹介する。

マルチ制御演算について簡単に説明し、Classiqライブラリの実装について説明する。次に、量子回路をゲートレベルで設計する際のハードウェアの接続性とその制約について掘り下げます。最後に、Classiqの合成エンジンがハードウェアの接続性に応じて異なる実装を選択する機能をデモする。この調整は量子回路協調設計の一例であり、ハードウェアからの低レベルの情報が論理レベルの回路設計を決定する。

マルチ制御の量子演算

多制御量子演算は、グローバー演算や算術演算などの量子アルゴリズムの構成要素となる。ここでは簡単のため、マルチ制御NOT演算(MCX)に焦点を当てる。多制御の任意の量子演算は、MCXゲートと単一制御の量子演算を使って書くことができます(簡単な練習として試してみてください)。

Maslovの実装とは別に、長年にわたって様々なMCXゲートが提案されており、文献やQiskitやTKetのようなオープンソースライブラリで見つけることができます。これらに共通するパターンは、補助量子ビットの数と回路の深さのトレードオフであり、制御された(CX)ゲート数ではありません(まれに指数関数的に精密なゲートを必要とする例もありますが(こちらを参照)、ここでは簡単のため避けます)。 

補助量子ビットとは?補助量子ビットは、量子計算における一時的なメモリストレージとして機能します。量子計算の開始時に割り当てられ、終了時に初期状態(未計算状態)に戻ります。補助量子ビットは、他の計算資源を削減するために必要な場合があります。例えば、回路の深さやCXゲート数は、特にノイズの多い量子デバイスでは、忠実度が失われるため、プログラムの品質に影響を与える。

Classiqのライブラリーは、異なる実装を組み合わせて(これは別のブログ記事に値する)、このトレードオフを利用したシリーズを構築する。合成エンジンはユーザーから与えられた制約に従って実装を選択する。 

ハードウェアの接続性

古典的なプログラムを設計するとき、私たちは通常、ソフトウェアが動作する物理的なデバイスを考慮して設計することはない。この部分は、自動化された中間最適化と低レベル最適化によって舞台裏で処理され、さらに専門家によってのみ調整される。重要な点は、プロセッサ(CPU)と異なるメモリ・デバイス間の物理的な通信によるオーバーヘッドである。オンチップ・メモリ(キャッシュ)は小さいがCPUに近く、メイン・メモリであるランダム・アクセス・メモリ(RAM)は遠い。そのため、キャッシュの利用率はプログラムの性能を決定する上で非常に重要であり、時には計算操作の回数を最小化するよりも重要な意味を持つ。この問題に取り組む例としては、行列演算のアルゴリズム実装、ループブロックやアンロールのようなコンパイルパス、スタック上とヒープ上のメモリ割り当ての検討などがある。

量子アナログは見つかるか?量子コンピューターは複雑なメモリー・アーキテクチャーのために時期尚早であるが、補助量子ビットをメモリーと見なすことができる。このアナロジーをさらに説明するには、コンパイルプロセスの一部としてのルーティングの概念について説明する必要がある。

多くの量子コンピューティング・アーキテクチャ(超伝導量子ビットなど)では、量子ビットは直接接続されていません。例えば、Classiqのプラットフォームから抽出したIBM Eagleプロセッサの接続図を以下に示す。この図は14-15個の量子ビットを垂直に積み重ね、交互に並んだ4量子ビットの層で接続しています。

ここで、論理回路ゲート(例えばCX)が、青でマークした2つのような、隣接していない2つの量子ビットの間にあるとする。ゲート操作を行うために、これらの量子ビットを結ぶ選択されたパスに沿ってSWAPゲートを導入し、情報をターゲット量子ビットにルーティングする。 

SWAPゲートの動作は高価であり、1つのSWAPゲートが3つのCXゲートを占める!従って、与えられた論理回路に対して配線ステージを最適化することは、パフォーマンスにとって非常に重要である。残念ながら、配線最適化はNP困難問題であるため、コンパイルされた回路のCXゲート数を事前に計算することはできない。いくつかの発見的な配線アルゴリズムが開発され、文献やオープンソースライブラリで入手可能である。

Classiqによるハードウェア認識合成

さて、次のような問いを立てることができます。ルーティングのために、補助量子ビットを使って収穫が減少することはあるのでしょうか?より正確には、CXゲート数を可能な限り減らすことを目的とした補助的なMCXゲートの実装があった場合、この実装は、完全に接続されていないハードウェアに対して最も最適であると考えられるでしょうか、あるいは、ルーティングのオーバーヘッドによって補助的な使用は冗長になるでしょうか?

この問いに答えるため、Classiqの合成エンジンに30制御量子ビットMCXゲートを作ってもらおう。基底ゲートをCXとUに調整し、CXゲート数を最適化します。自分で試してみてください:

  • まず、All-to-All接続を合成します。
    予想通り、エンジンは最大数の補助量子ビットでマスロフ的な実装を選択しました。その結果、回路は45個の量子ビットを必要とします:31個の機能量子ビット(30個の制御量子ビットと1個のターゲット量子ビットに分割)と14個の補助量子ビットです。 
  • 次に、50量子ビットの1次元最近傍接続パターンを持つ回路に対して同じMCXゲートを生成します。
    。結果として、論理レベル回路は42量子ビットしか使用しなくなります。実際、多くの補助回路を使用すると、量子計算を一時的に保存することで得られる利得よりもルーティングのオーバーヘッドが大きくなります。

注1:2番目のケースでは、42量子ビットは論理レベル回路を表す。ルーティングアルゴリズム適用後、量子ビット数は増加する可能性があります。ここでの重要な違いは、論理レベルの実装が変更され、Classiqを使用した場合、より良い回路が得られるということです。
注2:これは最後の言葉ではなく、今後より良い実装が見つかるかもしれません。さらに、プロセス中に適用されるゲートレベルの最適化など、他の考慮事項も最終的な回路に影響を与える可能性があります。とはいえ、この例は、補助回路を追加しすぎることによる収穫逓増の挙動を浮き彫りにしており、これはClassiqの自動合成エンジンを使って対処されますが、素朴に追跡するのは困難です。 

チャレンジとして、1次元最近傍ではなく、実際のハードウェアの接続性を使ってこの動作を再現してみてください。現在利用可能なアーキテクチャでこのような例を見つけるのは容易ではありません。それでも、特にマルチコアアーキテクチャを考慮した場合、より複雑なアーキテクチャになればなるほど、その関連性は高まるでしょう。量子ビット数とCX数のトレードオフを示す他の量子ビルディング・ブロックに心当たりはありますか?

結論

量子アルゴリズムを設計する際、ハードウェアの特性を含めて性能を考慮することは重要です。Classiqの合成エンジンを使えば、開発者は複雑なゲートレベルの最適化に取り組むのではなく、モデルのアルゴリズム構造に力を注ぐことができる。Classiqのような自動化ツールの必要性は、量子回路が商用レベルの複雑さに進化し、ハードウェアに依存したトレードオフを示す多くのビルディング・ブロックを含むようになればなるほど高まるだろう。Classiqの合成エンジンの概要については、パートIと IIを参照されたい。

最後に言っておくと、量子ビットの接続性は、性能向上のためにコード設計を利用するきっかけとなる多くの可能な制約の一つに過ぎません。例えば、より良いエラー緩和を行うために回路のCX層を調整することができます(こちらを参照)。他の使用例では、量子ビットに対する古典的制御の限界を考慮することができます。

"キュービット・ガイのポッドキャスト "について

The Qubit Guy(弊社最高マーケティング責任者ユヴァル・ボーガー)がホストを務めるこのポッドキャストは、量子コンピューティングのオピニオンリーダーをゲストに迎え、量子コンピューティングエコシステムに影響を与えるビジネスや技術的な疑問について議論します。ゲストは、量子コンピュータのソフトウェアやアルゴリズム、量子コンピュータのハードウェア、量子コンピューティングの主要なアプリケーション、量子産業の市場調査などについて興味深い見解を提供します。

ポッドキャストへのゲスト推薦をご希望の方は、こちらまでご連絡ください。

こちらも参照

該当する項目はありません。

量子ソフトウェア開発を開始

お問い合わせ