Upload
others
View
0
Download
0
Embed Size (px)
Citation preview
FPGAによる量子コンピュータシミュレーションシステムの開発
三好 健文2020.2.8
藤井PM,鈴木TA
このプロジェクトについて
● 量子コンピュータのシミュレーションの高速化・大規模化・高精度化は嬉しい
● はたしてFPGAに専用演算器を実装したら問題が解決するか?
● 要素演算と,データ転送機構を実装○ 1コアを実装したFPGAではCPUより一桁程度遅い
● 高速化・大規模化・高精度化に向けて
背景
クエスチョン
成果
とても
今後の展望
2
複素確率振幅に対する行列計算を使う
量子コンピュータのシミュレーション
3
U U
U U
11 12
21 22
α
β
U U U U
U U U U
U U U U
U U U U
11 12
21 22
c
c
c
c
00
01
10
11
31 32
41 42
13 14
23 24
33 34
43 44
1量子ビットに対する操作
2量子ビットに対する操作
CNOT =
1 0
0 1I =
0 1
1 0X =
0 -i
i 0Y =
1 0
0 -1Z =
1 1
1 -11/√2H =
1 0 0 0
0 1 0 0
0 0 0 1
0 0 1 0
12
4x4行列
2x2行列
|0 =
|1 =
10
10
n-qubitによる 2 個の確率振幅に対する行列計算
量子コンピュータのシミュレーション
・・・
これを操作
~~ ~~
n
4
~~ ~~
U U
U U
11 12
21 22
U U
U U
11 12
21 22
U U
U U
11 12
21 22
~~ ~~ ~~ ~~
これとこれを操作
4x4行列
4x4行列
n
n2
量子コンピュータのシミュレーションに必要なメモリ
10K
10T
10M
10G
10P
5
速く・たくさんのデータを演算したい
一つのプロセッサではちょっと太刀打ちできない
複数プロセッサを並べる(扱えるメモリ量を増やす)
GPUのような並列計算に強いプロセッサを利用する
プロセッサ
プロセッサ
プロセッサ
プロセッサ
メモリ
メモリ
メモリ
メモリ
NW
6
速く・たくさんのデータを演算したい
一つのプロセッサではちょっと太刀打ちできない
複数プロセッサを並べる(扱えるメモリ量を増やす)
GPUのような並列計算に強いプロセッサを利用する
プロセッサ
プロセッサ
プロセッサ
プロセッサ
メモリ
メモリ
メモリ
メモリ
NW
7
量より質への転換が必要!!
FPGAでカスタムハードウ
ェア化するのはどうか
な?
FPGAとは?
論理回路の素 (LUT+FF)
柔軟な配線リソース
I/O
8
既存プロセッサ vs FPGA(独自プロセッサ)
既存プロセッサ FPGA(独自プロセッサ)
データ型 8bit, 16bit, 32bit, 64bitが基本IEEE 754 浮動小数点数
ユーザが自由に決められるビット数,表現形式も自由
演算器の構成 プロセッサ設計時点で決定 ユーザが自由に決められるパイプライン並列による高速化
外部I/O プロセッサ設計時点で決定 自由にI/Oと演算を接続できる
メモリ帯域 高速,キャッシュ・プリフェッチ 既存プロセッサと比べると低速
動作周波数 高速 低速(~1/10)
(手軽な)実行環境 汎用プロセッサ,GPGPU,クラウド
安価なFPGAボード,クラウド
9
PCIe
FPGAによる量子コンピュータシミュレータ既存シミュレーションソフトウェア(Qulacs)との連携
PCIe
FPGAカードFPGAカードFPGA
外部メモリ(8-64GB)演算カーネル 1-qubit演算 (2x2行列演算) 2-qubit演算 (4x4行列演算)
命令列(コマンド+カーネル行列)
量子ビットデータ(確率振幅の配列)
Kick: j L1L1: li a0, 10 # a0 = 10 li a1, 0 # a1 = 0Loop: beq a0, a1, End Q1, a1, 2, 2, 2, 3 addi a1, a1, 1 j LoopEnd: j Kick
0: 0+0i1: 1+0i2: √2+0i3: -√2+0i...
FPGAカード
10
実装の鍵
実装の鍵(1) ー 専用演算回路
実装の鍵(2) ー アドレス生成・アクセス管理
11
実装の鍵(1) 専用演算回路{1, 2}-qubit操作専用演算器をFPGA上に実装
4ns毎に2個の結果が得られる
250MHzで動作
10-qubitに対し2.23u秒
入力
出力
12
// 1-qubit操作psi[dst0] = U[0] * q0 + U[1] * q1;psi[dst1] = U[2] * q0 + U[3] * q1;
// 2-qubit操作psi[dst0] = U[0] *q0 + U[1] *q1 + U[2] *q2 + U[3] *q3;psi[dst1] = U[4] *q0 + U[5] *q1 + U[6] *q2 + U[7] *q3;psi[dst2] = U[8] *q0 + U[9] *q1 + U[10]*q2 + U[11]*q3;psi[dst3] = U[12]*q0 + U[13]*q1 + U[14]*q2 + U[15]*q3;
https://github.com/qulacs/qulacs のコードを参考に
実装の鍵(2) アドレス生成・アクセス管理専用演算器を間断なく動作させるための仕組みを実装
外部メモリ
専用演算器 1-qubit向け演算器 2-qubit向け演算器
外部メモリ
$ $
FPGA
(1) 余裕はない (2) バーストアクセス必須
アクセス範囲のパタンがターゲットqubitによって全然違う
16GBps
演算に必要なアドレスを各ポートに転送
演算に必要なデータを$から取り出し供給
重複チェック,$の空き容量チェック
演算器が必要とするアドレスを先行して計算
メモリから読み出したデータを適切な$に分配
貴重なI/O帯域を節約 13
実装結果
https://github.com/qulacs/qulacs のデータに 本実装のFPGA実装の予測値 (estimated)を追加
FPGA
使用量 VU9P(AWS-F1)
LUT 75,111(6.35%) 1,182,240
FF 127,552(5.39%) 2,364,480
DSP 684(10%) 6,840
専用演算器のリソース使用量
Tesla V100 PCIe
E5-2694 v4 @2.6GHz
14
このプロジェクトについて
● 量子コンピュータのシミュレーションの高速化・大規模化・高精度化は嬉しい
● 果たしてFPGAに専用演算器を実装したら問題が解決するか?
● 要素演算と,データ転送機構を実装○ 1コアを実装したFPGAではCPUより一桁程度遅い
● 高速化・大規模化・高精度化に向けて
背景
クエスチョン
成果
とても
今後の展望
15
既存プロセッサ vs FPGA(独自プロセッサ)
既存プロセッサ FPGA(独自プロセッサ)
データ型 8bit, 16bit, 32bit, 64bitが基本IEEE 754 浮動小数点数
ユーザが自由に決められるビット数,表現形式も自由
演算器の構成 プロセッサ設計時点で決定 ユーザが自由に決められるパイプライン並列による高速化
外部I/O プロセッサ設計時点で決定 自由にI/Oと演算を接続できる
メモリ帯域 高速,キャッシュ・プリフェッチ 既存プロセッサと比べると低速
動作周波数 高速 低速(~1/10)
(手軽な)実行環境 汎用プロセッサ,GPGPU,クラウド
安価なFPGAボード,クラウド
再掲
16
高速化への展望
演算カーネルの対象量子ビット数を増やす= 並列数の増加 or より大きい演算器を実装する
必要なメモリアドレスの算出
演算
対象量子ビット数が多くなれば負荷が大きくなるFPGAならスループットは変わらない(回路は複雑になる)
量子コンピュータシミュレーション
リソース使用量とHBMの帯域から考えると8倍くらいは高速化できる見込み
対象量子ビット数が増えるとスループットは増加する
17
高速化への展望
演算カーネルの対象量子ビット数を増やす= 並列数の増加 or より大きい演算器を実装する
必要なメモリアドレスの算出
演算
対象量子ビット数が多くなれば負荷が大きくなるFPGAならスループットは変わらない(回路は複雑になる)
量子コンピュータシミュレーション
リソース使用量とHBMの帯域から考えると8倍くらいは高速化できる見込み
対象量子ビット数が増えるとスループットは増加する
18
FPGA
Tesla V100 PCIe
E5-2694 v4 @2.6GHz
FPGA8 threads
FPGA64 threads
FPGA128 threads
大規模化への展望
FPGA間ネットワーク
・・・
FPGAボード FPGAボード FPGAボード
10Gbps - 400Gbps
メモリ
データ転送
演算処理
FPGA
メモリ
データ転送
演算処理
FPGA
メモリ
データ転送
演算処理
FPGA
データ転送と演算処理の密結合で,低レイテンシ・高スループットの演算を実現複数のFPGAボードのメモリを使って量子ビット数を増やすことができる
I/Oと演算を直結できることの活用
19
大規模化への展望
演算カーネル
演算カーネル
プロセッサ
プロセッサ
メモリ
メモリ
メモリ
メモリ
NW
専用ロジックで帯域を有効活用
リクエスト管理機構
リクエスト管理機構
リクエスト管理機構
リクエスト管理機構
リクエスト管理機構をノード間通信の帯域節約に活用することで必要なNW帯域の削減が見込める 20
高精度化への展望
FPGAならではの特殊演算器の実装 (ex. √2の演算器)
(a + 1/√2 b) + (c + 1/√2 d)= 1/√2 (√2 a + b) + 1/√2 (√2 c + d)= 1/√2 (√2 (a + c) + (b + d))
(a + 1/√2 b)(c + 1/√2 d)= 1/√2 (√2 a + b) 1/√2 (√2 c + d)= 1/2 (√2 a + b)(√2 c + d)= 1/2 ((2ac + bd) + √2 (ad + bc))
あらわれる無理数を√2に制限すると,性能変わらず高精度化が実現できる
√2 ab
√2 cd
√2 (a+c)
b+d+
√2 ab
√2 cd
√2 (ad+bc)
2ac+bd×
21
まとめ
● 量子コンピュータのシミュレーションの高速化・大規模化・高精度化は嬉しい
● 果たしてFPGAに専用演算器を実装したら問題が解決するか?
● 要素演算と,データ転送機構を実装○ 1コアを実装したFPGAではCPUより一桁程度遅い (x8でCPU同等,x64でGPU同等の見込み )
● 高速化・大規模化・高精度化に向けて
背景
クエスチョン
成果
とても
今後の展望
22
+α: リクエスト管理機構の転用
演算に必要なアドレスを各ポートに転送
演算に必要なデータをキャッシュから取り出しカーネルに供給
リクエストアドレスの重複チェック$の空き容量チェック
アプリケーションに応じて用意するモジュール(今回は量子コンピュータシミュレーションの1-qubit, 2-qubit演算用)
I/O帯域の節約
ユーザーアプリケーションロジック
外部メモリ
外部メモリから読み出したデータを適切な$に振り分ける
23
PCIe
+α: 実機との接続!?既存シミュレーションソフトウェア(Qulacs)との連携
PCIe
FPGAカードFPGAカードFPGA
実機制御用信号処理回路
命令列(コマンド+カーネル行列)
Kick: j L1L1: li a0, 10 # a0 = 10 li a1, 0 # a1 = 0Loop: beq a0, a1, End Q1, a1, 2, 2, 2, 3 addi a1, a1, 1 j LoopEnd: j Kick
0: 0+0i1: 1+0i2: √2+0i3: -√2+0i...
FPGAカード
実機へ
24
まとめ
● 量子コンピュータのシミュレーションの高速化・大規模化・高精度化は嬉しい
● 果たしてFPGAに専用演算器を実装したら問題が解決するか?
● 要素演算と,データ転送機構を実装○ 1コアを実装したFPGAではCPUより一桁程度遅い (x8でCPU同等,x64でGPU同等の見込み )
● 高速化・大規模化・高精度化に向けて
背景
クエスチョン
成果
とても
今後の展望
25